using System.Collections.Generic;
using System.Threading.Tasks;
using Util.AspNetCore.Tests.Samples;
using Util.Http;
using Xunit;
namespace Util.AspNetCore.Tests.Http;
///
/// Http客户端测试 - Get操作
///
public partial class HttpClientServiceTest {
#region 测试初始化
///
/// Http客户端
///
private readonly IHttpClient _client;
///
/// 测试初始化
///
/// Http客户端
public HttpClientServiceTest( IHttpClient client ) {
_client = client;
}
#endregion
#region 基础测试
///
/// 测试调用Get方法
///
[Fact]
public async Task TestGet_1() {
var result = await _client.Get( "/api/test1" ).GetResultAsync();
Assert.Equal( "ok", result );
}
///
/// 测试调用Get方法 - 传递id
///
[Fact]
public async Task TestGet_2() {
var result = await _client.Get( "/api/test1/2" ).GetResultAsync();
Assert.Equal( "ok:2", result );
}
///
/// 测试调用Get方法 - 返回对象
///
[Fact]
public async Task TestGet_3() {
CustomerQuery query = new CustomerQuery { Code = "a", Name = "b" };
var result = await _client.Get>( "/api/test1/list", query ).GetResultAsync();
Assert.Equal( 2, result.Count );
Assert.Equal( "a", result[0].Code );
Assert.Equal( "b", result[1].Name );
}
#endregion
#region Header
///
/// 测试调用Get方法 - 设置请求头
///
[Fact]
public async Task TestGet_Header_1() {
var result = await _client.Get( "/api/test1/header" ).Header( "Authorization", "abc" ).GetResultAsync();
Assert.Equal( "ok:abc", result );
}
///
/// 测试调用Get方法 - 设置请求头 - 传入字典
///
[Fact]
public async Task TestGet_Header_2() {
var headers = new Dictionary { { "Authorization", "abc" } };
var result = await _client.Get( "/api/test1/header" ).Header( headers ).GetResultAsync();
Assert.Equal( "ok:abc", result );
}
#endregion
#region QueryString
///
/// 测试调用Get方法 - 发送query参数 - 硬编码
///
[Fact]
public async Task TestGet_QueryString_1() {
var result = await _client.Get( "/api/test1/query?code=9&name=a" ).GetResultAsync();
Assert.Equal( "code:9,name:a", result );
}
///
/// 测试调用Get方法 - 发送query参数
///
[Fact]
public async Task TestGet_QueryString_2() {
var result = await _client.Get( "/api/test1/query" ).QueryString( "code", "9" ).QueryString( "name", "a" ).GetResultAsync();
Assert.Equal( "code:9,name:a", result );
}
///
/// 测试调用Get方法 - 发送query参数 - 部分硬编码
///
[Fact]
public async Task TestGet_QueryString_3() {
var result = await _client.Get( "/api/test1/query?code=9" ).QueryString( "name", "a" ).GetResultAsync();
Assert.Equal( "code:9,name:a", result );
}
///
/// 测试调用Get方法 - 发送query参数 - 传入字典
///
[Fact]
public async Task TestGet_QueryString_4() {
var queryString = new Dictionary { { "code", "9" }, { "name", "a" } };
var result = await _client.Get( "/api/test1/query" ).QueryString( queryString ).GetResultAsync();
Assert.Equal( "code:9,name:a", result );
}
///
/// 测试调用Get方法 - 发送query参数 - 传入对象
///
[Fact]
public async Task TestGet_QueryString_5() {
var query = new CustomerQuery { Code = "9", Name = "a" };
var result = await _client.Get( "/api/test1/query" ).QueryString( query ).GetResultAsync();
Assert.Equal( "code:9,name:a", result );
}
///
/// 测试调用Get方法 - 发送query参数 - 使用Get重载方法传入参数
///
[Fact]
public async Task TestGet_QueryString_6() {
var query = new CustomerQuery { Code = "9", Name = "a" };
var result = await _client.Get( "/api/test1/query", query ).GetResultAsync();
Assert.Equal( "code:9,name:a", result );
}
#endregion
#region Cookie
///
/// 测试调用Get方法 - 设置cookie - 1个参数
///
[Fact]
public async Task TestGet_Cookie_1() {
var result = await _client.Get( "http://a.com/api/test1/cookie" ).Cookie( "code", "a" ).GetResultAsync();
Assert.Equal( "code:a,name:", result );
}
///
/// 测试调用Get方法 - 设置cookie - 2个参数
///
[Fact]
public async Task TestGet_Cookie_2() {
var result = await _client.Get( "/api/test1/cookie" ).Cookie( "code", "a" ).Cookie( "name", "b" ).GetResultAsync();
Assert.Equal( "code:a,name:b", result );
}
#endregion
}