From 557c11af1ed7ce939b9d976e61f316e060292dd5 Mon Sep 17 00:00:00 2001 From: jochen Date: Sun, 18 Oct 2026 19:06:15 +0200 Subject: [PATCH] A second new module from a repository is judged alongside, with no warrant asked: test (issue 1146, AC5) --- .../new_module_approved_test.go | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/cmd/mesh-controller/new_module_approved_test.go b/cmd/mesh-controller/new_module_approved_test.go index c8d0e14c..98ea4081 100644 --- a/cmd/mesh-controller/new_module_approved_test.go +++ b/cmd/mesh-controller/new_module_approved_test.go @@ -110,3 +110,33 @@ func TestANewModuleIsRegisteredOnTheOperatorsApproveOfItsMergeAndRefusedOtherwis }) } } + +// A second new module from a repository whose first was registered is the case ADR 0266 §44 already has — +// "alongside": registered through a verb with no warrant asked of the router (1146/AC5). +type aMeshWithOneAlready struct{ anEmptyMesh } + +func (m *aMeshWithOneAlready) Catalogued(context.Context) ([]inventory.Entry, error) { + e := inventory.Entry{Source: inventory.Source{Repository: "novox/mesh-delivery", Seat: "git"}} + e.Manifest.Module = "mesh-delivery-view" + return []inventory.Entry{e}, nil +} + +func TestASecondNewModuleFromARepositoryIsJudgedAlongsideAndAsksNoWarrant(t *testing.T) { + wasKept, wasAsk := keptDeliveryMerge, routerAskOf + t.Cleanup(func() { keptDeliveryMerge, routerAskOf = wasKept, wasAsk }) + keptDeliveryMerge = func(context.Context, string, string, int, string) (deliveryMerge, bool, error) { + t.Error("1146/AC5: the announced merges were asked for a module judged alongside") + return deliveryMerge{}, false, nil + } + routerAskOf = func(context.Context, catalogueReader, string) (*asks.Ask, *asks.Warrant, error) { + t.Error("1146/AC5: the router was asked for a module judged alongside") + return nil, nil, nil + } + mesh := &aMeshWithOneAlready{anEmptyMesh{asked: true, + request: inventory.BuildRequest{ID: "build-2", Repository: "novox/mesh-delivery", Seat: "git", For: "build"}}} + forms := &sourceForms{bases: map[string]string{}, base: func(string) string { return "http://forge.internal:20000" }} + built := inventory.Source{Repository: "novox/mesh-delivery", Seat: "git"} + if id, err := mayRegisterIn(t.Context(), mesh, forms, "mesh-delivery-watchman", built, "build-2", "", "main"); err != nil || id == 0 { + t.Fatalf("1146/AC5: a second module from a repository the catalogue builds from was refused (id %d): %v", id, err) + } +}