package test import ( "strconv" "time" ) // TestConfig implements the ConfigProvider interface for testing type TestConfig struct { values map[string]string } func (c *TestConfig) GetString(key string) string { return c.values[key] } func (c *TestConfig) GetInt(key string) int { if value, exists := c.values[key]; exists { if intVal, err := strconv.Atoi(value); err == nil { return intVal } } return 0 } func (c *TestConfig) GetBool(key string) bool { if value, exists := c.values[key]; exists { if boolVal, err := strconv.ParseBool(value); err == nil { return boolVal } } return false } func (c *TestConfig) GetDuration(key string) time.Duration { if value, exists := c.values[key]; exists { if duration, err := time.ParseDuration(value); err == nil { return duration } } return 0 } func (c *TestConfig) GetStringSlice(key string) []string { if value, exists := c.values[key]; exists { if value == "" { return []string{} } // Simple split by comma for testing return []string{value} } return []string{} } func (c *TestConfig) IsSet(key string) bool { _, exists := c.values[key] return exists } func (c *TestConfig) Validate() error { return nil // Skip validation for tests } func (c *TestConfig) GetDatabaseDSN() string { return "host=" + c.GetString("DB_HOST") + " port=" + c.GetString("DB_PORT") + " user=" + c.GetString("DB_USER") + " password=" + c.GetString("DB_PASSWORD") + " dbname=" + c.GetString("DB_NAME") + " sslmode=" + c.GetString("DB_SSLMODE") } func (c *TestConfig) GetServerAddress() string { return c.GetString("SERVER_HOST") + ":" + c.GetString("SERVER_PORT") } func (c *TestConfig) GetMetricsAddress() string { return c.GetString("SERVER_HOST") + ":9090" } func (c *TestConfig) IsDevelopment() bool { return c.GetString("APP_ENV") == "test" || c.GetString("APP_ENV") == "development" } func (c *TestConfig) IsProduction() bool { return c.GetString("APP_ENV") == "production" } // NewTestConfig creates a test configuration with default values func NewTestConfig() *TestConfig { return &TestConfig{ values: map[string]string{ "DB_HOST": "localhost", "DB_PORT": "5432", "DB_USER": "kms_user", "DB_PASSWORD": "kms_password", "DB_NAME": "kms_db", "DB_SSLMODE": "disable", "SERVER_HOST": "localhost", "SERVER_PORT": "8080", "APP_ENV": "test", }, } }