package cli import ( "os" "path/filepath" "testing" "git.eeqj.de/sneak/secret/internal/secret" "github.com/spf13/afero" ) func TestCLIInstanceStateDir(t *testing.T) { // Test the CLI instance state directory functionality fs := afero.NewMemMapFs() // Create a test state directory testStateDir := "/test-state-dir" cli := NewCLIInstanceWithStateDir(fs, testStateDir) if cli.GetStateDir() != testStateDir { t.Errorf("Expected state directory %q, got %q", testStateDir, cli.GetStateDir()) } } func TestCLIInstanceWithFs(t *testing.T) { // Test creating CLI instance with custom filesystem fs := afero.NewMemMapFs() cli := NewCLIInstanceWithFs(fs) // The state directory should be determined automatically stateDir := cli.GetStateDir() if stateDir == "" { t.Error("Expected non-empty state directory") } } func TestDetermineStateDir(t *testing.T) { // Test the determineStateDir function from the secret package // Save original environment and restore it after test originalStateDir := os.Getenv(secret.EnvStateDir) defer func() { if originalStateDir == "" { os.Unsetenv(secret.EnvStateDir) } else { os.Setenv(secret.EnvStateDir, originalStateDir) } }() // Test with environment variable set testEnvDir := "/test-env-dir" os.Setenv(secret.EnvStateDir, testEnvDir) stateDir := secret.DetermineStateDir("") if stateDir != testEnvDir { t.Errorf("Expected state directory %q from environment, got %q", testEnvDir, stateDir) } // Test with custom config dir os.Unsetenv(secret.EnvStateDir) customConfigDir := "/custom-config" stateDir = secret.DetermineStateDir(customConfigDir) expectedDir := filepath.Join(customConfigDir, secret.AppID) if stateDir != expectedDir { t.Errorf("Expected state directory %q with custom config, got %q", expectedDir, stateDir) } }