Guest User

Untitled

a guest
Mar 7th, 2018
287
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.76 KB | None | 0 0
  1. public class CreateUserCommandHandlerTest
  2. {
  3. private Mock<UserManager<ApplicationUser>> _userManager;
  4. private CreateUserCommandHandler _systemUnderTest;
  5.  
  6. public CreateUserCommandHandlerTest()
  7. {
  8. _userManager = MockUserManager.GetUserManager<ApplicationUser>();
  9. var user = new ApplicationUser() { UserName = "ancon1", Email = "ancon@mail.com", RoleType = RoleTypes.Anonymous };
  10. _userManager
  11. .Setup(u => u.CreateAsync(user, "ancon2")).ReturnsAsync(IdentityResult.Success);
  12. _systemUnderTest = new CreateUserCommandHandler(_userManager.Object);
  13. }
  14.  
  15. [Fact]
  16. public async void Handle_GivenValidInput_ReturnsCreatedResponse()
  17. {
  18. var command = new CreateUserCommand { Username = "ancon1", Email = "ancon@mail.com", Password = "ancon2", RoleType = RoleTypes.Anonymous };
  19. var result = await _systemUnderTest.Handle(command, default(CancellationToken));
  20. Assert.NotNull(result);
  21. Assert.IsType<Application.Commands.CreatedResponse>(result);
  22. }
  23. }
  24.  
  25. public static class MockUserManager
  26. {
  27. public static Mock<UserManager<TUser>> GetUserManager<TUser>()
  28. where TUser : class
  29. {
  30. var store = new Mock<IUserStore<TUser>>();
  31. var passwordHasher = new Mock<IPasswordHasher<TUser>>();
  32. IList<IUserValidator<TUser>> userValidators = new List<IUserValidator<TUser>>
  33. {
  34. new UserValidator<TUser>()
  35. };
  36. IList<IPasswordValidator<TUser>> passwordValidators = new List<IPasswordValidator<TUser>>
  37. {
  38. new PasswordValidator<TUser>()
  39. };
  40. userValidators.Add(new UserValidator<TUser>());
  41. passwordValidators.Add(new PasswordValidator<TUser>());
  42. var userManager = new Mock<UserManager<TUser>>(store.Object, null, passwordHasher.Object, userValidators, passwordValidators, null, null, null, null);
  43. return userManager;
  44. }
  45. }
  46.  
  47. public class CreateUserCommandHandler : IRequestHandler<CreateUserCommand, BaseCommandResponse>
  48. {
  49. private readonly UserManager<ApplicationUser> _userManager;
  50.  
  51. public CreateUserCommandHandler(UserManager<ApplicationUser> userManager)
  52. {
  53. _userManager = userManager;
  54. }
  55.  
  56. public async Task<BaseCommandResponse> Handle(CreateUserCommand createUserCommand, CancellationToken cancellationToken)
  57. {
  58. var user = new ApplicationUser { UserName = createUserCommand.Username, Email = createUserCommand.Email, RoleType = createUserCommand.RoleType };
  59. var result = await _userManager.CreateAsync(user, createUserCommand.Password);
  60. if (result.Succeeded)
  61. {
  62. return new CreatedResponse();
  63. }
  64.  
  65. ErrorResponse errorResponse = new ErrorResponse(result.Errors.Select(e => e.Description).First());
  66.  
  67. return errorResponse;
  68. }
  69. }
Add Comment
Please, Sign In to add comment