Skip to content

ATS-PFM-OPS-011Make a reasoned exception to application licensing: Capability Test Specification

Markdown

ATS-PFM-OPS-011

Make a reasoned exception to application licensing: Capability Test Specification

Markdown
  • DocumentProposed

KindAcceptance test setProduct areaPlatformModuleOperational RecordsRevision2

Read atservices-platform ad3f6a65macroservice-libraries 54536a44react-console baf6dae3

Coverage

  • Rule covered
  • Transition covered
  • Validation covered
  • Permission covered
  • Edge covered
  • Failure covered
  • Boundary covered
  • Concurrency gap: FND-PFM-OPS-063
  • Invariant covered
  • Interaction covered

Test Scenarios

17 scenarios proving CAP-PFM-OPS-011; 11 bound to an existing test.

01 Validate a reasoned decisionvalidationapinegativetest
Proves
BR-CAP-PFM-OPS-011-01 INV-DOM-PFM-OPS-003-01
Preconditions
Override requests omit or invalidate their reason, effect or application.
Steps
Attempt to save each.
Expected
Field validation refuses the invalid decision without a record.
Data
Controlled records and caller contexts matching this scenario’s preconditions.
Bound to
Source
services-platform:modules/licensing/tests/e2e/licensing.e2e.spec.js#refuses an override with no reason, with 400 naming the field
02 Require customer-grant expiryvalidationapinegativetest
Proves
BR-CAP-PFM-OPS-011-02 INV-DOM-PFM-OPS-003-02
Preconditions
Customer and demo workspaces receive proposed open-ended grants.
Steps
Save each grant.
Expected
The customer grant is refused and the demo grant is accepted.
Data
Controlled records and caller contexts matching this scenario’s preconditions.
Bound to
Source
services-platform:modules/licensing/tests/e2e/licensing.e2e.spec.js#refuses a grant on a customer tenant that does not say when it ends, with 400
03 Evaluate exact effective boundariesboundaryunittest
Proves
BR-CAP-PFM-OPS-011-03 INV-DOM-PFM-OPS-003-04
Preconditions
Unrevoked and revoked overrides span different time boundaries.
Steps
Resolve at the start, inside, at the end and outside each period.
Expected
Only effective unrevoked decisions count, including the start and excluding the end.
Data
Controlled records and caller contexts matching this scenario’s preconditions.
Bound to
Source
services-platform:modules/licensing/tests/unit/availability/application-availability.spec.ts#is not in force at the instant it ends, so a replacement starting there leaves no overlap
04 Record withdrawal oncetransitionapinegativetest
Proves
BR-CAP-PFM-OPS-011-04 INV-DOM-PFM-OPS-003-03
Preconditions
An existing override can be revoked.
Steps
Withdraw it and repeat the request.
Expected
The first records author and time and repetition conflicts.
Data
Controlled records and caller contexts matching this scenario’s preconditions.
Bound to
Source
services-platform:modules/licensing/tests/e2e/licensing.e2e.spec.js#refuses to withdraw the same override twice, with 409
05 Preserve existing operational decisionstransitionapitest
Proves
BR-CAP-PFM-OPS-011-05
Preconditions
One workspace already has an application and another has none.
Steps
Grant, withhold and revoke for each relevant case.
Expected
Only the first grant for missing application state initiates preparation.
Data
Controlled records and caller contexts matching this scenario’s preconditions.
Bound to
Source
services-platform:modules/licensing/tests/integration/services/enablement/provision-tenant-application.integration.spec.js#leaves the operational row exactly as it was, because the licence does not decide the state
06 Describe the direction of licence decisionsruleapitest
Proves
BR-CAP-PFM-OPS-011-06
Preconditions
Grant, withhold and corresponding revocations are available.
Steps
Complete each decision flow.
Expected
Audit attempts retain reasons and the correct widening or narrowing direction.
Data
Controlled records and caller contexts matching this scenario’s preconditions.
Bound to
Source
services-platform:modules/licensing/tests/integration/services/enablement/provision-tenant-application.integration.spec.js#records the revocation of a withhold as a widening, because it gives the application back
07 Request invalidation only after real decisionsruleapitest
Proves
BR-CAP-PFM-OPS-011-07
Preconditions
A grant succeeds and its revocation is repeated.
Steps
Complete the grant and first revocation, then repeat withdrawal.
Expected
Only completed decisions request flush jobs.
Data
Controlled records and caller contexts matching this scenario’s preconditions.
Bound to
Source
services-platform:modules/licensing/tests/e2e/licensing.e2e.spec.js#asks for none when the second revocation of the same override is refused, because nothing changed
08 Refuse unauthorized commercial changespermissionapinegativetest
Proves
BR-CAP-PFM-OPS-011-08
Preconditions
Read-only staff and a customer administrator lack HQ management authority.
Steps
Attempt override creation.
Expected
Neither creates a decision record.
Data
Controlled records and caller contexts matching this scenario’s preconditions.
Bound to
Source
services-platform:modules/licensing/tests/e2e/licensing.e2e.spec.js#leaves the tenant with no override after that refusal
09 Preserve earlier choices during development seedingedgeapitest
Proves
BR-CAP-PFM-OPS-011-09
Preconditions
Development workspaces include revoked decisions and a deleting workspace.
Steps
Run the seed twice.
Expected
Only undecided eligible pairs receive grants and repetition leaves prior choices intact.
Data
Controlled records and caller contexts matching this scenario’s preconditions.
Bound to
Source
services-platform:modules/licensing/tests/integration/services/enablement/seed-development-licences.revoked.integration.spec.js#writes no override on the second pass for the tenant whose grant was revoked
10 Replace an export allowance without parallel active rowsinvariantapinegativeproposed
Proves
BR-CAP-PFM-OPS-011-10
Preconditions
A customer scope has an active allowance.
Steps
Replace it and attempt another direct unrevoked insert.
Expected
Replacement revokes the previous row and uniqueness refuses the competing active row.
Data
Controlled records and caller contexts matching this scenario’s preconditions.
Source
services-platform:modules/licensing/tests/integration/services/persistence/data-export-entitlements.integration.spec.js#revokes the scope’s earlier row when it is set again, so one is in effect
11 Hide and reverse a commercial withholdinteractionapitest
Proves
AS-JNY-PFM-OPS-004-01 AS-JNY-PFM-OPS-004-02 AS-JNY-PFM-OPS-004-03
Preconditions
An enabled licensed application can be withheld.
Steps
Withhold, inspect the customer response and revoke.
Expected
The customer sees no internal decision and completed narrowing and widening flows request invalidation.
Data
Controlled records and caller contexts matching this scenario’s preconditions.
Bound to
Source
services-platform:modules/licensing/tests/e2e/licensing.e2e.spec.js#says a withheld application is simply not licensed, never that Rhythm withheld it
12 Review a withdrawn exception in staff historyinteractionapiproposed
Proves
BR-CAP-PFM-OPS-011-04 BR-CAP-PFM-OPS-013-02
Preconditions
Staff have written a reasoned application exception.
Steps
Withdraw it and reopen the licensing panel’s historical decisions.
Expected
The same decision remains explainable with its original reason and revocation attribution.
Data
Isolated workspace records and caller contexts for both sides of the interaction.
Source
services-platform:modules/licensing/tests/e2e/licensing.e2e.spec.js#refuses to withdraw the same override twice, with 409; services-platform:modules/licensing/tests/e2e/licensing.e2e.spec.js#keeps a revoked override in the answer, because the trail is what the screen is for; CAP-PFM-OPS-013; WF-PFM-OPS-010; WF-PFM-OPS-011; WF-PFM-OPS-016; WF-PFM-OPS-017
13 Restore contract coverage after withdrawing a withholdinteractionapiproposed
Proves
BR-CAP-PFM-OPS-011-04 BR-CAP-PFM-OPS-014-02
Preconditions
An enabled application has current contract coverage and an effective withhold.
Steps
Resolve access, withdraw the withhold, and resolve again.
Expected
The commercial source of the restored result is the surviving contract.
Data
Isolated workspace records and caller contexts for both sides of the interaction.
Source
services-platform:modules/licensing/tests/e2e/licensing.e2e.spec.js#refuses to withdraw the same override twice, with 409; services-platform:modules/licensing/services/availability/application-availability.ts:licenceStateOf; CAP-PFM-OPS-014; WF-PFM-OPS-010; WF-PFM-OPS-011; WF-PFM-OPS-016; WF-PFM-OPS-017
14 Relate a change to its security historyinteractionapiproposed
Proves
BR-CAP-PFM-OPS-011-06
Preconditions
Staff make a reasoned change and later security-history insertion can fail.
Steps
Complete one change and repeat with failure injected after the decision commits.
Expected
The successful flow has attributable history; the later failure leaves the committed decision visible for investigation.
Data
Isolated workspace records and caller contexts for both sides of the interaction.
Source
services-platform:modules/licensing/services/enablement/grant-licence-override.ts:grantLicenceOverride; CAP-PFM-SEC-011; WF-PFM-OPS-010; WF-PFM-OPS-011; WF-PFM-OPS-016; WF-PFM-OPS-017
15 Observe an access change across cache refreshinteractionapiproposed
Proves
BR-CAP-PFM-OPS-011-07
Preconditions
An application decision changes while an older authorization answer remains cached.
Steps
Complete the change, observe the requested refresh job, then request a new access decision.
Expected
The refresh request refers to the changed scope; access reflects the current decision after refresh or expiry.
Data
Isolated workspace records and caller contexts for both sides of the interaction.
Source
services-platform:modules/licensing/tests/e2e/licensing.e2e.spec.js#asks for none when the second revocation of the same override is refused, because nothing changed; CAP-PFM-SEC-015; WF-PFM-OPS-010; WF-PFM-OPS-011; WF-PFM-OPS-016; WF-PFM-OPS-017
16 Retain an exception when later history insertion failsfailureapinegativeproposed
Proves
BR-CAP-PFM-OPS-011-06
Preconditions
A valid staff exception commits before a history writer refuses its later insertion.
Steps
Inject the post-commit history failure and reread the exception independently.
Expected
The failed follow-up does not remove the commercial decision; the missing history remains an observable defect.
Data
Run-owned records and controlled clocks or dependency responses named in the preconditions.
Source
services-platform:modules/licensing/services/enablement/grant-licence-override.ts:grantLicenceOverride; FND-PFM-OPS-037
17 Read override standing at start and endtransitionunittest
Proves
BR-CAP-PFM-OPS-011-03 INV-DOM-PFM-OPS-003-04
Preconditions
Separate decisions begin later, begin at the current instant, or end at that instant.
Steps
Evaluate their effective standing using controlled instants.
Expected
The decisions change their effective standing at the checked boundary without a background update.
Data
Run-owned records and controlled clocks or dependency responses named in the preconditions.
Bound to
Source
services-platform:modules/licensing/tests/unit/availability/application-availability.spec.ts#an override, read against an instant

The Markdown files under specs/ in rhythmsoftware/rhythm-v2-docs are the canonical source of truth. This reader is a generated, read-only projection of them.