Skip to content

Commit 05ee326

Browse files
committed
- fix tests localstack
1 parent ebd507e commit 05ee326

File tree

2 files changed

+20
-17
lines changed

2 files changed

+20
-17
lines changed

tests/SourceFlow.Cloud.AWS.Tests/TestHelpers/AwsTestEnvironment.cs

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,21 +20,24 @@ public class AwsTestEnvironment : IAwsTestEnvironment
2020
{
2121
private readonly AwsTestConfiguration _configuration;
2222
private readonly ILocalStackManager? _localStackManager;
23-
private readonly IAwsResourceManager _resourceManager;
23+
private IAwsResourceManager? _resourceManager;
2424
private readonly ILogger<AwsTestEnvironment> _logger;
2525
private bool _disposed;
26-
26+
2727
public AwsTestEnvironment(
2828
AwsTestConfiguration configuration,
2929
ILocalStackManager? localStackManager,
30-
IAwsResourceManager resourceManager,
30+
IAwsResourceManager? resourceManager,
3131
ILogger<AwsTestEnvironment> logger)
3232
{
3333
_configuration = configuration ?? throw new ArgumentNullException(nameof(configuration));
3434
_localStackManager = localStackManager;
35-
_resourceManager = resourceManager ?? throw new ArgumentNullException(nameof(resourceManager));
35+
_resourceManager = resourceManager;
3636
_logger = logger ?? throw new ArgumentNullException(nameof(logger));
3737
}
38+
39+
internal void SetResourceManager(IAwsResourceManager resourceManager) =>
40+
_resourceManager = resourceManager ?? throw new ArgumentNullException(nameof(resourceManager));
3841

3942
/// <inheritdoc />
4043
public IAmazonSQS SqsClient { get; private set; } = null!;
@@ -117,7 +120,8 @@ public IServiceCollection CreateTestServices()
117120
services.AddSingleton(_configuration);
118121

119122
// Add resource manager
120-
services.AddSingleton(_resourceManager);
123+
if (_resourceManager != null)
124+
services.AddSingleton(_resourceManager);
121125

122126
return services;
123127
}

tests/SourceFlow.Cloud.AWS.Tests/TestHelpers/AwsTestEnvironmentFactory.cs

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -132,21 +132,20 @@ public static async Task<IAwsTestEnvironment> CreateEnvironmentAsync(AwsTestConf
132132
await localStackManager.StartAsync(configuration.LocalStack);
133133
}
134134

135-
// Add resource manager
136-
services.AddTransient<IAwsResourceManager, AwsResourceManager>();
137-
138-
// Build service provider
135+
// Build service provider (for logging only - AwsResourceManager is created after AwsTestEnvironment
136+
// to break the circular dependency: AwsTestEnvironment → AwsResourceManager → IAwsTestEnvironment)
139137
var finalServiceProvider = services.BuildServiceProvider();
140-
141-
// Create resource manager
138+
142139
var logger = finalServiceProvider.GetRequiredService<ILogger<AwsTestEnvironment>>();
143-
var resourceManager = finalServiceProvider.GetRequiredService<IAwsResourceManager>();
144-
145-
// Create test environment
146-
var testEnvironment = new AwsTestEnvironment(configuration, localStackManager, resourceManager, logger);
147-
148-
// Initialize the environment
140+
var resourceManagerLogger = finalServiceProvider.GetRequiredService<ILogger<AwsResourceManager>>();
141+
142+
// Phase 1: create environment without resource manager, initialize AWS clients
143+
var testEnvironment = new AwsTestEnvironment(configuration, localStackManager, null, logger);
149144
await testEnvironment.InitializeAsync();
145+
146+
// Phase 2: create resource manager (environment now has AWS clients), wire back
147+
var resourceManager = new AwsResourceManager(testEnvironment, resourceManagerLogger);
148+
testEnvironment.SetResourceManager(resourceManager);
150149

151150
return testEnvironment;
152151
}

0 commit comments

Comments
 (0)