using Campaign_Tracker.Server.Configuration; using Microsoft.Extensions.Configuration; namespace Campaign_Tracker.Server.Tests; public sealed class DotEnvConfigurationTests : IDisposable { private readonly string _rootPath; private readonly string _serverPath; public DotEnvConfigurationTests() { _rootPath = Path.Combine(Path.GetTempPath(), $"campaign-tracker-env-{Guid.NewGuid():N}"); _serverPath = Path.Combine(_rootPath, "Campaign_Tracker.Server"); Directory.CreateDirectory(_serverPath); } [Fact] public void Load_OverridesAppsettingsPlaceholderWithRootEnvValue() { File.WriteAllText( Path.Combine(_rootPath, ".env"), "Keycloak__ClientSecret=secret-from-env"); var configuration = new ConfigurationManager(); configuration.AddInMemoryCollection(new Dictionary { ["Keycloak:ClientSecret"] = "REPLACE-ON-SERVER", }); DotEnvConfiguration.Load(configuration, _serverPath); Assert.Equal("secret-from-env", configuration["Keycloak:ClientSecret"]); } public void Dispose() { if (Directory.Exists(_rootPath)) { Directory.Delete(_rootPath, recursive: true); } } }