Issue 1585, S19: the strict parser, every manifest problem function and the judge's tables (192 declarations, about 5,200 lines) and their 244 tests leave; composition keeps its own refusals and the helpers it uses. The catalogue's tests decode the manifests they build. ParseManifest, ParseManifestWith, ParseManifestForInputs, CatalogueProblems and the rest are gone; mesh-delivery-indexer/judge holds them. Claude-Session: https://claude.ai/code/session_01NcbgfJ9Gum47zkFKWRaovL
49 lines
1.6 KiB
Go
49 lines
1.6 KiB
Go
package catalogue
|
|
|
|
import (
|
|
"testing"
|
|
)
|
|
|
|
func sharingShelf() map[string]Manifest {
|
|
return shelf(
|
|
Manifest{Module: "downloader", Version: "1",
|
|
Provides: []Offer{{Name: "downloader-api", Scope: ScopeMesh, Credential: &OfferCredential{Own: "password"}}},
|
|
OwnSecrets: OwnSecrets{"password": {Path: "/var/lib/mesh/downloader/password", Taken: TakenAtStart}},
|
|
Serves: map[string]map[string]any{"downloader-api": {"port": 8080, "username": "admin"}}},
|
|
Manifest{Module: "manager", Version: "1", Requires: []string{"downloader-api"}},
|
|
)
|
|
}
|
|
|
|
func TestAConsumersNeedCarriesTheSharedSecretsName(t *testing.T) {
|
|
// On the same machine.
|
|
together, err := Resolve(sharingShelf(), []string{"downloader", "manager"}, workstation(), World{})
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
found := false
|
|
for _, n := range together.Needs {
|
|
if n.Name == "downloader-api" && n.For == "manager" {
|
|
found = true
|
|
if n.SharedOwn != "password" {
|
|
t.Fatalf("the need on one machine does not name the shared secret: %+v", n)
|
|
}
|
|
}
|
|
}
|
|
if !found {
|
|
t.Fatalf("the manager's need was not resolved: %+v", together.Needs)
|
|
}
|
|
// Across machines, the provider known by its module.
|
|
apart, err := Resolve(sharingShelf(), []string{"manager"}, onBoth("example.tld"), World{
|
|
Offered: map[string][]Provider{"downloader-api": {{Node: "home-server", At: "home-server.internal",
|
|
Module: "downloader", Serves: map[string]any{"port": 8080}}}},
|
|
})
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
for _, n := range apart.Needs {
|
|
if n.Name == "downloader-api" && n.SharedOwn != "password" {
|
|
t.Fatalf("the need across machines does not name the shared secret: %+v", n)
|
|
}
|
|
}
|
|
}
|