32 lines
1.8 KiB
Go
32 lines
1.8 KiB
Go
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.
|