package config import ( "os" "path/filepath" "testing" ) func TestMain(m *testing.M) { // Set up test environment testConfigPath := filepath.Join("..", "..", "test", "config.yaml") if absPath, err := filepath.Abs(testConfigPath); err == nil { _ = os.Setenv("VAULTIK_CONFIG", absPath) } code := m.Run() os.Exit(code) } // TestConfigLoad ensures the config package can be imported and basic functionality works func TestConfigLoad(t *testing.T) { // Use the test config file configPath := os.Getenv("VAULTIK_CONFIG") if configPath == "" { t.Fatal("VAULTIK_CONFIG environment variable not set") } // Test loading the config cfg, err := Load(configPath) if err != nil { t.Fatalf("Failed to load config: %v", err) } // Basic validation if cfg.AgeRecipient != "age1xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" { t.Errorf("Expected age recipient to be set, got '%s'", cfg.AgeRecipient) } if len(cfg.SourceDirs) != 2 { t.Errorf("Expected 2 source dirs, got %d", len(cfg.SourceDirs)) } if cfg.SourceDirs[0] != "/tmp/vaultik-test-source" { t.Errorf("Expected first source dir to be '/tmp/vaultik-test-source', got '%s'", cfg.SourceDirs[0]) } if cfg.S3.Bucket != "vaultik-test-bucket" { t.Errorf("Expected S3 bucket to be 'vaultik-test-bucket', got '%s'", cfg.S3.Bucket) } if cfg.Hostname != "test-host" { t.Errorf("Expected hostname to be 'test-host', got '%s'", cfg.Hostname) } } // TestConfigFromEnv tests loading config path from environment variable func TestConfigFromEnv(t *testing.T) { configPath := os.Getenv("VAULTIK_CONFIG") if configPath == "" { t.Skip("VAULTIK_CONFIG not set") } // Verify the file exists if _, err := os.Stat(configPath); os.IsNotExist(err) { t.Errorf("Config file does not exist at path from VAULTIK_CONFIG: %s", configPath) } }