Skip to content

ATS-PFM-QRY-001Discover the data available for questions: Capability Test Specification

Markdown

ATS-PFM-QRY-001

Discover the data available for questions: Capability Test Specification

Markdown
  • DocumentProposed

KindAcceptance test setProduct areaPlatformModuleQuestions, record exploration and data deliveryRevision2

Read atservices-platform ad3f6a65react-console baf6dae3rhythm-v2-docs 99376625

Coverage

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

Test Scenarios

14 scenarios proving CAP-PFM-QRY-001; 11 bound to an existing test.

01 Catalog separates existence from accesspermissionapitest
Proves
BR-CAP-PFM-QRY-001-01
Preconditions
The caller has surface access and one dataset grant.
Steps
List datasets with that grant and with no dataset grants.
Expected
Entries retain their authorization flags; denied entries remain visible.
Data
Use the existing binding’s controlled fixture data.
Bound to
services-platform:modules/queries/tests/e2e/datasets.e2e.spec.js#answers each dataset with whether this caller may use it
services-platform:modules/queries/tests/e2e/datasets.e2e.spec.js#lists every dataset as unauthorized for a caller holding no dataset permission
services-platform:modules/queries/tests/e2e/datasets.e2e.spec.js#counts no authorized dataset in the application for such a caller
Source
services-platform:modules/queries/tests/e2e/datasets.e2e.spec.js#answers each dataset with whether this caller may use it
02 Dataset access and absence differpermissionapinegativetest
Proves
BR-CAP-PFM-QRY-001-02 INV-DOM-PFM-QRY-001-01
Preconditions
Contacts is registered but the caller lacks its query grant.
Steps
Describe and execute Contacts, then request an unregistered subject.
Expected
The denied operations return 403; the missing subject returns 404.
Data
Use the existing binding’s controlled fixture data.
Bound to
services-platform:modules/queries/tests/e2e/datasets.e2e.spec.js#refuses a dataset the caller holds no query permission for as 403
services-platform:modules/queries/tests/e2e/datasets.e2e.spec.js#answers 404 for a dataset no application registered
services-platform:modules/queries/tests/e2e/datasets.e2e.spec.js#refuses to describe it for a caller holding the surface key and not the dataset key
services-platform:modules/queries/tests/e2e/datasets.e2e.spec.js#refuses to run a query on it for that caller
Source
services-platform:modules/queries/tests/e2e/datasets.e2e.spec.js#refuses a dataset the caller holds no query permission for as 403
03 Record read denial overrides a query grantpermissionapinegativetest
Proves
BR-CAP-PFM-QRY-001-03
Preconditions
A role allows organization queries but denies organization reading.
Steps
Describe Organizations and inspect the dataset catalog.
Expected
Organizations is refused and unauthorized; Contacts remains available.
Data
Use the existing binding’s controlled fixture data.
Bound to
services-platform:modules/queries/tests/integration/services/describe/dataset-effective-permissions.integration.spec.js#refuses Organizations to a caller denied crm.organizations.read, though the role still grants crm.organizations.query
Source
services-platform:modules/queries/tests/integration/services/describe/dataset-effective-permissions.integration.spec.js#refuses Organizations to a caller denied crm.organizations.read, though the role still grants crm.organizations.query
04 Application access is independently requiredpermissionapinegativetest
Proves
BR-CAP-PFM-QRY-001-04
Preconditions
Test roles lack application access despite a dataset grant.
Steps
Execute the contact question under each role and a fully granted role.
Expected
Denied roles receive 403 naming the missing permission; the granted role succeeds.
Data
Use the existing binding’s controlled fixture data.
Bound to
services-platform:modules/queries/tests/e2e/dataset-effective-permissions.e2e.spec.js#refuses a role holding the dataset key without the application's access key 403, naming the key
services-platform:modules/queries/tests/e2e/dataset-effective-permissions.e2e.spec.js#answers 200 to a plain grant of the dataset key and the application key
Source
services-platform:modules/queries/tests/e2e/dataset-effective-permissions.e2e.spec.js#refuses a role holding the dataset key without the application's access key 403, naming the key
05 Descriptions withhold storage and inaccessible relationshipsinvariantapitest
Proves
BR-CAP-PFM-QRY-001-05
Preconditions
The reader can query contacts but lacks related-dataset access.
Steps
Describe Contacts and request a value through the inaccessible relation.
Expected
The description omits storage details and the related field is treated as unavailable.
Data
Use the existing binding’s controlled fixture data.
Bound to
services-platform:modules/queries/tests/e2e/datasets.e2e.spec.js#tells the console nothing of how a field is stored
services-platform:modules/queries/tests/integration/services/execute/run-query.integration.spec.js#refuses a field of a dataset the caller may not query exactly as it refuses one that does not exist
Source
services-platform:modules/queries/tests/e2e/datasets.e2e.spec.js#tells the console nothing of how a field is stored
06 Metadata invalidates the appropriate descriptioninvariantapitest
Proves
BR-CAP-PFM-QRY-001-07 INV-DOM-PFM-QRY-001-05
Preconditions
A contact description is already cached.
Steps
Add a field, rename a classification and revise registration, requesting a new description after each.
Expected
Changes appear immediately; another workspace’s change does not invalidate this cache.
Data
Use the existing binding’s controlled fixture data.
Bound to
services-platform:modules/queries/tests/integration/services/describe/description-stamp-coverage.integration.spec.js#describes a registration change, which moves the global stamp, on the very next build
Source
services-platform:modules/queries/tests/integration/services/describe/description-stamp-coverage.integration.spec.js#describes a custom field the tenant adds on the very next build
07 Discovery suggestions do not alter executionruleapitest
Proves
BR-CAP-PFM-QRY-001-08
Preconditions
The fixture includes several statuses and an active-only discovery default.
Steps
Execute without a status condition and with an explicit inactive condition.
Expected
Both requests follow their submitted criteria rather than injected defaults.
Data
Use the existing binding’s controlled fixture data.
Bound to
services-platform:modules/queries/tests/integration/services/execute/discovery-defaults.integration.spec.js#answers every contact of the tenant whatever its status, nothing having injected the reported criteria
services-platform:modules/queries/tests/integration/services/execute/discovery-defaults.integration.spec.js#answers the inactive contacts of the caller’s tenant, a rule never narrowing what a query asks for
Source
services-platform:modules/queries/tests/integration/services/execute/discovery-defaults.integration.spec.js#answers every contact of the tenant whatever its status, nothing having injected the reported criteria
08 Custom-object access remains object-scopedpermissionapinegativetest
Proves
BR-CAP-PFM-QRY-001-09
Preconditions
An active Boats object exists with grants scoped to different objects.
Steps
List, describe and execute it with matching and nonmatching grants.
Expected
The matching reader can use it; the other sees unauthorized and receives 403.
Data
Use the existing binding’s controlled fixture data.
Bound to
services-platform:modules/queries/tests/e2e/custom-object-datasets.e2e.spec.js#lists objects.boats under the objects application, authorized for the holder
services-platform:modules/queries/tests/e2e/custom-object-datasets.e2e.spec.js#is answered objects.boats as not authorized in the catalog
Source
services-platform:modules/queries/tests/e2e/custom-object-datasets.e2e.spec.js#lists objects.boats under the objects application, authorized for the holder
09 Registration errors remain response datatransitionapitest
Proves
BR-CAP-PFM-QRY-001-10 INV-DOM-PFM-QRY-001-03
Preconditions
One application declaration is valid and another is invalid.
Steps
Invoke registration for both declarations.
Expected
Success identifies the application; rejection identifies the declaration problem.
Data
Use the existing binding’s controlled fixture data.
Bound to
services-platform:modules/queries/tests/e2e/datasets.e2e.spec.js#accepts the manifest, naming the application it registered
services-platform:modules/queries/tests/e2e/datasets.e2e.spec.js#answers a refusal rather than throwing, so the deploy step reads it
Source
services-platform:modules/queries/tests/e2e/datasets.e2e.spec.js#accepts the manifest, naming the application it registered
10 Scope incompatibilities fail registrationvalidationunitnegativetest
Proves
BR-CAP-PFM-QRY-001-11
Preconditions
Declarations include a missing workspace source and cross-scope references.
Steps
Submit each incompatible declaration.
Expected
Rejection identifies the relevant source, field or scope mismatch.
Data
Use the existing binding’s controlled fixture data.
Bound to
services-platform:modules/queries/tests/integration/services/registration/register-query-application.integration.spec.js#refuses a tenant-scoped dataset whose base has no tenant_id, naming the relation and the scope it should declare
services-platform:modules/queries/tests/integration/services/registration/register-query-application.integration.spec.js#refuses a tenant-scoped dataset that references a system one, naming the field and both scopes
services-platform:modules/queries/tests/integration/services/registration/register-query-application.integration.spec.js#refuses a system dataset that references a tenant one, naming the field and both scopes
Source
services-platform:modules/queries/tests/integration/services/registration/register-query-application.integration.spec.js#refuses a tenant-scoped dataset whose base has no tenant_id, naming the relation and the scope it should declare
11 Opening fields belong to the recordvalidationunitnegativetest
Proves
BR-CAP-PFM-QRY-001-12
Preconditions
Declarations mark a selected collection value or missing field as a record-opening field.
Steps
Register both declarations.
Expected
Both are refused before registration completes.
Data
Use the existing binding’s controlled fixture data.
Bound to
services-platform:modules/queries/tests/integration/services/registration/register-query-application.integration.spec.js#refuses a pick as a link field, because a pick is not a field of the record itself
Source
services-platform:modules/queries/tests/integration/services/registration/register-query-application.integration.spec.js#refuses a link field the dataset does not have
12 A discovery suggestion does not hide inactive recordsinteractionapiproposed
Proves
BR-CAP-PFM-QRY-001-08 BR-CAP-PFM-QRY-002-01
Preconditions
Contacts includes active and inactive records; the description suggests active records.
Steps
Read the description, then run an unfiltered contact question and a question selecting inactive records.
Expected
The first answer contains both statuses and the second contains only the inactive fixture.
Data
Use an isolated workspace with the described source records, access grants and a surviving control workspace.
Source
services-platform:modules/queries/tests/e2e/datasets.e2e.spec.js#refuses a dataset the caller holds no query permission for as 403,services-platform:modules/queries/tests/integration/services/execute/current-user-criterion.integration.spec.js#answers a second caller their own tasks, from the very same criterion
13 A tailored dataset disappears from new choices before execution stopsinteractionapinegativeproposed
Proves
BR-CAP-PFM-QRY-001-02 BR-CAP-PFM-QRY-005-10
Preconditions
One assigned tailored dataset supplies a retained question.
Steps
Read its description, deprecate it, reopen the retained question, then disable it and run again.
Expected
Deprecation removes the new choice while the retained question still resolves; disabling produces the explicit refusal.
Data
Use an isolated workspace with the described source records, access grants and a surviving control workspace.
Source
services-platform:modules/queries/tests/e2e/datasets.e2e.spec.js#refuses a dataset the caller holds no query permission for as 403,services-platform:modules/queries/services/custom-tables/assignment-visibility.ts:visibleCustomTables
14 A recipe can be discovered before its subject is usableinteractionapinegativeproposed
Proves
BR-CAP-PFM-QRY-001-01 BR-CAP-PFM-QRY-008-02
Preconditions
A contact recipe is active and the caller lacks contact query access.
Steps
List datasets and recipes, then try drafting the contact recipe.
Expected
Both catalogs expose the subject with unavailable access; drafting is refused without a runnable question.
Data
Use an isolated workspace with the described source records, access grants and a surviving control workspace.
Source
services-platform:modules/queries/tests/e2e/datasets.e2e.spec.js#refuses a dataset the caller holds no query permission for as 403,services-platform:modules/queries/tests/e2e/query-recipes.e2e.spec.js#refuses a draft of a dataset this caller may not query as 403

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.