From b10fc12ba9b6331faea71e94ad00c643e3d07e0e Mon Sep 17 00:00:00 2001 From: Shane Krueger Date: Thu, 9 Jul 2026 11:31:54 -0400 Subject: [PATCH] Add test for request decompression --- .../Middleware/CompressionTests.cs | 49 +++++++++++++++++++ 1 file changed, 49 insertions(+) diff --git a/tests/Transports.AspNetCore.Tests/Middleware/CompressionTests.cs b/tests/Transports.AspNetCore.Tests/Middleware/CompressionTests.cs index bcaf1258..9b28cbda 100644 --- a/tests/Transports.AspNetCore.Tests/Middleware/CompressionTests.cs +++ b/tests/Transports.AspNetCore.Tests/Middleware/CompressionTests.cs @@ -62,6 +62,55 @@ public class Query { public static string Hello => "world"; } + +#if NET7_0_OR_GREATER + [Fact] + public async Task RequestDecompression_Supported() + { + // Arrange + var hostBuilder = new WebHostBuilder(); + hostBuilder.ConfigureServices(services => + { + services.AddGraphQL(b => b + .AddAutoSchema() + .AddSystemTextJson()); + services.AddRouting(); + services.AddRequestDecompression(); + }); + hostBuilder.Configure(app => + { + app.UseRequestDecompression(); + app.UseGraphQL(); + }); + + using var server = new TestServer(hostBuilder); + using var client = server.CreateClient(); + + // Act + using var request = new HttpRequestMessage(HttpMethod.Post, "/graphql"); + var originalContent = "{hello}"; + var compressedContentStream = new MemoryStream(); + using (var gzipStream = new GZipStream(compressedContentStream, CompressionMode.Compress, true)) + { + using var writer = new StreamWriter(gzipStream); + writer.Write(originalContent); + } + compressedContentStream.Seek(0, SeekOrigin.Begin); + request.Content = new StreamContent(compressedContentStream); + request.Content.Headers.ContentType = new MediaTypeHeaderValue("application/graphql"); + request.Content.Headers.ContentEncoding.Add("gzip"); + + using var response = await client.SendAsync(request); + + // Assert + response.EnsureSuccessStatusCode(); + + // verify content + var responseContent = await response.Content.ReadAsStringAsync(); + + responseContent.ShouldBe("""{"data":{"hello":"world"}}"""); + } +#endif } #endif