Beispiel #1
0
        public async Task UpdateProfile_ReturnsOk_WhenUserUpdated()
        {
            // Arrange
            const string userId = "userId";

            var user = new MeUser
            {
                UserId      = userId,
                Permissions = new MEUserPermission[0]
            };
            var request = new PutProfileRequest()
            {
                GmcNumber = "gmcNumber"
            };

            _userUpdateService
            .Setup(up => up.Handle(It.IsAny <UserUpdateQuery>()))
            .Returns(Task.FromResult(user));

            Controller.ControllerContext = GetControllerContext();

            // Act
            var response = await Controller.UpdateUserProfile(userId, request);

            // Assert
            response.Result.Should().BeAssignableTo <OkObjectResult>();
            var result = (OkObjectResult)response.Result;

            result.Value.Should().BeAssignableTo <PutProfileResponse>();
            var model = (PutProfileResponse)result.Value;

            model.Errors.Count.Should().Be(0);
            model.Success.Should().BeTrue();
            model.UserId.Should().Be(userId);
        }
        public async Task <ActionResult <PutProfileResponse> > UpdateProfile([FromBody] PutProfileRequest putUser)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(new PutProfileResponse()));
            }

            var currentUser = await CurrentUser();

            try
            {
                var userUpdateEmail = Mapper.Map <UserUpdateProfile>(putUser);
                userUpdateEmail.UserId = currentUser.UserId;
                var updatedUser = await _userUpdateService.Handle(new UserUpdateQuery(userUpdateEmail, currentUser));

                return(Ok(Mapper.Map <PutProfileResponse>(updatedUser)));
            }
            catch (DocumentClientException)
            {
                return(NotFound(new PutProfileResponse()));
            }
            catch (ArgumentException)
            {
                return(NotFound(new PutProfileResponse()));
            }
        }
Beispiel #3
0
        public async Task UpdateProfile_ReturnsNotFound_WhenArgumentExceptionThrown()
        {
            // Arrange
            const string userId = "userId";

            var user = new MeUser
            {
                UserId      = userId,
                Permissions = new MEUserPermission[0]
            };
            var request = new PutProfileRequest()
            {
                GmcNumber = "gmcNumber"
            };

            _userUpdateService
            .Setup(up => up.Handle(It.IsAny <UserUpdateQuery>()))
            .Throws <InvalidOperationException>();

            Controller.ControllerContext = GetControllerContext();

            // Act
            var response = await Controller.UpdateUserProfile(userId, request);

            // Assert
            response.Result.Should().BeAssignableTo <NotFoundObjectResult>();
            var result = (NotFoundObjectResult)response.Result;

            result.Value.Should().BeAssignableTo <PutProfileResponse>();
            var model = (PutProfileResponse)result.Value;

            model.Errors.Count.Should().Be(0);
            model.Success.Should().BeTrue();

            model.UserId.Should().Be(null);
        }
Beispiel #4
0
        public async Task UpdateProfile_ReturnsBadRequest_WhenModelStateIsInvalid()
        {
            // Arrange
            var userId = "userId";

            Controller.ModelState.AddModelError("An", "Error");
            var request = new PutProfileRequest()
            {
                GmcNumber = "gmcNumber"
            };

            // Act
            var response = await Controller.UpdateUserProfile(userId, request);

            // Assert
            response.Result.Should().BeAssignableTo <BadRequestObjectResult>();
            var result = (BadRequestObjectResult)response.Result;

            result.Value.Should().BeAssignableTo <PutProfileResponse>();
            var model = (PutProfileResponse)result.Value;

            model.Errors.Count.Should().Be(1);
            model.Success.Should().BeFalse();
        }