package api import "testing" // FLEX-DEC-2026-019: purpose is hashed when set and absent when empty, so an // enforcement digest is unchanged and a readback digest can never equal one. func TestPurposeEntersDigestsOnlyWhenSet(t *testing.T) { request := CheckRequest{ Subject: SubjectRef{ID: "user:alice"}, Action: "application.access", Resource: ResourceRef{ID: "demo-app", System: "demo-app"}, } legacy := CanonicalDigest(requestDigestMaterial{Subject: request.Subject, Action: request.Action, Resource: request.Resource}) if RequestDigest(request) != legacy { t.Fatal("an empty purpose changed the enforcement digest") } readback := request readback.Purpose = PurposeReadback if RequestDigest(readback) == RequestDigest(request) || ApprovalBindingDigest(readback) == ApprovalBindingDigest(request) { t.Fatal("purpose did not enter the digests") } if binding := NewDecisionBinding(readback); binding.Purpose != PurposeReadback { t.Fatalf("binding purpose = %q", binding.Purpose) } }