public async void NoDuplicateSoldProduct()
        {
            Guid        serial  = Guid.NewGuid();
            SoldProduct product = new SoldProduct {
                SerialNumber = serial
            };

            RaffleDbContext context = getDb("NoDupe");

            context.SoldProducts.Add(product);
            await context.SaveChangesAsync();

            RaffleEntry entry = getEntry();

            entry.SoldProduct.SerialNumber = serial;

            RaffleApiController controller = new RaffleApiController(
                context,
                new EntryValidator());

            IStatusCodeActionResult result = await controller.PostRaffleEntry(entry);

            StatusCodeResult statusResult = Assert.IsType <StatusCodeResult>(result);

            Assert.Equal((int)HttpStatusCode.OK, statusResult.StatusCode);

            Assert.Equal(1, await context.SoldProducts.CountAsync());
        }
Esempio n. 2
0
        public INdjsonWriter CreateWriter(ActionContext context, IStatusCodeActionResult result)
        {
            if (context == null)
            {
                throw new ArgumentNullException(nameof(context));
            }

            if (result == null)
            {
                throw new ArgumentNullException(nameof(result));
            }

            HttpResponse response = context.HttpContext.Response;

            response.ContentType = CONTENT_TYPE;

            if (result.StatusCode != null)
            {
                response.StatusCode = result.StatusCode.Value;
            }

            DisableResponseBuffering(context.HttpContext);

            return(new NewtonsoftNdjsonWriter(_httpResponseStreamWriterFactory.CreateWriter(response.Body, Encoding.UTF8), _options.SerializerSettings, _jsonArrayPool));
        }
Esempio n. 3
0
        public static void Equal(BotResponseCode expectedBotResponseCode, IStatusCodeActionResult result)
        {
            AssertStatusCode(result);

            // Check if the value is the expected response code.
            Assert.Equal(expectedBotResponseCode, (BotResponseCode)((OkObjectResult)result).Value);
        }
        public async Task TDeleteFile()
        {
            IActionResult result = await Controller.Delete(Filename1);

            Assert.IsAssignableFrom <IStatusCodeActionResult>(result);
            IStatusCodeActionResult statusResult = (IStatusCodeActionResult)result;

            Assert.Equal(404, statusResult.StatusCode);
            Assert.Empty(_container.StoredFiles);

            _container.StoredFiles.AddOrUpdate(Filename2, SomeDataStream,
                                               (k, v) => throw new Exception("should not be present"));
            result = await Controller.Delete(Filename2);

            Assert.IsAssignableFrom <IStatusCodeActionResult>(result);
            statusResult = (IStatusCodeActionResult)result;
            Assert.Equal(202, statusResult.StatusCode);
            Assert.Empty(_container.StoredFiles);

            _container.StoredFiles.AddOrUpdate(Filename1, SomeDataStream,
                                               (k, v) => throw new Exception("should not be present"));
            _container.StoredFiles.AddOrUpdate(Filename2, SomeDataStream,
                                               (k, v) => throw new Exception("should not be present"));
            result = await Controller.Delete(Filename2);

            Assert.IsAssignableFrom <IStatusCodeActionResult>(result);
            statusResult = (IStatusCodeActionResult)result;
            Assert.Equal(202, statusResult.StatusCode);
            Assert.Single(_container.StoredFiles.Keys, Filename1);
        }
        public INdjsonWriter CreateWriter(ActionContext context, IStatusCodeActionResult result)
        {
            if (context == null)
            {
                throw new ArgumentNullException(nameof(context));
            }

            if (result == null)
            {
                throw new ArgumentNullException(nameof(result));
            }

            HttpResponse response = context.HttpContext.Response;

            response.ContentType = CONTENT_TYPE;

            if (result.StatusCode != null)
            {
                response.StatusCode = result.StatusCode.Value;
            }

            DisableResponseBuffering(context.HttpContext);

            return(new NdjsonWriter(response.Body, _options));
        }
