The suite follows customer setup through ordinary workspace use and controlled retirement. Its proofs connect record ownership, readiness, availability and retained retirement decisions.
Opening a load or a retirement request changes the work that ordinary callers can perform. The suite tests that change alongside the staff actions that control it. The interaction rows identify the participating capabilities and the detailed proofs they assume. A complete feature chain needs its own executable evidence even when its individual outcomes already have bindings.
The chosen customer and workspace identifiers are unused.
Steps
[object Object]
Expected
The intended customer owns one active reachable workspace and replay does not create another.
Data
A disposable customer and workspace with run-owned memberships, assignments and definitions; clock-controlled expiry fixtures where needed.
Source
services-platform:modules/customers/tests/e2e/customers.e2e.spec.js#refuses a body that names no id as 400 customer_id_required, nothing generating one,services-platform:modules/tenants/tests/e2e/tenants.e2e.spec.js#lists no tenant of another customer, which is what the reach reduction means,services-platform:modules/tenants/tests/e2e/tenant-provisioning.e2e.spec.js#answers a tenant that is not usable yet, because the work has only been asked for
An active workspace is in implementation and has separate import and activation operators.
Steps
[object Object]
Expected
Ordinary work stops during loading and returns after activation without changing the business status.
Data
A disposable customer and workspace with run-owned memberships, assignments and definitions; clock-controlled expiry fixtures where needed.
Source
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/hq-tenant-loading.e2e.spec.js#refuses a live tenant, an initial import going only into an implementation tenant,services-platform:modules/tenants/tests/e2e/hq-tenant-loading.e2e.spec.js#refuses the staff member who ran the import, activation being the other key
03Cancellation restores the lifecycle without enabling worklifecycleproposed
A disabled active workspace has no protected dependencies.
Steps
[object Object]
Expected
The workspace returns to active lifecycle and remains disabled; the retained request records cancellation.
Data
A disposable customer and workspace with run-owned memberships, assignments and definitions; clock-controlled expiry fixtures where needed.
Source
services-platform:modules/tenants/tests/e2e/tenants.e2e.spec.js#leaves the lifecycle state where the server put it after such a patch,services-platform:modules/tenants/tests/integration/services/deletion/request-deletion.integration.spec.js#refuses a tenant that is still live, because people must lose access first,services-platform:modules/tenants/tests/integration/services/deletion/deletion-holds.integration.spec.js#returns the tenant to active
04Customer authority cannot perform staff setup or retirementpermissionnegativeproposed
A customer Administrator and authorized Rhythm staff can reach the same customer.
Steps
[object Object]
Expected
The customer identity is refused at each staff boundary and creates no staff-controlled changes.
Data
A disposable customer and workspace with run-owned memberships, assignments and definitions; clock-controlled expiry fixtures where needed.
Source
services-platform:modules/customers/tests/e2e/customers.e2e.spec.js#refuses a customer-scoped caller the system route that creates a customer,services-platform:modules/tenants/tests/e2e/tenants.e2e.spec.js#refuses a customer administrator the same change on the console route, naming where it is made,services-platform:modules/tenants/tests/e2e/tenant-provisioning.e2e.spec.js#may not ask for a tenant at all,services-platform:modules/tenants/tests/e2e/tenant-deletion-requests.e2e.spec.js#may not ask for a tenant to be deleted
05Replays and competing retirement actions preserve one outcomeregressionnegativeproposed
A disposable workspace and a controlled destructive-boundary fixture are available.
Steps
[object Object]
Expected
Each setup submission has one result; one open retirement request remains and cancellation cannot undo destruction after it starts.
Data
A disposable customer and workspace with run-owned memberships, assignments and definitions; clock-controlled expiry fixtures where needed.
Source
services-platform:modules/tenants/tests/integration/services/provisioning/provision-tenant.integration.spec.js#answers the same tenant and the same job when the same submission is sent twice,services-platform:modules/tenants/tests/integration/services/deletion/request-deletion.integration.spec.js#refuses a second request, naming the one that is open,services-platform:modules/tenants/tests/integration/services/deletion/begin-destruction.integration.spec.js#refuses the cancel as already executing in every round destruction won