diff --git a/test/integration/Elsa.Alterations.IntegrationTests/AlterationsApiTimestampFilterTests.cs b/test/integration/Elsa.Alterations.IntegrationTests/AlterationsApiTimestampFilterTests.cs index f3b714770..92fd770cc 100644 --- a/test/integration/Elsa.Alterations.IntegrationTests/AlterationsApiTimestampFilterTests.cs +++ b/test/integration/Elsa.Alterations.IntegrationTests/AlterationsApiTimestampFilterTests.cs @@ -29,43 +29,61 @@ public class AlterationsApiTimestampFilterTests : IAsyncLifetime _wasSecurityEnabled = EndpointSecurityOptions.SecurityIsEnabled; EndpointSecurityOptions.SecurityIsEnabled = false; - var builder = WebApplication.CreateSlimBuilder(); - builder.WebHost.UseTestServer(); - - builder.Services.AddFastEndpoints(o => + try { - o.Assemblies = [typeof(DryRun).Assembly]; - o.Filter = endpointType => endpointType == typeof(DryRun) || endpointType == typeof(SubmitEndpoint); - }); - builder.Services.AddSingleton(Substitute.For()); - builder.Services.AddSingleton(Substitute.For()); - builder.Services.AddSingleton(Substitute.For()); - builder.Services.AddSingleton(Substitute.For()); - builder.Services.AddSingleton(Substitute.For()); - builder.Services.AddSingleton(Substitute.For()); - builder.Services.AddSingleton(Substitute.For()); - builder.Services.AddSingleton(Substitute.For()); - builder.Services.AddSingleton(Substitute.For()); - builder.Services.AddSingleton(Substitute.For()); - builder.Services.AddLogging(); + var builder = WebApplication.CreateSlimBuilder(); + builder.WebHost.UseTestServer(); - _app = builder.Build(); - _app.UseFastEndpoints(); + builder.Services.AddFastEndpoints(o => + { + o.Assemblies = [typeof(DryRun).Assembly]; + o.Filter = endpointType => endpointType == typeof(DryRun) || endpointType == typeof(SubmitEndpoint); + }); + builder.Services.AddSingleton(Substitute.For()); + builder.Services.AddSingleton(Substitute.For()); + builder.Services.AddSingleton(Substitute.For()); + builder.Services.AddSingleton(Substitute.For()); + builder.Services.AddSingleton(Substitute.For()); + builder.Services.AddSingleton(Substitute.For()); + builder.Services.AddSingleton(Substitute.For()); + builder.Services.AddSingleton(Substitute.For()); + builder.Services.AddSingleton(Substitute.For()); + builder.Services.AddSingleton(Substitute.For()); + builder.Services.AddLogging(); - await _app.StartAsync(); - _httpClient = _app.GetTestClient(); + _app = builder.Build(); + _app.UseFastEndpoints(); + + await _app.StartAsync(); + _httpClient = _app.GetTestClient(); + } + catch + { + EndpointSecurityOptions.SecurityIsEnabled = _wasSecurityEnabled; + await DisposeAppAsync(false); + throw; + } } public async Task DisposeAsync() { EndpointSecurityOptions.SecurityIsEnabled = _wasSecurityEnabled; + await DisposeAppAsync(true); + } + + private async Task DisposeAppAsync(bool stopApp) + { _httpClient?.Dispose(); + _httpClient = null; if (_app == null) return; - await _app.StopAsync(); + if (stopApp) + await _app.StopAsync(); + await _app.DisposeAsync(); + _app = null; } [Theory] diff --git a/test/integration/Elsa.Alterations.IntegrationTests/WorkflowInstanceFinderTimestampFilterTests.cs b/test/integration/Elsa.Alterations.IntegrationTests/WorkflowInstanceFinderTimestampFilterTests.cs index 85136a420..a38d9b707 100644 --- a/test/integration/Elsa.Alterations.IntegrationTests/WorkflowInstanceFinderTimestampFilterTests.cs +++ b/test/integration/Elsa.Alterations.IntegrationTests/WorkflowInstanceFinderTimestampFilterTests.cs @@ -13,19 +13,25 @@ using Xunit.Abstractions; namespace Elsa.Alterations.IntegrationTests; -public class WorkflowInstanceFinderTimestampFilterTests +public class WorkflowInstanceFinderTimestampFilterTests : IDisposable { + private readonly IServiceProvider _services; private readonly IWorkflowInstanceFinder _workflowInstanceFinder; private readonly IWorkflowInstanceStore _workflowInstanceStore; public WorkflowInstanceFinderTimestampFilterTests(ITestOutputHelper testOutputHelper) { - var services = new TestApplicationBuilder(testOutputHelper) + _services = new TestApplicationBuilder(testOutputHelper) .ConfigureElsa(elsa => elsa.UseAlterations()) .Build(); - _workflowInstanceFinder = services.GetRequiredService(); - _workflowInstanceStore = services.GetRequiredService(); + _workflowInstanceFinder = _services.GetRequiredService(); + _workflowInstanceStore = _services.GetRequiredService(); + } + + public void Dispose() + { + (_services as IDisposable)?.Dispose(); } [Fact]