From 1cffd6fbd5fdf6b1f079a15d98a2145345cc3ef9 Mon Sep 17 00:00:00 2001 From: Glen Date: Mon, 5 Oct 2026 11:32:13 +0200 Subject: [PATCH] Fix test servers staying alive until their test class ends --- .../AuthorizationTests.cs | 4 +++- .../AspNetCore.Tests.Utilities/ServerTestBase.cs | 14 +++++++++++++- .../TestServerFactory.cs | 9 ++++++++- 3 files changed, 24 insertions(+), 3 deletions(-) diff --git a/src/HotChocolate/AspNetCore/test/AspNetCore.Authorization.Opa.Tests/AuthorizationTests.cs b/src/HotChocolate/AspNetCore/test/AspNetCore.Authorization.Opa.Tests/AuthorizationTests.cs index 966c087a222..9a4113fd537 100644 --- a/src/HotChocolate/AspNetCore/test/AspNetCore.Authorization.Opa.Tests/AuthorizationTests.cs +++ b/src/HotChocolate/AspNetCore/test/AspNetCore.Authorization.Opa.Tests/AuthorizationTests.cs @@ -203,8 +203,10 @@ private TestServer CreateTestServer( }); } - public async ValueTask DisposeAsync() + public override async ValueTask DisposeAsync() { + await base.DisposeAsync(); + if (_opaHandle is not null) { await _opaHandle.DisposeAsync(); diff --git a/src/HotChocolate/AspNetCore/test/AspNetCore.Tests.Utilities/ServerTestBase.cs b/src/HotChocolate/AspNetCore/test/AspNetCore.Tests.Utilities/ServerTestBase.cs index 70a0755cda5..82b50306dff 100644 --- a/src/HotChocolate/AspNetCore/test/AspNetCore.Tests.Utilities/ServerTestBase.cs +++ b/src/HotChocolate/AspNetCore/test/AspNetCore.Tests.Utilities/ServerTestBase.cs @@ -12,7 +12,9 @@ namespace HotChocolate.AspNetCore.Tests.Utilities; -public abstract class ServerTestBase(TestServerFactory serverFactory) : IClassFixture +public abstract class ServerTestBase(TestServerFactory serverFactory) + : IClassFixture + , IAsyncDisposable { protected TestServerFactory ServerFactory { get; } = serverFactory; @@ -164,6 +166,16 @@ protected virtual TestServer CreateServer( .UseEndpoints(endpoints => configureConventions?.Invoke(endpoints))); } + /// + /// Disposes the servers the current test created. + /// + public virtual ValueTask DisposeAsync() + { + ServerFactory.DisposeServers(); + + return ValueTask.CompletedTask; + } + [DirectiveType(DirectiveLocation.Subscription)] public class Foo { diff --git a/src/HotChocolate/AspNetCore/test/AspNetCore.Tests.Utilities/TestServerFactory.cs b/src/HotChocolate/AspNetCore/test/AspNetCore.Tests.Utilities/TestServerFactory.cs index d7a64ab92bc..794ccb00d90 100644 --- a/src/HotChocolate/AspNetCore/test/AspNetCore.Tests.Utilities/TestServerFactory.cs +++ b/src/HotChocolate/AspNetCore/test/AspNetCore.Tests.Utilities/TestServerFactory.cs @@ -26,11 +26,18 @@ public TestServer Create( return server; } - public void Dispose() + public void Dispose() => DisposeServers(); + + /// + /// Disposes and releases every server this factory has created so far. + /// + public void DisposeServers() { foreach (var testServer in _instances) { testServer.Dispose(); } + + _instances.Clear(); } }