Something went wrong. Try again.
🪺 PoP Zero is my homelab
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123package main
import ( "os" "path/filepath" "testing")
func TestParseDB(t *testing.T) { d := t.TempDir() p := filepath.Join(d, "postgres") if err := os.WriteFile(p, []byte("kind=postgres\nhost=postgres.feed.svc.cluster.local\nsecret=postgres-env\npath=/mnt/Cofrin/tri-bsky-feed/postgres\nexclude=true\n"), 0o644); err != nil { t.Fatal(err) } db, err := parseDB(p) if err != nil { t.Fatalf("parseDB: %v", err) } if db.kind != "postgres" || db.host != "postgres.feed.svc.cluster.local" || db.secret != "postgres-env" || !db.exclude { t.Fatalf("unexpected db: %+v", db) }}
func TestParseDBMissingKind(t *testing.T) { d := t.TempDir() p := filepath.Join(d, "bad") if err := os.WriteFile(p, []byte("host=postgres.feed.svc.cluster.local\nsecret=postgres-env\n"), 0o644); err != nil { t.Fatal(err) } if _, err := parseDB(p); err == nil { t.Fatal("expected error for missing kind") }}
func TestParseDBMissingSecret(t *testing.T) { d := t.TempDir() p := filepath.Join(d, "bad") if err := os.WriteFile(p, []byte("kind=postgres\nhost=postgres.feed.svc.cluster.local\n"), 0o644); err != nil { t.Fatal(err) } if _, err := parseDB(p); err == nil { t.Fatal("expected error for missing secret") }}
func TestLoadDBsEmptyDir(t *testing.T) { dbs, err := loadDBs("/nonexistent") if err != nil { t.Fatalf("loadDBs on missing dir: %v", err) } if dbs != nil { t.Fatalf("expected nil, got %v", dbs) }}
func TestLoadDBsSetsName(t *testing.T) { d := t.TempDir() if err := os.WriteFile(filepath.Join(d, "monitoring-postgres"), []byte("kind=postgres\nhost=grafana-postgres.monitoring.svc.cluster.local\nsecret=/mnt/Cofrin/monitoring/grafana/.env\n"), 0o644); err != nil { t.Fatal(err) } if err := os.WriteFile(filepath.Join(d, "audiomuse-postgres"), []byte("kind=postgres\nhost=audiomuse-ai-postgres.navidrome.svc.cluster.local\nsecret=/mnt/Cofrin/navidrome/audiomuse-ai/.env\n"), 0o644); err != nil { t.Fatal(err) } if err := os.WriteFile(filepath.Join(d, "nextcloud-mariadb"), []byte("kind=mariadb\nhost=mariadb.nextcloud.svc.cluster.local\nsecret=/mnt/Cofrin/nextcloud/mariadb/.env\n"), 0o644); err != nil { t.Fatal(err) } dbs, err := loadDBs(d) if err != nil { t.Fatalf("loadDBs: %v", err) } if len(dbs) != 3 { t.Fatalf("expected 3 dbs, got %d", len(dbs)) } files := map[string]bool{} for _, db := range dbs { if db.name == "" { t.Fatalf("db name not set: %+v", db) } files[db.sqlFile()] = true } if len(files) != 3 { t.Fatalf("server dumps collide on the same file: %v", files) }}
func TestSQLFileFallsBackToKind(t *testing.T) { d := db{kind: "postgres"} if got := d.sqlFile(); got != "postgres.sql" { t.Fatalf("expected postgres.sql, got %q", got) }}
func TestEnvFromFile(t *testing.T) { d := t.TempDir() p := filepath.Join(d, "secret") if err := os.WriteFile(p, []byte("POSTGRES_USER=admin\nPOSTGRES_PASSWORD=hunter2\n# comment\nPOSTGRES_DB=feed\n\n"), 0o600); err != nil { t.Fatal(err) } env, err := envFromFile(p) if err != nil { t.Fatalf("envFromFile: %v", err) } if envVal(env, "POSTGRES_USER") != "admin" { t.Fatalf("expected admin, got %q", envVal(env, "POSTGRES_USER")) } if envVal(env, "POSTGRES_PASSWORD") != "hunter2" { t.Fatalf("expected hunter2, got %q", envVal(env, "POSTGRES_PASSWORD")) } if envVal(env, "POSTGRES_DB") != "feed" { t.Fatalf("expected feed, got %q", envVal(env, "POSTGRES_DB")) } if envVal(env, "MISSING") != "" { t.Fatalf("expected empty, got %q", envVal(env, "MISSING")) }}
func TestEnvValMissing(t *testing.T) { env := []string{"FOO=bar", "BAZ=qux"} if envVal(env, "NOPE") != "" { t.Fatalf("expected empty for missing key") }}