public async Task PutMailingAddressAsync_UnhandledException_Returns500InternalServerError()
        {
            // Arrange
            var address = new UpdateMailingAddressRequest
            {
                AddressLine1 = "Bruce Wayne",
                AddressLine2 = "1007 Mountain Drive",
                City         = "Gotham",
                Country      = "USA",
                PostalCode   = "10001"
            };

            CustomerLogicMock.Setup(logic => logic.UpsertStandardMailingAddressAsync(It.IsAny <long>(), It.IsAny <UpdateMailingAddressModel>(), It.IsAny <string>()))
            .Returns(() => Task.FromResult(4131426L));

            CustomerLogicMock.Setup(logic => logic.PutMailingAddressAsync(It.IsAny <AddressDefinedType>(), It.IsAny <long>()))
            .Throws(new ApplicationException("Batman is not available"));
            var controller = GetController();

            ArrangeController(controller, TestHelper.PaDev1);

            // Act
            var results = await controller.PutMailingAddressAsync(address);

            // Assert
            results.ShouldBeOfType <ContentResult>();
            var returnCode = (ContentResult)results;

            returnCode.StatusCode.ShouldBe(StatusCodes.Status500InternalServerError);
        }
        public async Task PutMailingAddressAsync_ValidAddressAndClaim_ReturnsOk()
        {
            // Arrange
            var address = new UpdateMailingAddressRequest
            {
                AddressLine1 = "The White House",
                AddressLine2 = "1600 Pennsylvania Avenue NW",
                City         = "Washington",
                Country      = "USA",
                PostalCode   = "20500",
                State        = "WA"
            };

            CustomerLogicMock.Setup(logic => logic.UpsertStandardMailingAddressAsync(It.IsAny <long>(), It.IsAny <UpdateMailingAddressModel>(), It.IsAny <string>()))
            .Returns(() => Task.FromResult(4131426L));

            CustomerLogicMock.Setup(logic => logic.PutMailingAddressAsync(It.IsAny <AddressDefinedType>(), It.IsAny <long>()))
            .Returns(() => Task.FromResult(HttpStatusCode.OK));

            var controller = GetController();

            ArrangeController(controller, TestHelper.PaDev1);

            // Act
            var results = await controller.PutMailingAddressAsync(address);

            // Assert
            results.ShouldBeOfType <OkObjectResult>();
        }
        public async Task PutMailingAddressAsync_InvalidAddress_Returns400BadRequest()
        {
            // Arrange
            var address    = new UpdateMailingAddressRequest();
            var controller = GetController();

            controller.ViewData.Model = address;
            controller.ViewData.ModelState.AddModelError("AddressLine1", "AddressLine1 is required");

            // Act
            var results = await controller.PutMailingAddressAsync(address);

            // Assert
            results.ShouldBeOfType <BadRequestObjectResult>();
            var badRequest = (BadRequestObjectResult)results;

            badRequest.StatusCode.ShouldNotBeNull();
            badRequest.StatusCode.Value.ShouldBe(StatusCodes.Status400BadRequest);
        }
Пример #4
0
        /// <summary>
        /// To the base.
        /// </summary>
        /// <param name="source">The source.</param>
        /// <returns></returns>
        /// <exception cref="ArgumentNullException">source</exception>
        public static AddressDefinedType ToBase(this UpdateMailingAddressRequest source)
        {
            if (source == null)
            {
                throw new ArgumentNullException(nameof(source));
            }

            var model = new AddressDefinedType
            {
                AddressLine1 = source.AddressLine1,
                AddressLine2 = source.AddressLine2,
                CareOf       = source.CareOf,
                City         = source.City,
                Country      = source.Country,
                PostalCode   = source.PostalCode,
                State        = source.State
            };

            return(model);
        }
Пример #5
0
        public async Task <IActionResult> PutMailingAddressAsync([FromBody] UpdateMailingAddressRequest request)
        {
            _logger.LogInformation($"PutMailingAddressAsync({nameof(request)}: {request.ToJson()})");

            IActionResult result = BadRequest(ModelState);

            if (ModelState.IsValid)
            {
                try
                {
                    if (HttpContext.Request.Headers.TryGetValue("Authorization", out StringValues jwt))
                    {
                        var bpId = GetBpIdFromClaims();

                        var model = Mapper.Map <UpdateMailingAddressModel>(request);

                        //MCF Call
                        var addressId = await _customerLogic.UpsertStandardMailingAddressAsync(bpId, model, jwt);

                        //Cassandra Update
                        var address = request.ToBase();

                        await _customerLogic.PutMailingAddressAsync(address, bpId);

                        result = Ok(addressId);
                    }
                    else
                    {
                        result = Unauthorized();
                    }
                }
                catch (Exception e)
                {
                    _logger.LogError(e.Message);

                    result = e.ToActionResult();
                }
            }

            return(result);
        }