public async Task <IActionResult> Post([FromBody] LocationRequestViewModel input, CancellationToken ct = default(CancellationToken))
        {
            try
            {
                if (input == null)
                {
                    return(BadRequest());
                }

                //For testing
                if (!ModelState.IsValid)
                {
                    return(BadRequest(ModelState));
                }

                var userId = int.Parse(((ClaimsIdentity)User.Identity).Name);
                if (!await _vehicleManager.isValidUserVehicle(userId, (int)input.VehicleId, ct))
                {
                    return(Forbid());
                }

                return(StatusCode(201, await _manager.AddLocationAsync(input, ct)));
            }
            catch (Exception ex)
            {
                return(StatusCode(500, new
                {
                    Code = "ServerError",
                    ex.Message
                }));
            }
        }
Beispiel #2
0
        public async void Add_InvalidNullObjectPassed_ReturnsBadRequest()
        {
            LocationRequestViewModel LocationRequestViewModel = null;

            var badResponse = await _controller.Post(LocationRequestViewModel);

            Assert.IsType <BadRequestResult>(badResponse);
        }
        /// <summary>
        /// Creates a new location.
        /// </summary>
        /// <param name="locationViewModel"></param>
        /// <param name="ct"></param>
        /// <returns>LocationViewModel</returns>
        public async Task <LocationViewModel> AddLocationAsync(LocationRequestViewModel locationRequestViewModel, CancellationToken ct = default(CancellationToken))
        {
            var location = new Location
            {
                Longitude = (double)locationRequestViewModel.Longitude,
                Latitude  = (double)locationRequestViewModel.Latitude,
                VehicleId = (int)locationRequestViewModel.VehicleId,
                CreatedAt = DateTime.Now
            };

            location = await _repository.AddAsync(location, ct);

            var locationViewModel = LocationConverter.Convert(location);

            return(locationViewModel);
        }
Beispiel #4
0
        public async void Add_InvalidObjectPassed_ReturnsBadRequest()
        {
            var testItem = new LocationRequestViewModel()
            {
                Longitude = 19.433052,
                Latitude  = -99.182882,
            };

            AddClaim(_controller);

            //Needs ModelState validation in controller.
            _controller.ModelState.AddModelError("VehicleId", "Required");

            var badResponse = await _controller.Post(testItem);

            Assert.IsType <BadRequestObjectResult>(badResponse);
        }
Beispiel #5
0
        public async void Add_ValidObjectPassed_ReturnsCreatedResponse()
        {
            // Arrange
            LocationRequestViewModel testItem = new LocationRequestViewModel()
            {
                Longitude = 19.433052,
                Latitude  = -99.182882,
                VehicleId = 1
            };

            AddClaim(_controller);

            // Act
            var createdResponse = await _controller.Post(testItem);

            var objectResponse = createdResponse as ObjectResult;

            // Assert
            Assert.Equal(201, objectResponse.StatusCode);
        }