using System.Net; using System.Net.Http; namespace ClaudeDo.Installer.Tests; internal sealed class FakeHttpMessageHandler : HttpMessageHandler { private readonly Func _handler; private readonly object _lock = new(); private readonly List _requests = new(); public FakeHttpMessageHandler(Func handler) { _handler = handler; } public FakeHttpMessageHandler(HttpStatusCode status, string body) : this(_ => new HttpResponseMessage(status) { Content = new StringContent(body) }) { } public IReadOnlyList Requests { get { lock (_lock) return _requests.ToArray(); } } protected override Task SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) { lock (_lock) _requests.Add(request); return Task.FromResult(_handler(request)); } }