Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.

AuthenticationServiceTests.cs 4.6KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. using AutoMapper;
  2. using Diligent.WebAPI.Business.Interfaces;
  3. using Diligent.WebAPI.Business.Services;
  4. using Diligent.WebAPI.Data.Entities;
  5. using Diligent.WebAPI.Host.Mapper;
  6. using Microsoft.AspNetCore.Identity;
  7. using Microsoft.Extensions.Configuration;
  8. using Moq;
  9. namespace Tests
  10. {
  11. public class AuthenticationServiceTests
  12. {
  13. private Mock<IAuthenticationService> _authenticationServiceMock;
  14. private IAuthenticationService _authenticationService;
  15. private IConfiguration _configuration;
  16. private Mock<UserManager<Customer>> _userManagerMock;
  17. private readonly Customer _customer = new()
  18. {
  19. Id = Guid.NewGuid(),
  20. Email = "user@gmail.com",
  21. FirstName = "User",
  22. LastName = "User",
  23. Notifications = new List<Notification>(),
  24. Roles = new List<Guid> { Guid.NewGuid() },
  25. UserName = "user12"
  26. };
  27. [SetUp]
  28. public void Setup()
  29. {
  30. var inMemorySettings = new Dictionary<string, string> {
  31. {"JwtSettings:jwtSecret", "Ovo je neka sifra koja treba biti tajna"},
  32. {"JwtSettings:validIssuer", "http://localhost:5116"},
  33. {"JwtSettings:validAudience", "http://localhost:3000"},
  34. };
  35. _configuration = new ConfigurationBuilder()
  36. .AddInMemoryCollection(inMemorySettings)
  37. .Build();
  38. _authenticationServiceMock = new Mock<IAuthenticationService>();
  39. _userManagerMock = new Mock<UserManager<Customer>>(Mock.Of<IUserStore<Customer>>(), null, null, null, null, null, null, null, null);
  40. _authenticationService = new AuthenticationService(_userManagerMock.Object, _configuration);
  41. var configuration = new MapperConfiguration(cfg => cfg.AddProfile(new CustomerMappingProfile()));
  42. }
  43. [Test]
  44. public async Task ValidateCustomer_CustomerIsNull_CustomerIsNotValid()
  45. {
  46. _userManagerMock.Setup(u => u.FindByNameAsync(It.IsAny<string>())).Returns(Task.FromResult<Customer>(null));
  47. await _authenticationServiceMock.Object.ValidateCustomer("dasdas", "dasdasd");
  48. var result = await _authenticationService.ValidateCustomer(It.IsAny<string>(), It.IsAny<string>());
  49. Assert.That(result, Is.False);
  50. }
  51. [Test]
  52. public async Task ValidateCustomer_CustomerIsNotNullAndUserCredentialsAreNotValid_CustomerIsNotValid()
  53. {
  54. _userManagerMock.Setup(u => u.FindByNameAsync(It.IsAny<string>())).Returns(Task.FromResult(_customer));
  55. _userManagerMock.Setup(u => u.CheckPasswordAsync(It.IsAny<Customer>(), It.IsAny<string>())).Returns(Task.FromResult(false));
  56. await _authenticationServiceMock.Object.ValidateCustomer("dasdas", "dasdasd");
  57. var result = await _authenticationService.ValidateCustomer(It.IsAny<string>(), It.IsAny<string>());
  58. Assert.That(result, Is.False);
  59. }
  60. [Test]
  61. public async Task ValidateCustomer_CustomerIsNotNullAndUserCredentialsAreValid_CustomerIsValid()
  62. {
  63. _userManagerMock.Setup(u => u.FindByNameAsync(It.IsAny<string>())).Returns(Task.FromResult(_customer));
  64. _userManagerMock.Setup(u => u.CheckPasswordAsync(It.IsAny<Customer>(), It.IsAny<string>())).Returns(Task.FromResult(true));
  65. var result = await _authenticationService.ValidateCustomer("dasdasd", "dasdasd");
  66. Assert.That(result, Is.True);
  67. }
  68. [Test]
  69. public async Task GenerateToken_UserIsNotValid_ReturnNull()
  70. {
  71. _userManagerMock.Setup(u => u.GetRolesAsync(It.IsAny<Customer>())).ReturnsAsync((IList<string>)new List<string> { "roles" });
  72. var result = await _authenticationService.GenerateToken();
  73. Assert.That(result, Is.Null);
  74. }
  75. [Test]
  76. public async Task GenerateToken_UserIsValid_ReturnToken()
  77. {
  78. _userManagerMock.Setup(u => u.GetRolesAsync(It.IsAny<Customer>())).ReturnsAsync((IList<string>)new List<string> { "roles" });
  79. _userManagerMock.Setup(u => u.FindByNameAsync(It.IsAny<string>())).Returns(Task.FromResult(_customer));
  80. _userManagerMock.Setup(u => u.CheckPasswordAsync(It.IsAny<Customer>(), It.IsAny<string>())).Returns(Task.FromResult(true));
  81. await _authenticationService.ValidateCustomer("dasdas", "dasd"); //user must be first valid and then we generate token for him
  82. var result = await _authenticationService.GenerateToken();
  83. Assert.That(result, Is.Not.Null);
  84. }
  85. }
  86. }