Esempio n. 6
0
        public override async Task OnResultExecutionAsync(ResultExecutingContext context, ResultExecutionDelegate next)
        {
            await base.OnResultExecutionAsync(context, next);

#if NETCOREAPP2_1
            bool isCacheable = IsCacheableStatusCode(context.HttpContext.Response?.StatusCode);
#else
            IStatusCodeActionResult actionResult = context.Result as IStatusCodeActionResult;

            bool isCacheable = actionResult != null
                ? IsCacheableStatusCode(actionResult.StatusCode)
                : IsCacheableStatusCode(context.HttpContext.Response?.StatusCode);
#endif
            if (!isCacheable)
            {
                return;
            }

            IServiceProvider         serviceProvider          = context.HttpContext.RequestServices;
            IApiCacheOutput          cache                    = serviceProvider.GetRequiredService(typeof(IApiCacheOutput)) as IApiCacheOutput;
            CacheKeyGeneratorFactory cacheKeyGeneratorFactory =
                serviceProvider.GetRequiredService(typeof(CacheKeyGeneratorFactory)) as CacheKeyGeneratorFactory;
            ICacheKeyGenerator cacheKeyGenerator =
                cacheKeyGeneratorFactory.GetCacheKeyGenerator(cacheKeyGeneratorType);

            string controllerName = this.controller ??
                                    (context.ActionDescriptor as ControllerActionDescriptor)?.ControllerTypeInfo.FullName;

            string baseCacheKey = cacheKeyGenerator.MakeBaseCacheKey(controllerName, this.methodName);

            await cache.RemoveStartsWithAsync(baseCacheKey);
        }
Esempio n. 7
0
        public static void Equal(string expectedResult, IStatusCodeActionResult result)
        {
            AssertStatusCode(result);

            // Check if the value is the expected result string.
            Assert.Equal(expectedResult, ((OkObjectResult)result).Value);
        }
Esempio n. 8
0
 private static void AssertStatusCode(IStatusCodeActionResult result)
 {
     // Check if it is a success statusCode.
     Assert.NotNull(result);
     Assert.NotNull(result?.StatusCode);
     Assert.Equal((int)HttpStatusCode.OK, result.StatusCode.Value);
 }
        public INdjsonWriter<T> CreateWriter<T>(ActionContext context, IStatusCodeActionResult result)
        {
            if (context is null)
            {
                throw new ArgumentNullException(nameof(context));
            }

            if (result is null)
            {
                throw new ArgumentNullException(nameof(result));
            }

            HttpResponse response = context.HttpContext.Response;

            response.ContentType = CONTENT_TYPE;

            if (result.StatusCode != null)
            {
                response.StatusCode = result.StatusCode.Value;
            }

            context.HttpContext.DisableResponseBuffering();

            return new SystemTextNdjsonWriter<T>(response.Body, _jsonSerializerOptions);
        }
        public static bool IsSuccessStatusCode(this ActionResult actionResult)
        {
            var statusCode = actionResult switch
            {
                IStatusCodeActionResult x => x.StatusCode,
                _ => (int?)null
            };

            return(statusCode.HasValue && statusCode.Value >= (int)HttpStatusCode.OK && statusCode.Value < (int)HttpStatusCode.Ambiguous);
        }
    }
 /// <summary>
 /// Initializes a new instance of the <see cref="SpecificObjectResult{T}"/> class with the message and a code from the parameters.
 /// </summary>
 /// <param name="message">The message<see cref="string"/></param>
 /// <param name="status"><see cref="IStatusCodeActionResult"/> StatusCode of which will be used</param>
 public SpecificObjectResult(string message, IStatusCodeActionResult status) : base(message)
 {
     if (status.StatusCode != 200)
     {
         StatusCode = status.StatusCode;
     }
     else
     {
         StatusCode = 500;
     }
 }
Esempio n. 12
0
        public JobController(
            IClientService clientService,
            IJobService jobService,

            IMapper mapper,
            IStatusCodeActionResult errorStatusCode)
        {
            _clientService = clientService;
            _jobService    = jobService;

            _mapper          = mapper;
            _errorStatusCode = errorStatusCode;
        }
Esempio n. 13
0
        internal bool TryMap(Exception exception, HttpContext context, out IStatusCodeActionResult actionResult)
        {
            foreach (var mapper in ExceptionMappers)
            {
                if (mapper.TryMap(exception, context, out actionResult))
                {
                    return(true);
                }
            }

            actionResult = default;
            return(false);
        }
Esempio n. 14
0
        internal bool TryMap(HttpResponse response, out IStatusCodeActionResult actionResult)
        {
            foreach (var mapper in HttpResponseMappers)
            {
                if (mapper.TryMap(response, out actionResult))
                {
                    return(true);
                }
            }

            actionResult = default;
            return(false);
        }
