Skip to content

ATS-PFM-TNL-005Apply workspace availability consistently: Capability Test Specification

Markdown

ATS-PFM-TNL-005

Apply workspace availability consistently: Capability Test Specification

Markdown
  • DocumentProposed

Planning

Proves capability
CAP-PFM-TNL-005

Design

Executed by
TST-PFM-TNL-050, TST-PFM-TNL-078, TST-PFM-TNL-091

KindAcceptance test setProduct areaPlatformModuleWorkspace Lifecycle Across ApplicationsRevision3

Read atservices-platform ad3f6a65services-crm a8d1364fservices-commerce c8b66a98services-committees 36129c24services-membership 5994c270services-submissions 64236c19services-websites 5fc6823cservices-marketing d071a159rhythm-v2-docs d318a948

Coverage

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

Test Scenarios

10 scenarios proving CAP-PFM-TNL-005; 9 bound to an existing test.

01 Closed workspaces share the unavailable responseboundaryapinegativetest
Proves
BR-CAP-PFM-TNL-005-01
Preconditions
Platform and CRM fixtures cover active, disabled, provisioning and deleting workspaces.
Steps
Call ordinary workspace routes as a customer user.
Expected
Only the active enabled fixture is admitted; closed fixtures use the unavailable response.
Data
Use the run-owned records and caller contexts created by the cited tests; use their provider and clock seams only where declared.
Bound to
services-platform:modules/tenants/tests/e2e/tenant-availability-gate.e2e.spec.js#is served a tenant-scoped route in an active tenant (the premise every refusal below is read against)
services-platform:modules/tenants/tests/e2e/tenant-availability-gate.e2e.spec.js#is refused 403 in a tenant whose customer has been cut off
services-platform:modules/tenants/tests/e2e/tenant-availability-gate.e2e.spec.js#is refused 403 in a tenant that is still being provisioned
services-platform:modules/tenants/tests/e2e/tenant-availability-gate.e2e.spec.js#is refused 403 in a tenant whose destruction has begun
services-crm:modules/tenant-lifecycle/tests/e2e/tenant-availability.e2e.spec.js#is refused 403 TenantUnavailable in the disabled tenant
services-crm:modules/tenant-lifecycle/tests/e2e/tenant-availability.e2e.spec.js#is refused 403 TenantUnavailable in a tenant still being provisioned
Source
services-platform:modules/tenants/tests/e2e/tenant-availability-gate.e2e.spec.js#is served a tenant-scoped route in an active tenant (the premise every refusal below is read against)
02 System staff access has its own boundarypermissionapitest
Proves
BR-CAP-PFM-TNL-005-02
Preconditions
The workspace is disabled.
Steps
Call system and console routes using the corresponding staff contexts.
Expected
The system exception admits authorized staff while console context receives no exception.
Data
Use the run-owned records and caller contexts created by the cited tests; use their provider and clock seams only where declared.
Bound to
services-platform:modules/tenants/tests/e2e/tenant-availability-gate.e2e.spec.js#is past the gate in a tenant its own customer could not reach, because staff reach every tenant
services-platform:modules/tenants/tests/e2e/tenant-availability-gate.e2e.spec.js#is refused the same way in a tenant being deleted, so the exemption is not a console route’s to grant
Source
services-platform:modules/tenants/tests/e2e/tenant-availability-gate.e2e.spec.js#is past the gate in a tenant its own customer could not reach, because staff reach every tenant
03 Destruction limits staff to readspermissionapinegativetest
Proves
BR-CAP-PFM-TNL-005-03
Preconditions
The workspace is deleting.
Steps
Issue staff read and write requests.
Expected
Read is admitted and mutation is refused.
Data
Use the run-owned records and caller contexts created by the cited tests; use their provider and clock seams only where declared.
Bound to
services-platform:modules/tenants/tests/unit/services/access/tenant-availability.spec.js#is reads only for staff once destruction has begun, so support can still inspect it
services-platform:modules/tenants/tests/e2e/tenant-availability-gate.e2e.spec.js#may not write to a tenant being deleted, which the same caller being served above is the premise for
Source
services-platform:modules/tenants/tests/unit/services/access/tenant-availability.spec.js#is reads only for staff once destruction has begun, so support can still inspect it
04 Loading preserves route and staff exceptionsinteractionapinegativetest
Proves
BR-CAP-PFM-TNL-005-04
Preconditions
The workspace is loading.
Steps
Call an ordinary customer route, a data-job route and an authorized staff system route.
Expected
Ordinary customer use is refused while data jobs and the staff exception remain admitted.
Data
Use the run-owned records and caller contexts created by the cited tests; use their provider and clock seams only where declared.
Bound to
services-platform:modules/tenants/tests/e2e/tenant-availability-gate.e2e.spec.js#is refused 403 in a tenant whose initial data import is open
services-platform:modules/tenants/tests/e2e/tenant-availability-gate.e2e.spec.js#is past the gate in a tenant whose initial data import is open, which is what lets the import run at all
services-crm:modules/tenant-lifecycle/tests/e2e/tenant-availability.e2e.spec.js#is served the submission of a bulk contact job, which is what the import is made of
services-crm:modules/tenant-lifecycle/tests/e2e/tenant-availability.e2e.spec.js#is refused the contact list 403 TenantUnavailable, because nothing but the import may touch the tenant
services-platform:modules/tenants/tests/unit/services/access/tenant-availability.spec.js#serves the upload protocol, which is what the load is made of
Source
services-platform:modules/tenants/tests/e2e/tenant-availability-gate.e2e.spec.js#is refused 403 in a tenant whose initial data import is open
05 Absence refuses every calleredgeunitnegativetest
Proves
BR-CAP-PFM-TNL-005-05
Preconditions
The requested workspace does not exist.
Steps
Evaluate availability for staff and customer identities.
Expected
Both answers are unavailable.
Data
Use the run-owned records and caller contexts created by the cited tests; use their provider and clock seams only where declared.
Bound to
Source
services-platform:modules/tenants/tests/unit/services/access/tenant-availability.spec.js#is unavailable to everybody when there is no such tenant
06 Cache expiry prompts a fresh lifecycle readboundaryunittest
Proves
BR-CAP-PFM-TNL-005-06
Preconditions
A process has cached lifecycle facts.
Steps
Read before expiry, at expiry and after explicit invalidation.
Expected
Fresh entries are reused; expired or forgotten entries cause another database read.
Data
Use the run-owned records and caller contexts created by the cited tests; use their provider and clock seams only where declared.
Bound to
services-platform:modules/tenants/tests/unit/services/access/tenant-availability.spec.js#still answers from the cache one millisecond before the window closes
services-platform:modules/tenants/tests/unit/services/access/tenant-availability.spec.js#reads a forgotten tenant again at once, which is how the process that changed it stays right
Source
services-platform:modules/tenants/tests/unit/services/access/tenant-availability.spec.js#still answers from the cache one millisecond before the window closes
07 Background enumeration selects operational recordsruleapitest
Proves
BR-CAP-PFM-TNL-005-07
Preconditions
Fixtures cover lifecycle states and disabled business status.
Steps
List Platform’s operational workspaces.
Expected
The result contains only active, non-disabled workspaces.
Data
Use the run-owned records and caller contexts created by the cited tests; use their provider and clock seams only where declared.
Bound to
Source
services-platform:modules/tenants/tests/integration/services/persistence/tenants.queries.integration.spec.js#answers no tenant that is still provisioning
08 Opening changes ordinary availabilitytransitionapitest
Proves
AS-JNY-PFM-TNL-001-01
Preconditions
The construction journey includes a before-and-after gate fixture.
Steps
Read ordinary availability around activation.
Expected
Provisioning refuses customer access and active enabled lifecycle admits it.
Data
Use the run-owned records and caller contexts created by the cited tests; use their provider and clock seams only where declared.
Bound to
services-platform:modules/tenants/tests/e2e/tenant-availability-gate.e2e.spec.js#is refused 403 in a tenant that is still being provisioned
Source
services-platform:modules/tenants/tests/e2e/tenant-availability-gate.e2e.spec.js#is refused 403 in a tenant that is still being provisioned
09 Loading journey retains its staff exceptioninteractionapitest
Proves
AS-JNY-PFM-TNL-003-03
Preconditions
The import journey’s workspace is loading.
Steps
Exercise ordinary customer, data-job and staff system access.
Expected
Customer routes close except for data-job work and staff system access remains possible.
Data
Use the run-owned records and caller contexts created by the cited tests; use their provider and clock seams only where declared.
Bound to
services-platform:modules/tenants/tests/e2e/tenant-availability-gate.e2e.spec.js#is refused 403 in a tenant whose initial data import is open
services-crm:modules/tenant-lifecycle/tests/e2e/tenant-availability.e2e.spec.js#is refused the contact list 403 TenantUnavailable, because nothing but the import may touch the tenant
Source
services-platform:modules/tenants/tests/e2e/tenant-availability-gate.e2e.spec.js#is refused 403 in a tenant whose initial data import is open
10 Import admission follows the load lifecycleinteractionapinegativeproposed
Proves
BR-CAP-PFM-TNL-005-04
Preconditions
An active implementation workspace has ordinary customer and import-engine callers.
Steps
Open loading, try an ordinary route and an import route, then activate and repeat the ordinary route.
Expected
Ordinary access closes while import access remains available; activation restores ordinary access without moving the business status to live.
Data
Create a separate run-owned workspace for each decision branch and an unaffected comparison workspace. Use a controlled clock, paused task or injected fault at the boundary named in the scenario.
Source
rhythm-v2-docs:specs/platform/tenant-lifecycle/planning/capabilities/CAP-PFM-TNL-005-keep-people-and-background-work-out-of-a-workspace-that-is.md; rhythm-v2-docs:specs/platform/tenant-lifecycle/planning/capabilities/CAP-PFM-TNL-011-open-a-workspace-for-its-initial-import-and-let-its-people.md; rhythm-v2-docs:specs/platform/tenant-lifecycle/planning/capabilities/CAP-PFM-TNL-006-keep-every-workspace-s-lifecycle-state-truthful.md

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.