Files
jsmr/JSMR.Tests/Http/FakeHttpMessageHandler.cs
Brian Bicknell d9e421178f
All checks were successful
ci / build-test (push) Successful in 2m21s
ci / publish-image (push) Successful in 2m19s
Added inital job entity and services. Added released works API integration.
2026-03-27 01:32:39 -04:00

60 lines
1.9 KiB
C#

using Microsoft.AspNetCore.WebUtilities;
using Shouldly;
namespace JSMR.Tests.Http;
internal sealed class FakeHttpMessageHandler(Func<HttpRequestMessage, HttpResponseMessage> handler) : HttpMessageHandler
{
public List<HttpRequestMessage> Requests { get; } = [];
protected override Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
{
Requests.Add(request);
return Task.FromResult(handler(request));
}
}
public static class HttpRequestMessageAssertions
{
public static void ShouldHavePath(this HttpRequestMessage request, string expectedPath)
{
request.RequestUri.ShouldNotBeNull();
request.RequestUri!.AbsolutePath.ShouldBe(expectedPath);
}
public static void ShouldHaveQueryParam(this HttpRequestMessage request, string key, string expectedValue)
{
request.RequestUri.ShouldNotBeNull();
var query = QueryHelpers.ParseQuery(request.RequestUri!.Query);
query[key].ToString().ShouldBe(expectedValue);
}
}
//internal sealed class FakeHttpMessageHandler : HttpMessageHandler
//{
// private readonly Func<HttpRequestMessage, CancellationToken, HttpResponseMessage> _handler;
// public List<HttpRequestMessage> Requests { get; } = [];
// public FakeHttpMessageHandler(Func<HttpRequestMessage, CancellationToken, HttpResponseMessage> handler)
// {
// _handler = handler;
// }
// public FakeHttpMessageHandler(Func<HttpRequestMessage, HttpResponseMessage> handler)
// : this((request, _) => handler(request))
// {
// }
// protected override Task<HttpResponseMessage> SendAsync(
// HttpRequestMessage request,
// CancellationToken cancellationToken)
// {
// Requests.Add(request);
// HttpResponseMessage response = _handler(request, cancellationToken);
// return Task.FromResult(response);
// }
//}