Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.
 
 
 
 

78 řádky
2.8 KiB

  1. using Api;
  2. using AutoMapper;
  3. using Core.Db;
  4. using Core.Repository;
  5. using Domain.Identity;
  6. using Microsoft.AspNetCore.Hosting;
  7. using Microsoft.AspNetCore.Http;
  8. using Microsoft.AspNetCore.Mvc;
  9. using Microsoft.AspNetCore.Mvc.Testing;
  10. using Microsoft.AspNetCore.Routing;
  11. using Microsoft.AspNetCore.TestHost;
  12. using Microsoft.EntityFrameworkCore;
  13. using Microsoft.Extensions.Configuration;
  14. using Models.Identity;
  15. using Moq;
  16. using Services.Identity;
  17. using System;
  18. using System.Collections.Generic;
  19. using System.Linq;
  20. using System.Net;
  21. using System.Text;
  22. using System.Threading.Tasks;
  23. using Xunit;
  24. using Xunit.Sdk;
  25. using Microsoft.Extensions.DependencyInjection;
  26. using Newtonsoft.Json;
  27. namespace Tests
  28. {
  29. public class AuthTests : BaseTest
  30. {
  31. public AuthTests(WebApplicationFactory<Program> factory) : base(factory)
  32. {
  33. }
  34. [Fact]
  35. public async Task Checklogin()
  36. {
  37. await LoginWithPassword();
  38. var res = await _client.GetAsync("/api/Auth/CheckLogin");
  39. Assert.True(res.IsSuccessStatusCode);
  40. }
  41. [Fact]
  42. public async Task CreateUserAndSendOtp()
  43. {
  44. var model = new Models.Identity.OTPLoginModel { Username = "09169212241" };
  45. var content = new StringContent(JsonConvert.SerializeObject(model), Encoding.UTF8, "application/json");
  46. var res =await _client.PostAsync("/api/Auth/Login",content);
  47. if (!res.IsSuccessStatusCode)
  48. Assert.True(false, "login was not successful");
  49. var otpRes= JsonConvert.DeserializeObject<OtpRequestResult>(await res.Content.ReadAsStringAsync());
  50. if (otpRes==null)
  51. Assert.True(false, "OTP result was not successful");
  52. Assert.True(true);
  53. }
  54. [Fact]
  55. public async Task LoginWithPassword()
  56. {
  57. await CreateUserAndSendOtp();
  58. var user = _dbContext.Accounts.FirstOrDefault(x => x.Username == "09169212241");
  59. var model =new Models.Identity.LoginModel { Username = "09169212241", Password = user.Password };
  60. var content = new StringContent(JsonConvert.SerializeObject(model), Encoding.UTF8, "application/json");
  61. var res =await _client.PostAsync("/api/Auth/LoginWithPassword", content);
  62. if (!res.IsSuccessStatusCode)
  63. Assert.True(false, "login was not successful");
  64. var token = JsonConvert.DeserializeObject<PlainToken>(await res.Content.ReadAsStringAsync());
  65. if(token==null)
  66. Assert.True(false, "OTP result was not successful");
  67. _client.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", token.AccessToken);
  68. Assert.True(true);
  69. }
  70. }
  71. }