package contract import ( "context" "testing" "time" ) func TestBindCustomerAccessProofToExactPersistedMessage(t *testing.T) { ctx := WithCustomerAccessProof(context.Background(), CustomerAccessProof{ SessionID: "opaque-session", TargetType: "device", TargetID: 27, ExpiresAt: time.Now().Add(time.Minute), }) ctx = BindCustomerAccessProofToMessage(ctx, 101, 202, " request-303 ") proof, ok := CustomerAccessProofFromContext(ctx) if !ok { t.Fatal("bound proof was not returned") } if proof.ConversationID != 101 || proof.MessageID != 202 || proof.RequestID != "request-303" { t.Fatalf("proof was not bound to exact request message: %#v", proof) } } func TestCustomerAccessProofRejectsExpiredOrUnscopedClaims(t *testing.T) { for name, proof := range map[string]CustomerAccessProof{ "expired": { SessionID: "opaque-session", TargetType: "card", TargetID: 1, ExpiresAt: time.Now().Add(-time.Second), }, "unsupported_target": { SessionID: "opaque-session", TargetType: "guest", TargetID: 1, ExpiresAt: time.Now().Add(time.Minute), }, } { t.Run(name, func(t *testing.T) { ctx := WithCustomerAccessProof(context.Background(), proof) if _, ok := CustomerAccessProofFromContext(ctx); ok { t.Fatalf("invalid proof was accepted: %#v", proof) } }) } }