This commit is contained in:
jimmy committed 2025-11-14 16:56:57 +08:00
1 parent 237cbd8788
commit ab3721912d
102 files changed
+7929 -20

No files matched your search

@@ -0,0 +1,54 @@
using System;
using System.Net;
using System.Net.Http;
using System.Threading.Tasks;
using Microsoft.Extensions.DependencyInjection;
using NetClient.Abstractions;
using NetClient.DependencyInjection;
using NetClient.Test.TestDoubles;
namespace NetClient.Test.Tests;
[TestClass]
public class NetClientDiTests
{
[TestMethod]
public async Task AddNetClient_TypedClient_Applies_Options_And_Handlers()
{
var services = new ServiceCollection();
services.AddSingleton<IAccessTokenProvider>(new StaticTokenProvider("token-123"));
TestHttpMessageHandler? capturedHandler = null;
var builder = services.AddNetClient(opt =>
{
opt.BaseAddress = new Uri("https://api.test");
opt.UseBearerToken = true;
opt.IncludeCorrelationId = true;
});
builder.ConfigurePrimaryHttpMessageHandler(() =>
{
capturedHandler = new TestHttpMessageHandler(req =>
{
// BaseAddress + Path combined
StringAssert.StartsWith(req.RequestUri!.AbsoluteUri, "https://api.test");
// Correlation header present
Assert.IsTrue(req.Headers.Contains("X-Correlation-Id"));
// Authorization applied
Assert.AreEqual("Bearer", req.Headers.Authorization!.Scheme);
Assert.AreEqual("token-123", req.Headers.Authorization!.Parameter);
return Task.FromResult(TestHttpMessageHandler.Text(HttpStatusCode.OK, "ok"));
});
return capturedHandler;
});
var sp = services.BuildServiceProvider();
var client = sp.GetRequiredService<IHttpClient>();
var result = await client.GetStringAsync("/ping");
Assert.AreEqual("ok", result);
Assert.IsNotNull(capturedHandler);
Assert.AreEqual(1, capturedHandler!.Calls);
}
}