|
@@ -6,6 +6,9 @@ using Admin.Core.Service.Admin.Auth.Input;
|
|
|
using Admin.Core.Service.Admin.Auth.Output;
|
|
|
using Newtonsoft.Json;
|
|
|
using Newtonsoft.Json.Linq;
|
|
|
+using Newtonsoft.Json.Serialization;
|
|
|
+using System;
|
|
|
+using System.Collections.Generic;
|
|
|
using System.ComponentModel;
|
|
|
using System.Linq;
|
|
|
using System.Net;
|
|
@@ -13,6 +16,7 @@ using System.Net.Http;
|
|
|
using System.Net.Http.Headers;
|
|
|
using System.Text;
|
|
|
using System.Threading.Tasks;
|
|
|
+using Xunit;
|
|
|
|
|
|
namespace Admin.Core.Tests.Controller
|
|
|
{
|
|
@@ -31,14 +35,89 @@ namespace Admin.Core.Tests.Controller
|
|
|
|
|
|
public ByteArrayContent GetHttpContent(object input)
|
|
|
{
|
|
|
+
|
|
|
var content = Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(input));
|
|
|
var httpContent = new ByteArrayContent(content);
|
|
|
httpContent.Headers.ContentType = MediaTypeHeaderValue.Parse("application/json;charset=UTF-8");
|
|
|
return httpContent;
|
|
|
}
|
|
|
|
|
|
+ public async Task<T> GetResult<T>(string apiPath, object input = null, bool checkStatus = true)
|
|
|
+ {
|
|
|
+ await Login();
|
|
|
+ var res = await Client.GetAsync(apiPath);
|
|
|
+ if (checkStatus)
|
|
|
+ {
|
|
|
+ Assert.Equal(HttpStatusCode.OK, res.StatusCode);
|
|
|
+ }
|
|
|
+ var content = await res.Content.ReadAsStringAsync();
|
|
|
+ return JsonConvert.DeserializeObject<T>(content);
|
|
|
+ }
|
|
|
+
|
|
|
+ public async Task<T> PostResult<T>(string apiPath, object input = null, bool checkStatus = true)
|
|
|
+ {
|
|
|
+ await Login();
|
|
|
+ var res = await Client.PostAsync(apiPath, GetHttpContent(input));
|
|
|
+ if (checkStatus)
|
|
|
+ {
|
|
|
+ Assert.Equal(HttpStatusCode.OK, res.StatusCode);
|
|
|
+ }
|
|
|
+ var content = await res.Content.ReadAsStringAsync();
|
|
|
+ return JsonConvert.DeserializeObject<T>(content);
|
|
|
+ }
|
|
|
+
|
|
|
+ public async Task<T> PutResult<T>(string apiPath, object input = null, bool checkStatus = true)
|
|
|
+ {
|
|
|
+ await Login();
|
|
|
+ var res = await Client.PutAsync(apiPath, GetHttpContent(input));
|
|
|
+ if (checkStatus)
|
|
|
+ {
|
|
|
+ Assert.Equal(HttpStatusCode.OK, res.StatusCode);
|
|
|
+ }
|
|
|
+ var content = await res.Content.ReadAsStringAsync();
|
|
|
+ return JsonConvert.DeserializeObject<T>(content);
|
|
|
+ }
|
|
|
+
|
|
|
+ public async Task<T> DeleteResult<T>(string apiPath, object input = null, bool checkStatus = true)
|
|
|
+ {
|
|
|
+ await Login();
|
|
|
+ var res = await Client.DeleteAsync(apiPath);
|
|
|
+ if (checkStatus)
|
|
|
+ {
|
|
|
+ Assert.Equal(HttpStatusCode.OK, res.StatusCode);
|
|
|
+ }
|
|
|
+ var content = await res.Content.ReadAsStringAsync();
|
|
|
+ return JsonConvert.DeserializeObject<T>(content);
|
|
|
+ }
|
|
|
+
|
|
|
+ public async Task<ResultDto<dynamic>> GetResult(string apiPath, object input = null, bool checkStatus = true)
|
|
|
+ {
|
|
|
+ return await GetResult<ResultDto<dynamic>>(apiPath, input, checkStatus);
|
|
|
+ }
|
|
|
+
|
|
|
+ public async Task<ResultDto<dynamic>> PostResult(string apiPath, object input = null, bool checkStatus = true)
|
|
|
+ {
|
|
|
+ return await PostResult<ResultDto<dynamic>>(apiPath, input, checkStatus);
|
|
|
+ }
|
|
|
+
|
|
|
+ public async Task<ResultDto<dynamic>> PutResult(string apiPath, object input = null, bool checkStatus = true)
|
|
|
+ {
|
|
|
+ return await PutResult<ResultDto<dynamic>>(apiPath, input, checkStatus);
|
|
|
+ }
|
|
|
+
|
|
|
+ public async Task<ResultDto<dynamic>> DeleteResult(string apiPath, object input = null, bool checkStatus = true)
|
|
|
+ {
|
|
|
+ return await DeleteResult<ResultDto<dynamic>>(apiPath, input, checkStatus);
|
|
|
+ }
|
|
|
+
|
|
|
public async Task Login(AuthLoginInput input = null)
|
|
|
{
|
|
|
+ var authorization = Client.DefaultRequestHeaders.FirstOrDefault(a => a.Key == "Authorization");
|
|
|
+ if (authorization.Key != null)
|
|
|
+ {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
if (input == null && _appConfig.VarifyCode.Enable)
|
|
|
{
|
|
|
var res = await _authService.GetVerifyCodeAsync("") as IResponseOutput<AuthGetVerifyCodeOutput>;
|
|
@@ -60,6 +139,7 @@ namespace Admin.Core.Tests.Controller
|
|
|
var content = await result.Content.ReadAsStringAsync();
|
|
|
var jObject = JsonConvert.DeserializeObject<JObject>(content);
|
|
|
var token = jObject["data"]["token"];
|
|
|
+
|
|
|
Client.DefaultRequestHeaders.Add("Authorization", $"Bearer {token}");
|
|
|
}
|
|
|
|