Esempio n. 15
0
        public int?PostPincode(string email)
        {
            // Arrange
            User mockUser = new User(email, 24.0);

            _mailService.Setup(x => x.SendMail(It.IsAny <string>(), It.IsAny <string>())).Returns(true);

            // Act
            IStatusCodeActionResult result = (IStatusCodeActionResult)_controller.PostPincode(mockUser);

            // Assert
            return(result.StatusCode);
        }
        public async void ValidatorIsUsed()
        {
            RaffleApiController controller = new RaffleApiController(
                getDb("ValidatorTest"),
                new EntryValidator());

            RaffleEntry entry = getEntry();

            IStatusCodeActionResult result = await controller.PostRaffleEntry(entry);

            StatusCodeResult statusResult = Assert.IsType <StatusCodeResult>(result);

            Assert.Equal((int)HttpStatusCode.BadRequest, statusResult.StatusCode);
        }
Esempio n. 17
0
        public int?PostLogin(string id, string email, string pincode, double carEmission)
        {
            // Arrange
            User mockUser = new User(id, email, carEmission);

            mockUser.UpdatePincode(pincode, DateTime.Now.AddDays(365));
            _userService.Setup(x => x.ValidatePincode("*****@*****.**", "1234")).Returns(mockUser);

            // Act
            IStatusCodeActionResult result = (IStatusCodeActionResult)_controller.PostLogin(mockUser);

            // Assert
            return(result.StatusCode);
        }
Esempio n. 18
0
        public int?PostRegister(string email, double kml, string fuelType)
        {
            // Arrange
            User          mockUser  = new User(email, 24);
            RegisterInput mockInput = new RegisterInput(mockUser, kml, fuelType);

            _userService.Setup(x => x.Create(mockUser)).Returns(mockUser);

            // Act
            IStatusCodeActionResult result = (IStatusCodeActionResult)_controller.PostRegister(mockInput);

            // Assert
            return(result.StatusCode);
        }
Esempio n. 19
0
        public int?DeleteUser(string id)
        {
            // Arrange
            User mockUser = new User("1", "*****@*****.**", 24.0);

            _userService.Setup(x => x.Get("1")).Returns(mockUser);
            _userService.Setup(x => x.Remove(id));

            // Act
            IStatusCodeActionResult result = ((IStatusCodeActionResult)_controller.Delete(id));

            // Assert
            return(result.StatusCode);
        }
        public async void BadModelReturns400()
        {
            RaffleApiController controller = new RaffleApiController(
                getDb("badModel"),
                getMockValidator(true));

            controller.ModelState.AddModelError("FirstName", "Must not be null.");

            IStatusCodeActionResult result = await controller.PostRaffleEntry(new RaffleEntry());

            StatusCodeResult statusResult = Assert.IsType <StatusCodeResult>(result);

            Assert.Equal((int)HttpStatusCode.BadRequest, statusResult.StatusCode);
        }
        private Task ExecuteActionResultAsync(HttpContext context, IStatusCodeActionResult actionResult)
        {
            context.Response.Clear();
            // Make sure problem responses are never cached.
            context.Response.Headers.Append(HeaderNames.CacheControl, "no-cache, no-store, must-revalidate");
            context.Response.Headers.Append(HeaderNames.Pragma, "no-cache");
            context.Response.Headers.Append(HeaderNames.Expires, "0");
            context.Response.StatusCode = actionResult.StatusCode.Value;

            var routeData     = context.GetRouteData() ?? _emptyRouteData;
            var actionContext = new ActionContext(context, routeData, _emptyActionDescriptor);

            return(actionResult.ExecuteResultAsync(actionContext));
        }
        private bool TryCreateActionResult(HttpContext context, Exception ex, out IStatusCodeActionResult actionResult)
        {
            if (ex != null && _options.Value.TryMap(ex, context, out actionResult))
            {
                return(true);
            }

            if (_options.Value.TryMap(context.Response, out actionResult))
            {
                return(true);
            }

            actionResult = default;
            return(false);
        }
Esempio n. 23
0
        public int?GetTrips(string email)
        {
            // Arrange
            if (email == "*****@*****.**")
            {
                _utility.Setup(x => x.GetToken(It.IsAny <HttpRequest>())).Returns("test");
                _authenticationService.Setup(x => x.ValidateToken("test")).Returns(new User("1", 1));
            }

            // Act
            IStatusCodeActionResult result = (IStatusCodeActionResult)_controller.Get();

            // Assert
            return(result.StatusCode);
        }
Esempio n. 24
0
        public async void CheckStatsException()
        {
            string        expected  = "500";
            GetStatsQuery getquery  = new GetStatsQuery();
            StatsView     statitics = new StatsView(1, 1);

            _mediator
            .Setup(m => m.Send(It.IsAny <GetStatsQuery>(), It.IsAny <CancellationToken>()))
            .Throws(new Exception()).Verifiable();

            var result = await _sut.GetStats();

            IStatusCodeActionResult statusCodeResult = result.Result as IStatusCodeActionResult;

            Assert.Equal(expected, statusCodeResult.StatusCode.ToString());
            _mediator.VerifyAll();
        }
