diff --git a/modules/mesh-provisioner-client/cmd/mesh-provisioner-client/client_test.go b/modules/mesh-provisioner-client/cmd/mesh-provisioner-client/client_test.go index 342ecb2d..8f99c5db 100644 --- a/modules/mesh-provisioner-client/cmd/mesh-provisioner-client/client_test.go +++ b/modules/mesh-provisioner-client/cmd/mesh-provisioner-client/client_test.go @@ -703,3 +703,23 @@ func TestNatsResticsFilesFillFromTheBackupPlacement(t *testing.T) { b.assign(t, "restic", plan("# a\n/srv/a\n", "# a\nstate\n")) eventually(t, "a module taken away refills backups.conf", func() bool { return e.read(t, backups) == head+"# a\n/srv/a\n" }) } + +// defaults writes the defaults a module's manifest declares as mesh-config resolves them (source default), for a +// moved module whose templates read config values (issue 1780). +func (b *aBus) defaults(t *testing.T, module string, manifest []byte) { + t.Helper() + var m struct { + Config map[string]struct { + Default json.RawMessage `json:"default"` + } `json:"config"` + } + if err := json.Unmarshal(manifest, &m); err != nil { + t.Fatal(err) + } + for key, d := range m.Config { + if len(d.Default) > 0 && string(d.Default) != "null" { + b.put(t, ConfigBucket, node+"."+module+"."+key, fmt.Sprintf(`{"node":%q,"module":%q,"key":%q,"value":%s,`+ + `"source":"default"}`, node, module, key, d.Default)) + } + } +} diff --git a/modules/mesh-provisioner-client/cmd/mesh-provisioner-client/environment_test.go b/modules/mesh-provisioner-client/cmd/mesh-provisioner-client/environment_test.go index 25b4e88e..ae455c35 100644 --- a/modules/mesh-provisioner-client/cmd/mesh-provisioner-client/environment_test.go +++ b/modules/mesh-provisioner-client/cmd/mesh-provisioner-client/environment_test.go @@ -158,6 +158,7 @@ func TestNatsTheEnvironmentOfTheCataloguesModulesIsWhatTheOldFormComposed(t *tes if !manifest.Moved || len(manifest.Items) == 0 { t.Fatalf("%s is not a moved contributor of items", m) } + b.defaults(t, m, read(m+"/module.json")) texts := map[string]string{} var planned []PlannedItem for _, it := range manifest.Items { diff --git a/modules/mesh-provisioner-client/cmd/mesh-provisioner-client/xorg_golden_test.go b/modules/mesh-provisioner-client/cmd/mesh-provisioner-client/xorg_golden_test.go index 2f99d55b..fabc35ac 100644 --- a/modules/mesh-provisioner-client/cmd/mesh-provisioner-client/xorg_golden_test.go +++ b/modules/mesh-provisioner-client/cmd/mesh-provisioner-client/xorg_golden_test.go @@ -63,6 +63,7 @@ func TestNatsTheSessionFilesFilledFromTheirContributorsItemsAreWhatTheOldFormCom if !c.Moved || len(c.Shell) != 0 { t.Fatalf("%s is not moved or still holds shell entries", m) } + b.defaults(t, m, []byte(read(m+"/module.json"))) texts := map[string]string{} var planned []PlannedItem for _, it := range c.Items {