public async Task Handler_manager_should_update_user() { //Arrange var password = "******"; var fakeUser = new User { Id = Guid.NewGuid().ToString(), }; _userManagerMock.Setup(x => x.FindByIdAsync(fakeUser.Id)).Returns(Task.FromResult(fakeUser)); _userManagerMock.Setup(x => x.IsInRoleAsync(fakeUser, AuthSettings.Roles.Supervisor)) .Returns(Task.FromResult(false)); var cancellationToken = new CancellationToken(); var command = new ChangeUserPasswordCommand(fakeUser.Id, password, password); var handler = new ChangeUserPasswordCommandHandler(_userManagerMock.Object); //Act await handler.Handle(command, cancellationToken); //Assert _userManagerMock.Verify(x => x.UpdateAsync(It.Is <User>(it => it == fakeUser)), Times.Once); }
public async Task Handler_should_update_password_for_user() { //Arrange var fakeUser = new User { Id = Guid.NewGuid().ToString(), }; var password = "******"; var passwordHash = new PasswordHasher <User>().HashPassword(fakeUser, password); _userManagerMock.Setup(x => x.FindByIdAsync(fakeUser.Id)).Returns(Task.FromResult(fakeUser)); _userManagerMock.Setup(x => x.IsInRoleAsync(fakeUser, AuthSettings.Roles.Supervisor)) .Returns(Task.FromResult(false)); var cancellationToken = new CancellationToken(); var command = new ChangeUserPasswordCommand(fakeUser.Id, password, password); var handler = new ChangeUserPasswordCommandHandler(_userManagerMock.Object); //Act await handler.Handle(command, cancellationToken); //Assert Assert.NotEqual(passwordHash, fakeUser.PasswordHash); }
public async Task change_user_handler_should_not_be_null() { var userRepositoryMock = new Mock <IUserRepository>(); var passwordService = new Mock <IPasswordService>(); var userHandler = new ChangeUserPasswordCommandHandler(userRepositoryMock.Object, passwordService.Object); passwordService.Setup(x => x.HashPassword(It.IsAny <string>())).Returns("asdasd"); userRepositoryMock.Setup(x => x.GetAsync(It.IsAny <Guid>())).ReturnsAsync( new EngineeringWork.Core.Domain.User( new Guid(), "asdasd", "aasdasd", "user", "asdasdasdasdasd" ) ); var result = await userHandler.Handle(new ChangeUserPasswordCommand() { CurrentPassword = "******", NewPassword = "******" }, new CancellationToken()); result.Should().NotBeNull(); }
public async Task Handler_should_throw_exception_if_dependency_is_null() { //Arrage //Act void Act() { var command = new ChangeUserPasswordCommandHandler(null); } //Assert Assert.Throws <ArgumentNullException>(Act); }
public async Task Handler_should_throw_not_found_exception_if_user_doesnt_exist() { //Arrange _userManagerMock.Setup(x => x.FindByIdAsync(Guid.NewGuid().ToString())).Returns(Task.FromResult <User>(null)); _userManagerMock.Setup(x => x.Users).Returns(_identityDataContextMock.Object.Users); var cancellationToken = new CancellationToken(); var command = new ChangeUserPasswordCommand("123", "123", "123"); var handler = new ChangeUserPasswordCommandHandler(_userManagerMock.Object); //Act Task Act() => handler.Handle(command, cancellationToken); //Assert await Assert.ThrowsAsync <UserNotFoundException>(Act); }
public void ChangeUserPasswordCommandHandler_Succeeds() { var handler = new ChangeUserPasswordCommandHandler(_repository); var command = new ChangeUserPasswordCommand("*****@*****.**", "test", "test2"); var user = Substitute.For <User>(); user.Email.Returns("*****@*****.**"); user.Password.Returns(new Password("test")); user.Status.Returns(UserStatus.Active); _context.Users.Add(user); var result = handler.Execute(command); result.Success.Should().BeTrue(); user.Received().ChangePassword("test2"); user.DidNotReceive().ChangePasswordFailed(); }
public void ChangeUserPasswordCommandHandler_Fails_For_Wrong_Password() { var handler = new ChangeUserPasswordCommandHandler(_repository); var command = new ChangeUserPasswordCommand("*****@*****.**", "wrong", "test2"); var user = Substitute.For <User>(); user.Email.Returns("*****@*****.**"); user.Password.Returns(new Password("test")); user.Status.Returns(UserStatus.Active); _context.Users.Add(user); var result = handler.Execute(command); result.Errors.Should().HaveCount(1); result.Errors[0].Expression.ToString().Should().Be("p => p.CurrentPassword"); result.Errors[0].Message.Should().Be("Invalid password"); user.DidNotReceive().ChangePassword(Arg.Any <string>()); user.Received().ChangePasswordFailed(); }
public void ChangeUserPasswordCommandHandler_Throws_Exception_For_Invalid_User() { var handler = new ChangeUserPasswordCommandHandler(_repository); var command = new ChangeUserPasswordCommand("*****@*****.**", "test", "test2"); var user = Substitute.For <User>(); user.Email.Returns("*****@*****.**"); user.Password.Returns(new Password("test")); user.Status.Returns(UserStatus.Inactive); _context.Users.Add(user); Action commandAction = () => { var result = handler.Execute(command); }; commandAction.Should().Throw <InvalidOperationException>(); user.DidNotReceive().ChangePassword(Arg.Any <string>()); user.DidNotReceive().ChangePasswordFailed(); }
public async Task Handler_should_return_true() { //Arrange var fakeUser = new User { Id = Guid.NewGuid().ToString() }; _userManagerMock.Setup(x => x.FindByIdAsync(fakeUser.Id)).Returns(Task.FromResult(fakeUser)); _userManagerMock.Setup(x => x.IsInRoleAsync(fakeUser, AuthSettings.Roles.Supervisor)) .Returns(Task.FromResult(false)); var cancellationToken = new CancellationToken(); var command = new ChangeUserPasswordCommand(fakeUser.Id, "123", "123"); var handler = new ChangeUserPasswordCommandHandler(_userManagerMock.Object); //Act var result = await handler.Handle(command, cancellationToken); //Assert Assert.True(result); }
public async Task Handler_should_throw_unable_to_change_state_exception_if_user_is_supervisor() { //Arrange var fakeUser = new User { Id = Guid.NewGuid().ToString() }; _userManagerMock.Setup(x => x.FindByIdAsync(fakeUser.Id)).Returns(Task.FromResult(fakeUser)); _userManagerMock.Setup(x => x.IsInRoleAsync(fakeUser, AuthSettings.Roles.Supervisor)) .Returns(Task.FromResult(true)); var cancellationToken = new CancellationToken(); var command = new ChangeUserPasswordCommand(fakeUser.Id, "123", "123"); var handler = new ChangeUserPasswordCommandHandler(_userManagerMock.Object); //Act Task Act() => handler.Handle(command, cancellationToken); //Assert await Assert.ThrowsAsync <UserUnableToChangeStateException>(Act); }