Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class CreateUserCommandHandlerTest
- {
- private Mock<UserManager<ApplicationUser>> _userManager;
- private CreateUserCommandHandler _systemUnderTest;
- public CreateUserCommandHandlerTest()
- {
- _userManager = MockUserManager.GetUserManager<ApplicationUser>();
- var user = new ApplicationUser() { UserName = "ancon1", Email = "ancon@mail.com", RoleType = RoleTypes.Anonymous };
- _userManager
- .Setup(u => u.CreateAsync(user, "ancon2")).ReturnsAsync(IdentityResult.Success);
- _systemUnderTest = new CreateUserCommandHandler(_userManager.Object);
- }
- [Fact]
- public async void Handle_GivenValidInput_ReturnsCreatedResponse()
- {
- var command = new CreateUserCommand { Username = "ancon1", Email = "ancon@mail.com", Password = "ancon2", RoleType = RoleTypes.Anonymous };
- var result = await _systemUnderTest.Handle(command, default(CancellationToken));
- Assert.NotNull(result);
- Assert.IsType<Application.Commands.CreatedResponse>(result);
- }
- }
- public static class MockUserManager
- {
- public static Mock<UserManager<TUser>> GetUserManager<TUser>()
- where TUser : class
- {
- var store = new Mock<IUserStore<TUser>>();
- var passwordHasher = new Mock<IPasswordHasher<TUser>>();
- IList<IUserValidator<TUser>> userValidators = new List<IUserValidator<TUser>>
- {
- new UserValidator<TUser>()
- };
- IList<IPasswordValidator<TUser>> passwordValidators = new List<IPasswordValidator<TUser>>
- {
- new PasswordValidator<TUser>()
- };
- userValidators.Add(new UserValidator<TUser>());
- passwordValidators.Add(new PasswordValidator<TUser>());
- var userManager = new Mock<UserManager<TUser>>(store.Object, null, passwordHasher.Object, userValidators, passwordValidators, null, null, null, null);
- return userManager;
- }
- }
- public class CreateUserCommandHandler : IRequestHandler<CreateUserCommand, BaseCommandResponse>
- {
- private readonly UserManager<ApplicationUser> _userManager;
- public CreateUserCommandHandler(UserManager<ApplicationUser> userManager)
- {
- _userManager = userManager;
- }
- public async Task<BaseCommandResponse> Handle(CreateUserCommand createUserCommand, CancellationToken cancellationToken)
- {
- var user = new ApplicationUser { UserName = createUserCommand.Username, Email = createUserCommand.Email, RoleType = createUserCommand.RoleType };
- var result = await _userManager.CreateAsync(user, createUserCommand.Password);
- if (result.Succeeded)
- {
- return new CreatedResponse();
- }
- ErrorResponse errorResponse = new ErrorResponse(result.Errors.Select(e => e.Description).First());
- return errorResponse;
- }
- }
Add Comment
Please, Sign In to add comment