package db import ( "path/filepath" "testing" ) func TestOpenAndMigrate(t *testing.T) { dir := t.TempDir() path := filepath.Join(dir, "test.db") database, err := Open(path) if err != nil { t.Fatalf("Open: %v", err) } defer func() { _ = database.Close() }() if err := Migrate(database); err != nil { t.Fatalf("Migrate: %v", err) } // Verify tables exist. tables := []string{"seal_config", "barrier_entries", "schema_migrations", "barrier_keys"} for _, table := range tables { var name string err := database.QueryRow( "SELECT name FROM sqlite_master WHERE type='table' AND name=?", table).Scan(&name) if err != nil { t.Errorf("table %q not found: %v", table, err) } } // Migration should be idempotent. if err := Migrate(database); err != nil { t.Fatalf("second Migrate: %v", err) } // Check migration version. var version int _ = database.QueryRow("SELECT MAX(version) FROM schema_migrations").Scan(&version) if version != 2 { t.Errorf("migration version: got %d, want 2", version) } }