lightweight variant (#1)
Reviewed-on: #1 Co-authored-by: Aleksandr Neychev <alexnejchev73@gmail.com>
This commit was merged in pull request #1.
This commit is contained in:
@@ -0,0 +1,40 @@
|
||||
using System.Net;
|
||||
using System.Text;
|
||||
|
||||
namespace CursorLang.Tests.Shared;
|
||||
|
||||
/// <summary>
|
||||
/// The network as the test writes it: the answer is decided here rather than
|
||||
/// by a repository somewhere.
|
||||
/// </summary>
|
||||
public sealed class FakeHttpHandler : HttpMessageHandler
|
||||
{
|
||||
private readonly Func<HttpRequestMessage, HttpResponseMessage> _reply;
|
||||
|
||||
public FakeHttpHandler(Func<HttpRequestMessage, HttpResponseMessage> reply) => _reply = reply;
|
||||
|
||||
public List<HttpRequestMessage> Requests { get; } = [];
|
||||
|
||||
public static FakeHttpHandler Json(string json) => new(_ => new HttpResponseMessage(HttpStatusCode.OK)
|
||||
{
|
||||
Content = new StringContent(json, Encoding.UTF8, "application/json"),
|
||||
});
|
||||
|
||||
public static FakeHttpHandler Status(HttpStatusCode status) =>
|
||||
new(_ => new HttpResponseMessage(status));
|
||||
|
||||
public static FakeHttpHandler Bytes(byte[] content) => new(_ => new HttpResponseMessage(HttpStatusCode.OK)
|
||||
{
|
||||
Content = new ByteArrayContent(content),
|
||||
});
|
||||
|
||||
public HttpClient CreateClient() => new(this);
|
||||
|
||||
protected override Task<HttpResponseMessage> SendAsync(
|
||||
HttpRequestMessage request,
|
||||
CancellationToken cancellationToken)
|
||||
{
|
||||
Requests.Add(request);
|
||||
return Task.FromResult(_reply(request));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user