| File: Helpers\SequenceHttpMessageHandler.cs | Web Access |
| Project: src\tests\Aspire.Hosting.Foundry.Tests\Aspire.Hosting.Foundry.Tests.csproj (Aspire.Hosting.Foundry.Tests) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. namespace Aspire.Hosting.Foundry.Tests; internal sealed class SequenceHttpMessageHandler(params HttpResponseMessage[] responses) : HttpMessageHandler { private readonly Queue<HttpResponseMessage> _responses = new(responses); public List<HttpRequestSnapshot> Requests { get; } = []; protected override async Task<HttpResponseMessage> SendAsync( HttpRequestMessage request, CancellationToken cancellationToken) { Requests.Add(new( await request.Content!.ReadAsStringAsync(cancellationToken), request.Headers.TryGetValues("Mcp-Session-Id", out var sessionIds) ? sessionIds.Single() : null, request.Headers.TryGetValues("MCP-Protocol-Version", out var protocolVersions) ? protocolVersions.Single() : null)); return _responses.Dequeue(); } protected override void Dispose(bool disposing) { if (disposing) { while (_responses.TryDequeue(out var response)) { response.Dispose(); } } base.Dispose(disposing); } internal sealed record HttpRequestSnapshot( string Content, string? SessionId, string? ProtocolVersion); }