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,18 @@
using System.Threading;
using System.Threading.Tasks;
using NetClient.Abstractions;
namespace NetClient.Test.TestDoubles;
public sealed class StaticTokenProvider : IAccessTokenProvider
{
private readonly string? _token;
public StaticTokenProvider(string? token)
{
_token = token;
}
public Task<string?> GetTokenAsync(CancellationToken cancellationToken = default) => Task.FromResult(_token);
}
@@ -0,0 +1,32 @@
using System;
using System.Net;
using System.Net.Http;
using System.Threading;
using System.Threading.Tasks;
namespace NetClient.Test.TestDoubles;
public sealed class TestHttpMessageHandler : HttpMessageHandler
{
private readonly Func<HttpRequestMessage, Task<HttpResponseMessage>> _handler;
private int _calls;
public int Calls => _calls;
public TestHttpMessageHandler(Func<HttpRequestMessage, Task<HttpResponseMessage>> handler)
{
_handler = handler;
}
protected override async Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
{
Interlocked.Increment(ref _calls);
return await _handler(request);
}
public static HttpResponseMessage Json(HttpStatusCode code, string json)
=> new(code) { Content = new StringContent(json, System.Text.Encoding.UTF8, "application/json") };
public static HttpResponseMessage Text(HttpStatusCode code, string text)
=> new(code) { Content = new StringContent(text) };
}
@@ -0,0 +1,25 @@
using System.IO;
using System.Text.Json;
using System.Threading;
using System.Threading.Tasks;
using NetClient.Abstractions;
namespace NetClient.Test.TestDoubles;
public sealed class TestJsonSerializer : IHttpContentSerializer
{
private readonly JsonSerializerOptions _options;
public TestJsonSerializer(JsonSerializerOptions? options = null)
{
_options = options ?? new JsonSerializerOptions(JsonSerializerDefaults.Web);
}
public string ContentType => "application/json";
public Task SerializeAsync<T>(Stream stream, T? value, CancellationToken cancellationToken = default)
=> JsonSerializer.SerializeAsync(stream, value, _options, cancellationToken);
public Task<T?> DeserializeAsync<T>(Stream stream, CancellationToken cancellationToken = default)
=> JsonSerializer.DeserializeAsync<T>(stream, _options, cancellationToken).AsTask();
}