package action_commit_test import ( "errors" "testing" commitcontract "git.cin.su/m/Assistant/contracts/commit" "git.cin.su/m/Assistant/contracts/continuity" commitdomain "git.cin.su/m/Assistant/modules/commit/domain" "git.cin.su/m/Assistant/platform/ids" ) func TestContinuityOperationRequiresExactAllowlistedEnvelope(t *testing.T) { context, proposal := testContextAndProposal() proposal.CapabilityID = commitcontract.CapabilityContinuityTransition proposal.Operation = commitcontract.OperationSatisfyDelivered proposal.ContinuitySubject = continuity.SatisfyDeliveredSubject{ ProspectiveItemID: "prospective-1", ExpectedRevision: 4, FromState: continuity.ProspectiveDelivered, ToState: continuity.ProspectiveSatisfied, EvidenceRef: "artifact://evidence/1", } action, err := commitdomain.Authorize(proposal, context, validator{}, commitcontract.AuthorizedActionID(ids.ID("authorized-continuity")), 10) if err != nil { t.Fatal(err) } if action.PrincipalID != context.Binding.PrincipalID || action.GrantRevision != context.Grant.Revision || action.AuthorizedAtUnixMillis != 10 { t.Fatalf("authorized envelope lost authority evidence: %#v", action) } proposal.Operation = "arbitrary-operation" if _, err := commitdomain.Authorize(proposal, context, validator{}, "rejected", 10); !errors.Is(err, commitdomain.ErrInvalidProposal) { t.Fatalf("arbitrary operation error = %v", err) } proposal.Operation = commitcontract.OperationSatisfyDelivered proposal.ContinuitySubject.EvidenceRef = " " if _, err := commitdomain.Authorize(proposal, context, validator{}, "rejected-evidence", 10); !errors.Is(err, commitdomain.ErrInvalidProposal) { t.Fatalf("empty evidence error = %v", err) } }