package store import ( "encoding/json" "testing" ) // A directory used as found and a service's held state are two records that both say "declared" // (novox/hq issue 339, ADR 0269). The directory's was on nodes first, under the key "declared", and a // record a node already holds must keep reading back; the service's has a key of its own. func TestADirectorysDeclaredAndAUnitsDeclaredKeepTheirOwnKeys(t *testing.T) { onDisk := []byte(`{"id":"notes.data","type":"directory","as_found":true,"declared":"root, mode 755",` + `"declared_unit":{"unit":"a.timer","state":"stopped","boot":"disabled"}}`) var a Applied if err := json.Unmarshal(onDisk, &a); err != nil { t.Fatal(err) } if a.Declared != "root, mode 755" { t.Errorf("the directory's declared owner and mode read back as %q", a.Declared) } if a.DeclaredUnit == nil || a.DeclaredUnit.State != "stopped" || a.DeclaredUnit.Boot != "disabled" { t.Errorf("the unit's held state read back as %+v", a.DeclaredUnit) } body, err := json.Marshal(a) if err != nil { t.Fatal(err) } var keys map[string]json.RawMessage if err := json.Unmarshal(body, &keys); err != nil { t.Fatal(err) } if string(keys["declared"]) != `"root, mode 755"` || keys["declared_unit"] == nil { t.Errorf("written as %s", body) } }