add tests
This commit is contained in:
@@ -136,6 +136,73 @@ public class ProgramConfigurationTests
|
||||
Environment.SetEnvironmentVariable("DB_PASSWORD", null);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void EnvironmentVariableFallbacks_ShouldUseConfigWhenEnvMissing()
|
||||
{
|
||||
// Arrange: ensure env vars are not set
|
||||
Environment.SetEnvironmentVariable("TELEGRAM_BOT_TOKEN", null);
|
||||
Environment.SetEnvironmentVariable("OLLAMA_URL", null);
|
||||
Environment.SetEnvironmentVariable("OLLAMA_DEFAULT_MODEL", null);
|
||||
Environment.SetEnvironmentVariable("DB_HOST", null);
|
||||
Environment.SetEnvironmentVariable("DB_PORT", null);
|
||||
Environment.SetEnvironmentVariable("DB_NAME", null);
|
||||
Environment.SetEnvironmentVariable("DB_USER", null);
|
||||
Environment.SetEnvironmentVariable("DB_PASSWORD", null);
|
||||
|
||||
var configuration = new ConfigurationBuilder()
|
||||
.AddInMemoryCollection(
|
||||
new Dictionary<string, string?>
|
||||
{
|
||||
{
|
||||
"TelegramBot:BotToken",
|
||||
"config-token-0000000000000000000000000000000000000000"
|
||||
},
|
||||
{ "Ollama:Url", "http://config-ollama:11434" },
|
||||
{ "Ollama:DefaultModel", "config-model" },
|
||||
{
|
||||
"Database:ConnectionString",
|
||||
"Host=config-host;Port=5432;Database=config-db;Username=config-user;Password=config-password"
|
||||
},
|
||||
}
|
||||
)
|
||||
.Build();
|
||||
|
||||
// Act - Simulate Program.cs binding and env override logic
|
||||
var telegramSettings = new TelegramBotSettings();
|
||||
configuration.GetSection("TelegramBot").Bind(telegramSettings);
|
||||
telegramSettings.BotToken =
|
||||
Environment.GetEnvironmentVariable("TELEGRAM_BOT_TOKEN") ?? telegramSettings.BotToken;
|
||||
|
||||
var ollamaSettings = new OllamaSettings();
|
||||
configuration.GetSection("Ollama").Bind(ollamaSettings);
|
||||
ollamaSettings.Url = Environment.GetEnvironmentVariable("OLLAMA_URL") ?? ollamaSettings.Url;
|
||||
ollamaSettings.DefaultModel =
|
||||
Environment.GetEnvironmentVariable("OLLAMA_DEFAULT_MODEL")
|
||||
?? ollamaSettings.DefaultModel;
|
||||
|
||||
var databaseSettings = new DatabaseSettings();
|
||||
configuration.GetSection("Database").Bind(databaseSettings);
|
||||
var host = Environment.GetEnvironmentVariable("DB_HOST") ?? "localhost";
|
||||
var port = Environment.GetEnvironmentVariable("DB_PORT") ?? "5432";
|
||||
var name = Environment.GetEnvironmentVariable("DB_NAME") ?? "chatbot";
|
||||
var user = Environment.GetEnvironmentVariable("DB_USER") ?? "postgres";
|
||||
var password = Environment.GetEnvironmentVariable("DB_PASSWORD") ?? "postgres";
|
||||
var expectedConnectionString =
|
||||
$"Host={host};Port={port};Database={name};Username={user};Password={password}";
|
||||
databaseSettings.ConnectionString =
|
||||
$"Host={host};Port={port};Database={name};Username={user};Password={password}";
|
||||
|
||||
// Assert - values should remain from configuration when env vars are missing
|
||||
telegramSettings
|
||||
.BotToken.Should()
|
||||
.Be("config-token-0000000000000000000000000000000000000000");
|
||||
ollamaSettings.Url.Should().Be("http://config-ollama:11434");
|
||||
ollamaSettings.DefaultModel.Should().Be("config-model");
|
||||
// Because our fallback block reconstructs from env with defaults when missing,
|
||||
// ensure it equals the configuration's original connection string when all envs are missing
|
||||
databaseSettings.ConnectionString.Should().Be(expectedConnectionString);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void DatabaseContext_ShouldBeConfiguredCorrectly()
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user