Advertisement
Guest User

Untitled

a guest
Dec 15th, 2017
555
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 5.42 KB | None | 0 0
  1. using System;
  2. using System.Threading.Tasks;
  3. using cinema.Entities;
  4. using Cinema.Repositories;
  5. using Cinema.Services;
  6. using FluentAssertions;
  7. using Moq;
  8. using Xunit;
  9.  
  10. namespace CinemaTests.Services.UserService
  11. {
  12.     public class RegisterAsyncTests
  13.     {
  14.         private readonly User user= new User("test123@o2.pl", "FirstName", "LastName", "Secret123","salt123", "user");
  15.         [Fact]
  16.         public async Task GivenUniqueEmailAndValidPasswordUserShouldBeRegistered()
  17.         {
  18.             var userRepository = new Mock<IUserRepository>();
  19.             var tokenProvider = new Mock<ITokenProvider>();
  20.             var crpytoService = new Mock<ICryptoService>();
  21.             var userService = new Cinema.Services.UserService(userRepository.Object, crpytoService.Object, tokenProvider.Object);
  22.  
  23.             await userService.RegisterAsync(user.Email, user.FirstName, user.LastName, user.Password, user.Role);
  24.  
  25.             userRepository.Verify(x=>x.AddAsync(It.IsAny<User>()),Times.Once);
  26.         }
  27.         [Fact]
  28.         public void GivenInvalidEmailExceptionShouldBeThrown()
  29.         {
  30.             var userRepository = new Mock<IUserRepository>();
  31.             var tokenProvider = new Mock<ITokenProvider>();
  32.             var crpytoService = new Mock<ICryptoService>();
  33.             var userService = new Cinema.Services.UserService(userRepository.Object, crpytoService.Object, tokenProvider.Object);
  34.             var invalidEmail = "invalido2.pl";
  35.  
  36.             Func<Task> fun = async () =>
  37.             {
  38.                 await userService.RegisterAsync(invalidEmail, user.FirstName, user.LastName, user.Password, user.Role);
  39.             };
  40.  
  41.             fun.ShouldThrow<Exception>();
  42.         }
  43.         [Fact]
  44.         public void GivenOccupiedEmailExceptionShouldBeThrown()
  45.         {
  46.             var occupiedEmail = "occupied@o2.pl";
  47.             var userRepository = new Mock<IUserRepository>();
  48.             var user= new User("test@test.pl", "Test", "Test", "Secret1234", "salt", "role");
  49.             userRepository.Setup(x => x.GetByEmailAsync(occupiedEmail)).Returns(Task.FromResult(user));
  50.             var tokenProvider = new Mock<ITokenProvider>();
  51.             var crpytoService = new Mock<ICryptoService>();
  52.             var userService = new Cinema.Services.UserService(userRepository.Object, crpytoService.Object, tokenProvider.Object);
  53.  
  54.            
  55.             Func<Task> fun = async () =>
  56.             {
  57.                 await userService.RegisterAsync(occupiedEmail, user.FirstName, user.LastName, user.Password, user.Role);
  58.             };
  59.  
  60.             fun.ShouldThrow<Exception>();
  61.         }
  62.         [Fact]
  63.         public void GivenPasswordShorterThanSixExceptionShouldBeThrown()
  64.         {
  65.             var shortPassword = "123";
  66.             var userRepository = new Mock<IUserRepository>();
  67.             var tokenProvider = new Mock<ITokenProvider>();
  68.             var crpytoService = new Mock<ICryptoService>();
  69.             var userService = new Cinema.Services.UserService(userRepository.Object, crpytoService.Object, tokenProvider.Object);
  70.  
  71.  
  72.             Func<Task> fun = async () =>
  73.             {
  74.                 await userService.RegisterAsync(user.Email, user.FirstName, user.LastName, shortPassword, user.Role);
  75.             };
  76.  
  77.             fun.ShouldThrow<Exception>();
  78.         }
  79.         [Fact]
  80.         public void GivenPasswordWithoutAtLeastOneUpperCaseExceptionShouldBeThrown()
  81.         {
  82.             var onlyLowerPassword = "abckkkkkkk";
  83.             var userRepository = new Mock<IUserRepository>();
  84.             var tokenProvider = new Mock<ITokenProvider>();
  85.             var crpytoService = new Mock<ICryptoService>();
  86.             var userService = new Cinema.Services.UserService(userRepository.Object, crpytoService.Object, tokenProvider.Object);
  87.  
  88.  
  89.             Func<Task> fun = async () =>
  90.             {
  91.                 await userService.RegisterAsync(user.Email, user.FirstName, user.LastName, onlyLowerPassword, user.Role);
  92.             };
  93.  
  94.             fun.ShouldThrow<Exception>();
  95.         }
  96.         [Fact]
  97.         public void GivenPasswordWithoutAtLeastOneLowerCaseExceptionShouldBeThrown()
  98.         {
  99.             var onlyUpperPassword = "ABCKKKKKKK";
  100.             var userRepository = new Mock<IUserRepository>();
  101.             var tokenProvider = new Mock<ITokenProvider>();
  102.             var crpytoService = new Mock<ICryptoService>();
  103.             var userService = new Cinema.Services.UserService(userRepository.Object, crpytoService.Object, tokenProvider.Object);
  104.  
  105.  
  106.             Func<Task> fun = async () =>
  107.             {
  108.                 await userService.RegisterAsync(user.Email, user.FirstName, user.LastName, onlyUpperPassword, user.Role);
  109.             };
  110.  
  111.             fun.ShouldThrow<Exception>();
  112.         }
  113.  
  114.         [Fact]
  115.         public void GivenInvalidRoleExceptionShouldBeThrown()
  116.         {
  117.             var invalidRole = "BACDEFA";
  118.             var userRepository = new Mock<IUserRepository>();
  119.             var tokenProvider = new Mock<ITokenProvider>();
  120.             var crpytoService = new Mock<ICryptoService>();
  121.             var userService = new Cinema.Services.UserService(userRepository.Object, crpytoService.Object, tokenProvider.Object);
  122.  
  123.  
  124.             Func<Task> fun = async () =>
  125.             {
  126.                 await userService.RegisterAsync(user.Email, user.FirstName, user.LastName, user.Password, invalidRole);
  127.             };
  128.  
  129.             fun.ShouldThrow<Exception>();
  130.         }
  131.  
  132.     }
  133. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement