package main import ( "strings" "testing" "git.novox.be/novox/mesh-sdk/go/catalogue" ) // A send keeps, beside each handed module's plan, what requires a module only pulled in (issue 765), so the // assignments mirror gives that plan a value of its own; an assigned module's plan is kept as the bytes it was. func TestASendKeepsWhatRequiresAPulledInModule(t *testing.T) { plan := catalogue.Plan{Templates: catalogue.PlanTemplates{Source: "http://store:5000/v2/notify/files", Digest: "sha256:" + strings.Repeat("d", 64)}, Files: []catalogue.PlanFile{{ID: "rc", Path: "/home/op/rc", Template: "rc", OwnerAtRuntime: "owned"}}} r := sentRecordOf(t.Context(), sendable{plans: map[string]catalogue.Plan{"dunst": plan, "notify": plan}, requiredBy: map[string]string{"notify": "desk"}}) kept := string(r.plans) want := `{"dunst":{"templates":{"source":"http://store:5000/v2/notify/files","digest":"sha256:` + strings.Repeat("d", 64) + `"},"files":[{"id":"rc","path":"/home/op/rc","template":"rc","owner-at-runtime":"owned"}]},` + `"notify":{"templates":{"source":"http://store:5000/v2/notify/files","digest":"sha256:` + strings.Repeat("d", 64) + `"},"files":[{"id":"rc","path":"/home/op/rc","template":"rc","owner-at-runtime":"owned"}],"required-by":"desk"}}` if kept != want { t.Fatalf("the send keeps\n%s\nwant\n%s", kept, want) } } // **A module only pulled in by another is handed on a machine that can take it** (issue 765): on a contract-11 // node running a client, a moved module that nothing assigned there, required by one that is, has its files and its // own secret handed like an assigned one's, no secret of it made or sealed by the controller, and its plan mirrored // under its own key, saying what requires it. A module not moved, pulled in the same way, is sent as before.