Skip to content

ATS-ACC-BKS-016Control access and safe changes to books configuration: Capability Test Specification

Markdown

ATS-ACC-BKS-016

Control access and safe changes to books configuration: Capability Test Specification

Markdown
  • DocumentProposed
  • Product intentProposed

KindAcceptance test setProduct areaAccountingModuleBooks, Business Units and Chart of AccountsRevision2

Read atservices-accounting f47cb263react-console baf6dae3

Coverage

  • Rule covered
  • Transition not-applicable
  • Validation covered
  • Permission covered
  • Edge gap: FND-ACC-BKS-077
  • Failure gap: FND-ACC-BKS-077
  • Boundary covered
  • Concurrency covered
  • Invariant covered
  • Interaction covered

Test Scenarios

15 scenarios proving CAP-ACC-BKS-016; 9 bound to an existing test.

01 Apply resource permission tierspermissionapinegativetest
Proves
BR-CAP-ACC-BKS-016-01
Preconditions
Reader and administrator principals exist.
Steps
Read each configuration kind and attempt mutations with both principals.
Expected
The reader can inspect but receives write refusals without changes; valid administrator mutations succeed.
Data
The setup needs no extra fixture records.
Bound to
Source
services-accounting:modules/books/tests/e2e/configuration-security.e2e.spec.js#is refused the create 403 permission_missing
02 Require application access and licensingpermissionapinegativetest
Proves
BR-CAP-ACC-BKS-016-02
Preconditions
Callers include denied access, missing licensing and access-only cases.
Steps
Request resource routes and vocabularies.
Expected
Access and licensing failures are distinct, and vocabulary reads need application access alone.
Data
The setup needs no extra fixture records.
Bound to
Source
services-accounting:modules/books/tests/e2e/currencies.e2e.spec.js#answers 403 app_not_permitted to a caller denied accounting.application.access
03 Separate resource permissionspermissionapinegativetest
Proves
BR-CAP-ACC-BKS-016-03
Preconditions
The caller administers business units only.
Steps
Read departments and templates and create a department.
Expected
Every unrelated-resource request receives a permission refusal.
Data
The setup needs no extra fixture records.
Bound to
Source
services-accounting:modules/books/tests/e2e/accounting-dimensions-security.e2e.spec.js#is refused a department create 403 permission_missing, though it may update the unit
04 Confine records to their workspaceinvariantapinegativetest
Proves
BR-CAP-ACC-BKS-016-04
Preconditions
Two workspaces contain colliding identities.
Steps
Attempt foreign reads, listings, deletion and references, including a cross-workspace database row.
Expected
Foreign data stays absent and inaccessible and the database refuses an invalid reference.
Data
The setup needs no extra fixture records.
Bound to
Source
services-accounting:modules/books/tests/e2e/configuration-security.e2e.spec.js#answers 404 in tenant B to a read of tenant A’s business unit
05 Reject stale or incomplete replacementsvalidationapinegativetest
Proves
BR-CAP-ACC-BKS-016-05
Preconditions
Records have known current versions.
Steps
Save without version, with an old version, without ordinary optional or required values, and with unknown properties.
Expected
Version, required and unknown-property failures are refused; omitted ordinary optional values clear.
Data
The setup needs no extra fixture records.
Bound to
Source
services-accounting:modules/books/tests/e2e/business-units.e2e.spec.js#answers 400 to a replacement without sys_version
06 Clean text before validationvalidationapinegativetest
Proves
BR-CAP-ACC-BKS-016-06
Preconditions
No prior record is required.
Steps
Save padded names and whitespace-only names.
Expected
Padding is removed and blank required names fail.
Data
The setup needs no extra fixture records.
Bound to
Source
services-accounting:modules/books/tests/e2e/departments.e2e.spec.js#answers 400 naming name for a name of nothing but spaces
07 Respect configured locksruleapinegativetest
Proves
BR-CAP-ACC-BKS-016-07
Preconditions
Records have full and delete-only locks.
Steps
Replace and delete under each lock.
Expected
The mutation is accepted or refused according to the lock’s scope.
Data
The setup needs no extra fixture records.
Bound to
Source
services-accounting:modules/books/tests/integration/services/persistence/gl-accounts.integration.spec.js#refuses an account locked against updates
08 Validate page requests and offset syntaxboundaryapinegativetest
Proves
BR-CAP-ACC-BKS-016-08
Preconditions
An unchanged collection spans multiple pages.
Steps
Read continuations, exceed the size limit and send a malformed offset cursor.
Expected
Pages cover the collection once; invalid limits and malformed syntax fail.
Data
The setup needs no extra fixture records.
Bound to
Source
services-accounting:modules/books/tests/e2e/business-units.e2e.spec.js#answers a page of the limit with the cursor of the next page
09 Keep reader editors safepermissionbrowsernegativetest
Proves
BR-CAP-ACC-BKS-016-09
Preconditions
A reader principal is available.
Steps
Open configuration lists and editors.
Expected
Lists load and editors expose no working mutation controls.
Data
The setup needs no extra fixture records.
Bound to
Source
react-console:acceptance/accounting/playwright/journeys/configuration/ACT-ACC-0013.spec.ts#ACT-ACC-0013
10 Audit configuration without alterationinteractionbrowsernegativeproposed
Proves
AS-JNY-ACC-BKS-005-01 AS-JNY-ACC-BKS-005-02 AS-JNY-ACC-BKS-005-03
Preconditions
A reader and isolated workspace records exist.
Steps
Complete the configuration audit journey.
Expected
Local configuration is inspectable, writes fail and foreign-workspace data remains absent.
Data
The setup needs no extra fixture records.
Source
react-console:acceptance/accounting/playwright/journeys/configuration/ACT-ACC-0013.spec.ts#ACT-ACC-0013
11 Refuse the second replacement of a shared read versionconcurrencyapinegativeproposed
Proves
BR-CAP-ACC-BKS-016-05
Preconditions
Two administrators read the same version of the relevant mutable record. Each prepares a different otherwise valid replacement.
Steps
Release both replacement requests from a barrier. Read the record again and retry the losing payload at its original version.
Expected
One replacement commits, the other is stale, and repeating the stale request preserves the winning values.
Data
Run-owned records for the stated setup; retain the initial values for comparison.
Source
services-accounting:modules/books/tests/e2e/payment-terms.e2e.spec.js#answers 400 naming is_active to a replacement that leaves it out
12 Resource grants govern unit setup atomicallyinteractionapiproposed
Proves
BR-CAP-ACC-BKS-016-01 BR-CAP-ACC-BKS-001-03
Preconditions
Run-owned records satisfy the preconditions of the referenced capability proofs.
Steps
Attempt creation as a reader, inspect unit and calendar absence, then repeat as an administrator.
Expected
The refused creation leaves no setup and the authorized creation supplies complete books.
Data
Run-owned records for the stated setup; retain the initial values for comparison.
Source
services-accounting:modules/books/tests/e2e/configuration-security.e2e.spec.js#is refused the create 403 permission_missing,services-accounting:modules/books/tests/integration/services/persistence/fiscal-years.integration.spec.js#gives the new unit exactly its two years, the one containing today and the next
13 Read-only chart access preserves protected destinationsinteractionapiproposed
Proves
BR-CAP-ACC-BKS-016-01 BR-CAP-ACC-BKS-005-05
Preconditions
Run-owned records satisfy the preconditions of the referenced capability proofs.
Steps
Read chart and defaults as a reader, attempt account replacement and removal, then compare the stored account and assignments.
Expected
Reader access leaves every account and default unchanged.
Data
Run-owned records for the stated setup; retain the initial values for comparison.
Source
services-accounting:modules/books/tests/e2e/configuration-security.e2e.spec.js#is refused the create 403 permission_missing,services-accounting:modules/books/tests/integration/services/persistence/gl-accounts.integration.spec.js#refuses deactivating the unit’s Accounts Receivable default, naming the purpose
14 Workspace availability precedes configuration accessinteractionapiproposed
Proves
BR-CAP-ACC-BKS-016-02 BR-CAP-ACC-BKS-019-07
Preconditions
Run-owned records satisfy the preconditions of the referenced capability proofs.
Steps
Exercise an ordinary configuration read against each observed workspace availability state with reader, administrator and staff contexts.
Expected
The request gate applies the cited availability exceptions before configuration work can proceed.
Data
Run-owned records for the stated setup; retain the initial values for comparison.
Source
services-accounting:modules/books/tests/e2e/currencies.e2e.spec.js#answers 403 app_unlicensed in a tenant whose licence does not carry Accounting,services-accounting:modules/maintenance/tests/unit/lifecycle/tenant-availability.spec.js#serves only an active tenant that is not disabled, and refuses every other combination
15 A stale document choice leaves the unit unchangedinteractionapiproposed
Proves
BR-CAP-ACC-BKS-016-05 BR-CAP-ACC-BKS-015-04
Preconditions
Run-owned records satisfy the preconditions of the referenced capability proofs.
Steps
Save one valid unit document selection, then submit a different valid selection at the old version and resolve content.
Expected
The stale choice cannot replace the saved selection or change subsequent resolution.
Data
Run-owned records for the stated setup; retain the initial values for comparison.
Source
services-accounting:modules/books/tests/e2e/payment-terms.e2e.spec.js#answers 400 naming is_active to a replacement that leaves it out,services-accounting:modules/books/tests/e2e/document-templates.e2e.spec.js#answers 400 to a business unit naming an inactive template

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.