From cfc0d34a584254a9ed76620951c810771aff6f3b Mon Sep 17 00:00:00 2001 From: Alexander Hunt Date: Sun, 21 Jun 2026 12:43:31 -0700 Subject: STUFF --- database/dns_test.go | 62 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 database/dns_test.go (limited to 'database/dns_test.go') diff --git a/database/dns_test.go b/database/dns_test.go new file mode 100644 index 0000000..a893021 --- /dev/null +++ b/database/dns_test.go @@ -0,0 +1,62 @@ +package database + +import ( + "database/sql" + "path/filepath" + "testing" +) + +func dnsTestDB(t *testing.T) *sql.DB { + t.Helper() + db, err := sql.Open("sqlite3", filepath.Join(t.TempDir(), "dns.db")) + if err != nil { + t.Fatal(err) + } + t.Cleanup(func() { db.Close() }) + if _, err := Migrate(db); err != nil { + t.Fatal(err) + } + return db +} + +func TestRenameUserDNSDomain(t *testing.T) { + db := dnsTestDB(t) + if _, err := CreateUser(db, "u1", "tux"); err != nil { + t.Fatal(err) + } + + records := []*DNSRecord{ + {ID: "a", UserID: "u1", Name: "tux.penguins.lan.", Type: "CNAME", Content: "aabbccddeeff.tux.penguins.lan", TTL: 300}, + {ID: "b", UserID: "u1", Name: "www.tux.penguins.lan.", Type: "A", Content: "192.168.8.9", TTL: 60}, + // content that merely contains the domain mid-string must NOT be rewritten + {ID: "c", UserID: "u1", Name: "note.tux.penguins.lan.", Type: "TXT", Content: "notmytux.penguins.lan", TTL: 60}, + } + for _, r := range records { + if _, err := SaveDNSRecord(db, r); err != nil { + t.Fatal(err) + } + } + + if err := RenameUserDNSDomain(db, "u1", "tux.penguins.lan", "gentoo.penguins.lan"); err != nil { + t.Fatal(err) + } + + got, err := GetUserDNSRecords(db, "u1") + if err != nil { + t.Fatal(err) + } + byID := map[string]DNSRecord{} + for _, r := range got { + byID[r.ID] = r + } + + if byID["a"].Name != "gentoo.penguins.lan." || byID["a"].Content != "aabbccddeeff.gentoo.penguins.lan" { + t.Errorf("apex CNAME = %q -> %q, want gentoo + device target", byID["a"].Name, byID["a"].Content) + } + if byID["b"].Name != "www.gentoo.penguins.lan." || byID["b"].Content != "192.168.8.9" { + t.Errorf("A record = %q -> %q, want www.gentoo + unchanged ip", byID["b"].Name, byID["b"].Content) + } + if byID["c"].Name != "note.gentoo.penguins.lan." || byID["c"].Content != "notmytux.penguins.lan" { + t.Errorf("TXT = %q -> %q, want name moved but content untouched", byID["c"].Name, byID["c"].Content) + } +} -- cgit v1.3