package provision import ( "context" "encoding/json" "testing" "github.com/carlosframework/platform/internal/release" ) func TestPlan14ProofRecordLookup(t *testing.T) { ctx := context.Background() s := release.NewDirStore(t.TempDir()) rec := Record{Schema: 1, Host: "console.example.com", Account: "bab", App: "console", Addr: "127.0.0.1:4000", Unit: "console.service"} raw, err := json.Marshal(rec) if err != nil { t.Fatal(err) } key := RecordKey(rec.Account, rec.App, rec.Host) etag, err := s.Put(ctx, key, raw, "") if err != nil { t.Fatal(err) } got, tag, err := FindRecordByHost(ctx, s, rec.Host) if err != nil || got.Account != rec.Account || got.App != rec.App || tag != etag { t.Fatalf("lookup: %+v, %q, %v", got, tag, err) } if _, _, err := FindRecordByHost(ctx, s, "missing.example.com"); err == nil { t.Fatal("missing record bound") } duplicate := RecordKey("bab", "other", rec.Host) if _, err := s.Put(ctx, duplicate, []byte("malformed"), ""); err != nil { t.Fatal(err) } if _, _, err := FindRecordByHost(ctx, s, rec.Host); err == nil { t.Fatal("malformed competing key was ignored") } if err := s.Delete(ctx, duplicate); err != nil { t.Fatal(err) } rec.Account = "bap" raw, err = json.Marshal(rec) if err != nil { t.Fatal(err) } if _, err := s.Put(ctx, key, raw, etag); err != nil { t.Fatal(err) } if _, _, err := FindRecordByHost(ctx, s, rec.Host); err == nil { t.Fatal("key/body mismatch bound") } }