From dc24ca3cd40c78a810ac0a05147e17145fd68241 Mon Sep 17 00:00:00 2001 From: RissRIce Date: Wed, 12 Aug 2026 22:59:23 -0600 Subject: [PATCH] test(sites): reproduce stale failed domain claims Signed-off-by: RissRIce --- internal/sites/sites_test.go | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/internal/sites/sites_test.go b/internal/sites/sites_test.go index 7108520..d07fb91 100644 --- a/internal/sites/sites_test.go +++ b/internal/sites/sites_test.go @@ -111,6 +111,37 @@ func TestManagerAddRemoveSyncAsk(t *testing.T) { } } +func TestManagerAddRollsBackNewMappingWhenLinkCreationFails(t *testing.T) { + dir := t.TempDir() + st, err := store.Open(filepath.Join(dir, "test.db")) + if err != nil { + t.Fatal(err) + } + defer st.Close() + + m, err := NewManager(st, dir) + if err != nil { + t.Fatal(err) + } + domain := "blocked.example.com" + blocked := filepath.Join(dir, "domains", domain) + if err := os.MkdirAll(blocked, 0o755); err != nil { + t.Fatal(err) + } + if err := os.WriteFile(filepath.Join(blocked, "keep"), []byte("occupied"), 0o644); err != nil { + t.Fatal(err) + } + + if _, err := m.Add(domain, "alice"); err == nil { + t.Fatal("Add succeeded despite an occupied domain link path") + } + if owner, ok, err := st.DomainUser(domain); err != nil { + t.Fatal(err) + } else if ok { + t.Fatalf("failed Add left domain mapped to %q", owner) + } +} + func TestSyncRemovesStaleDomainEntries(t *testing.T) { dir := t.TempDir() st, err := store.Open(filepath.Join(dir, "test.db"))