Esempio n. 25
0
        public void AddSpendingAndListIt()
        {
            // Arrange
            using (SpendingContext spendingContext = new SpendingContext())
            {
                SpendingRepository spendingRepository = new SpendingRepository(spendingContext);
                SpendingController sut = new SpendingController(spendingRepository);

                // Act
                IStatusCodeActionResult actionResult = sut.AddSpending(1, DateTime.UtcNow.AddDays(-1), 100, "USD", "Misc", "Armor") as IStatusCodeActionResult;

                // Assert
                Assert.Equal(200, actionResult.StatusCode);
                ObjectResult listResult             = sut.ListByUserId(1, "Date") as ObjectResult;
                IEnumerable <SpendingDto> spendings = (IEnumerable <SpendingDto>)listResult.Value;
                Assert.Single(spendings);
            }
        }
Esempio n. 26
0
        /// <summary>
        /// Maps the HTTP response error to a ProblemDetailsResult.
        /// </summary>
        /// <param name="response">The HTTP response.</param>
        /// <param name="actionResult">A representation of the HTTP response error as a ProblemDetailsResult.</param>
        public bool TryMap(HttpResponse response, out IStatusCodeActionResult actionResult)
        {
            actionResult = default;

            if (!CanMap(response.StatusCode))
            {
                return(false);
            }

            try
            {
                actionResult = Map(response);
                return(true);
            }
            catch
            {
                return(false);
            }
        }
        /// <summary>
        /// Maps the exception to a ProblemDetailsResult.
        /// </summary>
        /// <param name="exception">The exception to map.</param>
        /// <param name="context">The current HTTP context.</param>
        /// <param name="actionResult">A representation of the exception as a ProblemDetailsResult.</param>
        public virtual bool TryMap(Exception exception, HttpContext context, out IStatusCodeActionResult actionResult)
        {
            actionResult = default;

            if (!CanMap(exception.GetType()))
            {
                return(false);
            }

            try
            {
                actionResult = Map(exception, context);
                return(true);
            }
            catch
            {
                return(false);
            }
        }
Esempio n. 28
0
        /// <summary>
        /// Maps the exception to a ProblemDetailsResult.
        /// </summary>
        /// <param name="exception">The exception to map.</param>
        /// <param name="context">The current HTTP context.</param>
        /// <param name="actionResult">A representation of the exception as a ProblemDetailsResult.</param>
        public virtual bool TryMap(Exception exception, HttpContext context, out IStatusCodeActionResult actionResult)
        {
            _ = exception ?? throw new ArgumentNullException(nameof(exception));

            actionResult = default;

            if (!CanMap(exception.GetType()))
            {
                return(false);
            }

            try
            {
                actionResult = Map(exception, context);
                return(true);
            }
            catch
            {
                return(false);
            }
        }
        /// <summary>
        /// Maps the HTTP response error to a ProblemDetailsResult.
        /// </summary>
        /// <param name="response">The HTTP response.</param>
        /// <param name="actionResult">A representation of the HTTP response error as a ProblemDetailsResult.</param>
        public bool TryMap(HttpResponse response, out IStatusCodeActionResult actionResult)
        {
            _ = response ?? throw new ArgumentNullException(nameof(response));

            actionResult = default;

            if (!CanMap(response.StatusCode))
            {
                return(false);
            }

            try
            {
                actionResult = Map(response);
                return(true);
            }
            catch
            {
                return(false);
            }
        }
Esempio n. 30
0
        public int?Patch(string email, string date, string tripId, Transport transport)
        {
            // Arrange
            if (email == "*****@*****.**")
            {
                _utility.Setup(x => x.GetToken(It.IsAny <HttpRequest>())).Returns("test");
                _authenticationService.Setup(x => x.ValidateToken("test")).Returns(new User("1", 1));
                _extractionService.Setup(x => x.UpdateTrip("2", It.IsAny <string>(), It.IsAny <string>(), It.IsAny <Transport>())).Returns(true);
            }

            JObject obj = new JObject();

            obj["date"]      = date;
            obj["tripId"]    = tripId;
            obj["transport"] = (int)transport;

            // Act
            IStatusCodeActionResult result = (IStatusCodeActionResult)_controller.Patch(obj);

            // Assert
            return(result.StatusCode);
        }