init commit
This commit is contained in:
89
20220330_Vote/Ewide.Test/AuthTest.cs
Normal file
89
20220330_Vote/Ewide.Test/AuthTest.cs
Normal file
@@ -0,0 +1,89 @@
|
||||
using Ewide.Web.Entry;
|
||||
using Microsoft.AspNetCore.Mvc.Testing;
|
||||
using System;
|
||||
using System.Net.Http;
|
||||
using Xunit;
|
||||
using Xunit.Abstractions;
|
||||
using Newtonsoft.Json;
|
||||
using System.Threading.Tasks;
|
||||
using Ewide.Core;
|
||||
using System.Net.Http.Headers;
|
||||
using Ewide.Core.Service;
|
||||
using System.Text;
|
||||
using Ewide.Core.Util;
|
||||
|
||||
namespace Ewide.Test
|
||||
{
|
||||
public class AuthTest : IClassFixture<CustomWebApplicationFactory<Startup>>
|
||||
{
|
||||
private readonly CustomWebApplicationFactory<Startup> _factory;
|
||||
private readonly HttpClient _client;
|
||||
private readonly ITestOutputHelper _output;
|
||||
public AuthTest(CustomWebApplicationFactory<Startup> factory, ITestOutputHelper output)
|
||||
{
|
||||
_factory = factory;
|
||||
_client = _factory.CreateClient(new WebApplicationFactoryClientOptions
|
||||
{
|
||||
AllowAutoRedirect = false,
|
||||
});
|
||||
_client.DefaultRequestHeaders.Add("User-Agent", "xUnit");
|
||||
_output = output;
|
||||
}
|
||||
[Fact]
|
||||
public async Task Get_NotNull_UserLoginInfo()
|
||||
{
|
||||
await GetAccessToken("superAdmin", "123456");
|
||||
var response = await _client.GetAsync("/getLoginUser");
|
||||
_output.WriteLine($"login status code {response.StatusCode}");
|
||||
var body = await response.Content.ReadAsStringAsync();
|
||||
_output.WriteLine($"body {body}");
|
||||
var result = JsonConvert.DeserializeObject<RestfulResult<LoginOutput>>(body);
|
||||
Assert.NotNull(result.Data);
|
||||
}
|
||||
[Theory]
|
||||
[InlineData("superAdmin","123456",200)]
|
||||
[InlineData("superAdmin","12345",500)]
|
||||
public async Task Get_RightCode_LoginResult(string account,string password,int code)
|
||||
{
|
||||
var response = await _client.PostAsync("/login", new StringContent(
|
||||
JsonConvert.SerializeObject(
|
||||
new LoginInput
|
||||
{
|
||||
Account = account,
|
||||
Password = RSAHandler.RSAEncrypt(password)
|
||||
}
|
||||
)
|
||||
, Encoding.UTF8, "application/json"));
|
||||
var body = await response.Content.ReadAsStringAsync();
|
||||
_output.WriteLine($"body {body}");
|
||||
var result = JsonConvert.DeserializeObject<RestfulResult<string>>(body);
|
||||
Assert.Equal(code, result.Code);
|
||||
}
|
||||
|
||||
|
||||
private void SetToken(string token)
|
||||
{
|
||||
_client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token);
|
||||
}
|
||||
private async Task GetAccessToken(string account,string password)
|
||||
{
|
||||
var response = await _client.PostAsync("/login", new StringContent(
|
||||
JsonConvert.SerializeObject(
|
||||
new LoginInput
|
||||
{
|
||||
Account = account,
|
||||
Password = RSAHandler.RSAEncrypt(password)
|
||||
}
|
||||
)
|
||||
, Encoding.UTF8, "application/json"));
|
||||
var body = await response.Content.ReadAsStringAsync();
|
||||
_output.WriteLine($"body {body}");
|
||||
var result = JsonConvert.DeserializeObject<RestfulResult<string>>(body);
|
||||
if (!result.Success)
|
||||
{
|
||||
throw new ArgumentException("»ñÈ¡AccessTokenʧ°Ü");
|
||||
}
|
||||
SetToken(result.Data);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user