package domain import "testing" func TestCopyHelpersIsolateSlices(t *testing.T) { plugin := GamePlugin{ ID: "server.scum", RequiredRunCapabilities: []string{"process.start", "logs.read"}, DeclaredPermissions: []string{"server.logs.read"}, Pages: []GamePluginPage{ {Key: "logs", Permissions: []string{"server.logs.read"}}, }, AIPurposes: []string{"logs.diagnose"}, } copy := CopyGamePlugin(plugin) copy.RequiredRunCapabilities[0] = "files.read" copy.DeclaredPermissions[0] = "ai.invoke" copy.Pages[0].Permissions[0] = "ai.invoke" copy.AIPurposes[0] = "config.suggest" if plugin.RequiredRunCapabilities[0] != "process.start" { t.Fatalf("expected copied plugin slice mutation not to affect original: %+v", plugin.RequiredRunCapabilities) } if plugin.DeclaredPermissions[0] != "server.logs.read" || plugin.Pages[0].Permissions[0] != "server.logs.read" || plugin.AIPurposes[0] != "logs.diagnose" { t.Fatalf("expected copied plugin registry metadata mutation not to affect original: %+v", plugin) } provider := AIProvider{ID: "ai.openai", Models: []string{"gpt-4.1"}} providerCopy := CopyAIProvider(provider) providerCopy.Models[0] = "gpt-4.1-mini" if provider.Models[0] != "gpt-4.1" { t.Fatalf("expected copied provider slice mutation not to affect original: %+v", provider.Models) } }