public async Task Should_Throw_NotFoundException_In_Update_User_Profile_When_User_Not_Found()
        {
            //Arrange
            Mock <IUserManagerService>  userManagerService  = new Mock <IUserManagerService>();
            Mock <IIdentityDataContext> identityDataContext = new Mock <IIdentityDataContext>();

            var message = new UpdateUserInfoCommand(
                id: 1,
                firstName: "Test2",
                lastName: "Test2"
                );

            var applicationUser = new ApplicationUser()
            {
                Email        = String.Empty,
                UserName     = String.Empty,
                FirstName    = "Test",
                LastName     = "Test",
                Id           = 1,
                PasswordHash = String.Empty
            };

            userManagerService.Setup(r => r.GetUserById(It.Is <int>(id => id == message.Id)))
            .Returns(Task.FromResult(applicationUser));

            userManagerService.Setup(r => r.UpdateProfile(It.IsAny <int>(), It.IsAny <String>(), It.IsAny <String>()))
            .Throws <NotFoundException>();

            var sut = new UpdateUserInfoCommandHandler(identityDataContext.Object, userManagerService.Object);

            //Act/Assert
            await Assert.ThrowsAsync <NotFoundException>(async() => { await sut.Handle(message, default); });
        }
Пример #2
0
        public virtual async Task <IActionResult> UpdateUserInfo(
            [FromBody][ModelBinder(BinderType = typeof(UserCommandModelBinder))] UpdateUserInfoCommand profileUpdateCommand)
        {
            await this._commandDispather.HandleAsync <UpdateUserInfoCommand>(profileUpdateCommand);

            return(NoContent());
        }
Пример #3
0
        public async Task <UserDetailsDto> UpdateUserRoleOrTeam([FromRoute] Guid userId,
                                                                [FromBody] UserForUpdateDto dto)
        {
            var command = new UpdateUserInfoCommand
            {
                UserForUpdateDto = dto
            };

            command.UserForUpdateDto.UserId = userId;

            return(await _mediator.Send(command));
        }
Пример #4
0
        public void UserCommandHandler_Handle_UpdateUserInfoCommand_EditExistingUser_InvalidEmail()
        {
            IRequestHandler <UpdateUserInfoCommand, bool> handler = GetCommandHandlerInstance();
            var commandData = new UpdateUserInfoCommand()
            {
                Id = MarkId, Email = "*****@*****.**", Name = "Mark Zuckerberg"
            };

            Action action = () => handler.Handle(commandData, default).Wait();

            action.Should().Throw <Exception>();
        }
Пример #5
0
        public void UserCommandHandler_Handle_UpdateUserInfoCommand_EditExistingUser_ValidEmail()
        {
            IRequestHandler <UpdateUserInfoCommand, bool> handler = GetCommandHandlerInstance();
            var commandData = new UpdateUserInfoCommand()
            {
                Id = GatesId, Email = "*****@*****.**", Name = "Bill Gates"
            };

            var result = handler.Handle(commandData, default).Result;

            result.Should().BeTrue();
        }
        public async Task Should_Update_User_Profile()
        {
            //Arrange
            Mock <IUserManagerService>  userManagerService  = new Mock <IUserManagerService>();
            Mock <IIdentityDataContext> identityDataContext = new Mock <IIdentityDataContext>();

            var message = new UpdateUserInfoCommand(
                id: 1,
                firstName: "Test",
                lastName: "Test"
                );

            var applicationUser = new ApplicationUser()
            {
                Email        = String.Empty,
                UserName     = String.Empty,
                FirstName    = String.Empty,
                LastName     = String.Empty,
                Id           = 1,
                PasswordHash = String.Empty
            };

            userManagerService.Setup(r => r.GetUserById(It.Is <int>(id => id == message.Id)))
            .Returns(Task.FromResult(applicationUser));

            userManagerService.Setup(r => r.UpdateProfile(It.IsAny <int>(), It.IsAny <String>(), It.IsAny <String>()))
            .Returns((int id, string firstName, string lastName) =>
            {
                applicationUser.FirstName = firstName;
                applicationUser.LastName  = lastName;
                return(Task.FromResult(applicationUser));
            });


            var sut = new UpdateUserInfoCommandHandler(identityDataContext.Object, userManagerService.Object);

            //Act
            var result = await sut.Handle(message, default);

            //Assert
            result.ShouldNotBeNull();
            result.ShouldBeOfType <Unit>();
            applicationUser.FirstName.ShouldBe(message.FirstName);
            applicationUser.LastName.ShouldBe(message.LastName);
        }
Пример #7
0
        public async Task <bool> Handle(UpdateUserInfoCommand request, CancellationToken cancellationToken)
        {
            var userDomain = _UserRepository.GetById(request.Id).Result.ToDomain <User>(_Mapper);

            userDomain.SetPersonalInfo(request.Name, request.Email);

            await _UserRepository.Update(userDomain.ToModel <Command.User>(_Mapper));

            await _UnitOfWork.Commit();

            var publishMessage = new Message();

            publishMessage.MessageType = "UpdateUser";
            publishMessage.SetData(userDomain.ToQueryModel <Query.User>(_Mapper));

            await _Bus.SendMessage(publishMessage);

            return(true);
        }
Пример #8
0
        public async Task <ActionResult> SaveInfo(UserInfoRequest model)
        {
            if (!ModelState.IsValid)
            {
                return(RedirectToAction("Index"));
            }

            model.UserId = User.GetUserDbId();
            var cmd = new UpdateUserInfoCommand(0, model);
            await CommandBus.Send(cmd);

            var isOk = cmd.Response.ResponseObj;

            if (isOk)
            {
                User.AddUpdateClaim("FullName", model.FullName);
                User.AddUpdateClaim(ClaimTypes.MobilePhone, model.Phone);
            }
            return(RedirectToAction("Index"));
        }
        public async Task Should_Update_User_And_Return_NoContentResult()
        {
            //Arrange
            var mockMediator = new Mock <IMediator>();
            var user         = new ApplicationUser()
            {
                Id            = 1,
                PasswordHash  = String.Empty,
                FirstName     = String.Empty,
                LastName      = String.Empty,
                UserName      = String.Empty,
                Email         = String.Empty,
                SecurityStamp = Guid.NewGuid().ToString()
            };
            var message = new UpdateUserInfoCommand(
                1,
                "Test",
                "Test"
                );

            mockMediator.Setup(x => x.Send(It.IsAny <UpdateUserInfoCommand>(), default))
            .Returns <UpdateUserInfoCommand, CancellationToken>((command, c) =>
            {
                user.FirstName = command.FirstName;
                user.LastName  = command.LastName;
                return(Task.FromResult(Unit.Value));
            });
            var controller = new UserController(mockMediator.Object);

            SetAuthenticationContext(controller);
            //Act
            var result = await controller.UpdateUserInfo(message);

            //Assert
            result.ShouldNotBeNull();
            user.FirstName.ShouldBe("Test");
            user.LastName.ShouldBe("Test");
            result.ShouldBeAssignableTo <NoContentResult>();
        }
Пример #10
0
 public Task UpdateUserInfo([FromBody] UpdateUserInfoCommand profileUpdateCommand)
 {
     return(Mediator.Send(profileUpdateCommand));
 }
        public async Task <IActionResult> UpdateUserInfo([FromBody] UpdateUserInfoCommand profileUpdateCommand)
        {
            await Mediator.Send(profileUpdateCommand);

            return(NoContent());
        }