|  | @@ -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)
 | 
	
		
			
				|  |  |          {
 | 
	
		
			
				|  |  | +            // HttpContent httpContent = new StringContent(JsonConvert.SerializeObject(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}");
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |  
 |