Skip to content

ATS-PFM-NOT-001Declare application notification types: Capability Test Specification

Markdown

ATS-PFM-NOT-001

Declare application notification types: Capability Test Specification

Markdown
  • DocumentProposed

KindAcceptance test setProduct areaPlatformModuleStaff Notifications and Association CommunicationsRevision2

Read atservices-platform ad3f6a65react-console baf6dae3

Coverage

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

Test Scenarios

15 scenarios proving CAP-PFM-NOT-001; 13 bound to an existing test.

01 Reject foreign, duplicate and invalid keysvalidationapinegativetest
Proves
BR-CAP-PFM-NOT-001-01
Preconditions
Prepare a registry with one application's definitions.
Steps
Submit for registration a manifest with a key of another application; next one with a key declared twice; next a key that is not three lowercase words.
Expected
Registration identifies the invalid definition and field, rejects the manifest and leaves the registry unchanged.
Data
Use only records created and owned by this suite.
Bound to
services-platform:modules/notifications/tests/integration/services/persistence/definitions.integration.spec.js#refuses a key that does not begin with the application, by the table’s own check
Source
services-platform:modules/notifications/tests/integration/services/registration/register-service-notifications.integration.spec.js#refuses a key that belongs to another application
02 Reject unsupported declaration valuesvalidationunitnegativetest
Proves
BR-CAP-PFM-NOT-001-02
Preconditions
Prepare a manifest that passes baseline validation.
Steps
Modify, separately, the category, severity, preference mode, delivery requirement, supersede scope and audience kinds to values outside their lists, and remove every audience kind.
Expected
Each invalid enumeration or empty audience-type list produces a field-specific registration rejection.
Data
Use only records created and owned by this suite.
Bound to
services-platform:modules/notifications/tests/unit/registration-manifest.spec.js#refuses a delivery requirement outside its closed list
Source
services-platform:modules/notifications/tests/unit/registration-manifest.spec.js#refuses a category outside its closed list
03 Preserve required channel defaultsvalidationunitnegativetest
Proves
BR-CAP-PFM-NOT-001-03
Preconditions
Prepare a manifest that passes baseline validation.
Steps
Submit declarations without console support, with unsupported defaults, and with mandatory defaults omitting console or supported e-mail.
Expected
Invalid channel combinations fail. A mandatory console-only declaration is valid when it does not support e-mail.
Data
Use only records created and owned by this suite.
Bound to
services-platform:modules/notifications/tests/unit/registration-manifest.spec.js#refuses default channels the definition does not support
services-platform:modules/notifications/tests/unit/registration-manifest.spec.js#refuses a mandatory definition whose defaults leave out e-mail where e-mail is supported
services-platform:modules/notifications/tests/unit/registration-manifest.spec.js#refuses a mandatory definition whose defaults leave out the console
services-platform:modules/notifications/tests/unit/registration-manifest.spec.js#accepts a mandatory definition without e-mail among its channels, the console alone being required
Source
services-platform:modules/notifications/tests/unit/registration-manifest.spec.js#refuses supported channels without the console
04 Validate the closed request-data contractvalidationapinegativetest
Proves
BR-CAP-PFM-NOT-001-04
Preconditions
Prepare a manifest that passes baseline validation.
Steps
Submit for registration a schema open at its root; one that is not JSON Schema; one with a field named recipient; an example the schema rejects; no examples; eleven examples.
Expected
Each invalid schema or example is rejected with its definition and field identified.
Data
Use only records created and owned by this suite.
Bound to
Source
services-platform:modules/notifications/tests/integration/services/registration/register-service-notifications.integration.spec.js#refuses a data schema that is not closed at its root
05 Validate wording before publicationvalidationapinegativetest
Proves
BR-CAP-PFM-NOT-001-05
Preconditions
Prepare a manifest that passes baseline validation.
Steps
Submit for registration templates that read an undeclared field; that do not parse; that render a 141-character title; a 307-character text; no English; a supported channel with no template.
Expected
Invalid wording rejects the declaration with a precise location; a valid manifest becomes visible in the HQ catalog.
Data
Use only records created and owned by this suite.
Bound to
services-platform:modules/notifications/tests/unit/templates.spec.js#refuses an e-mail whose subject renders empty
Source
services-platform:modules/notifications/tests/integration/services/registration/register-service-notifications.integration.spec.js#refuses a template that names a field the schema does not declare
06 Validate navigation and operation referencesvalidationapinegativetest
Proves
BR-CAP-PFM-NOT-001-06
Preconditions
Prepare a application with a published API registry.
Steps
Submit for registration a destination with an undeclared placeholder; an operation action naming an operation the API lacks; one that is not a console route; a valid one.
Expected
The three invalid declarations fail; a valid operation action retains the permission required by its console route.
Data
Use only records created and owned by this suite.
Bound to
Source
services-platform:modules/notifications/tests/unit/registration-manifest.spec.js#refuses a placeholder the parameters do not declare
07 Keep established category and preference identityinvariantapinegativetest
Proves
BR-CAP-PFM-NOT-001-08 INV-DOM-PFM-NOT-003-10
Preconditions
Prepare a definition already present in the registry.
Steps
Submit for registration a later release that changes its category; next one that changes its preference mode.
Expected
Both changes fail with an instruction to declare a different key.
Data
Use only records created and owned by this suite.
Bound to
services-platform:modules/notifications/tests/integration/services/registration/register-service-notifications.integration.spec.js#refuses a category that changes between releases, telling the owner to re-key the definition
services-platform:modules/notifications/tests/integration/services/registration/register-service-notifications.integration.spec.js#refuses a preference mode that changes between releases, telling the owner to re-key the definition
Source
services-platform:modules/notifications/tests/integration/services/registration/register-service-notifications.integration.spec.js#refuses a category that changes between releases, telling the owner to re-key the definition
08 Return an actionable deployment rejectionfailureapinegativetest
Proves
BR-CAP-PFM-NOT-001-09
Preconditions
Prepare a manifest with one bad definition among good ones.
Steps
Call the registration function with it.
Expected
The response reports the registration problem and stores none of the manifest's definitions.
Data
Use only records created and owned by this suite.
Bound to
services-platform:modules/notifications/tests/integration/services/registration/register-service-notifications.integration.spec.js#answers a refused manifest as { ok: false, error } rather than throwing, so the deploy reports why
Source
services-platform:modules/notifications/tests/integration/services/registration/register-service-notifications.integration.spec.js#answers a refused manifest as { ok: false, error } rather than throwing, so the deploy reports why
09 Version, retire and reactivate declarationstransitionapitest
Proves
BR-CAP-PFM-NOT-001-10
Preconditions
Prepare a application with two registered definitions.
Steps
Submit for registration the identical manifest a second time; a manifest that changes one; a manifest that removes one; a manifest that declares it a second time.
Expected
Identical content causes no write; changed content becomes version two under the new release; omission retires without deletion; redeclaration reactivates.
Data
Use only records created and owned by this suite.
Bound to
services-platform:modules/notifications/tests/integration/services/persistence/definitions.integration.spec.js#retires the application’s undeclared definitions, answers their keys sorted, and deletes none
Source
services-platform:modules/notifications/tests/integration/services/registration/register-service-notifications.integration.spec.js#leaves an unchanged definition unwritten and reports it unchanged
10 Cancel open work after retirementtransitionapitest
Proves
BR-CAP-PFM-NOT-001-11
Preconditions
Prepare a organization with one open and one settled request of a definition, and settings of it.
Steps
Submit for registration a manifest that no longer declares the definition.
Expected
The open request becomes cancelled and settled; the settled request and stored workspace settings stay unchanged. Existing notices and queued deliveries remain in place.
Data
Use only records created and owned by this suite.
Bound to
Source
services-platform:modules/notifications/tests/integration/services/registration/register-service-notifications.integration.spec.js#cancels the tenant’s accepted request that had not settled
11 Restrict global catalog access to HQpermissionapinegativetest
Proves
BR-CAP-PFM-NOT-001-13
Preconditions
Two applications' definitions registered.
Steps
Retrieve the list of the registry as Rhythm staff, narrowed by application and status; call it as a console user with every platform key.
Expected
Authorized staff receive declarations without schemas or content; the console caller is denied.
Data
Use only records created and owned by this suite.
Bound to
services-platform:modules/notifications/tests/integration/services/centre/hq-notifications.integration.spec.js#lists every application’s definitions, narrowed by application and status
services-platform:modules/notifications/tests/integration/services/centre/hq-notifications.integration.spec.js#answers each definition’s declaration without its templates or data schema
services-platform:modules/notifications/tests/e2e/notifications.e2e.spec.js#refuses the system door and Rhythm HQ’s routes to a console caller, even one holding every platform key
Source
services-platform:modules/notifications/tests/integration/services/centre/hq-notifications.integration.spec.js#lists every application’s definitions, narrowed by application and status
12 Check the deployment envelope before registrationvalidationapitest
Proves
AS-JNY-PFM-NOT-005-01
Preconditions
Prepare a registry and an application's manifest.
Steps
Submit for registration a bad manifest, next a good one, and list the registry.
Expected
The invalid manifest leaves no definitions; the valid manifest appears in the catalog.
Data
The journey's own personas and Northeast unit.
Bound to
Source
react-console:acceptance/notifications/playwright/journeys/pipeline/NT-ACC-0204.spec.ts#NT-ACC-0204
13 Reject declaration-envelope violationsboundaryapiproposed
Proves
BR-CAP-PFM-NOT-001-14
Preconditions
Prepare a valid manifest and the registry intake.
Steps
Submit unsupported format, excess definitions or locales, repeated channels and invalidly structured duration values.
Expected
Each invalid declaration prevents the manifest from registering.
Data
A valid manifest and the registry intake.
Source
services-platform:modules/notifications/services/registration/registration-manifest.ts:notificationsManifestSchema
14 Registration reaches both personal and operational processinginteractionapiproposed
Proves
BR-CAP-PFM-NOT-001-10
Preconditions
Create a valid personal declaration and an HQ declaration with a channel mapping; retain stored preferences for both.
Steps
Register both declarations, publish one occurrence of each, then inspect rendered content and selected channels.
Expected
The personal occurrence has its declared console wording; the operational occurrence has its mapped Slack payload. Stored channel preferences do not activate additional personal channels.
Data
A suite-owned workspace, named staff accounts and unique occurrence keys; external adapters record attempts without shared writes.
Source
rhythm-v2-docs:specs/platform/notifications/planning/capabilities/CAP-PFM-NOT-001-register-the-kinds-of-notification-an-application-can-send.md#frontmatter,rhythm-v2-docs:specs/platform/notifications/planning/capabilities/CAP-PFM-NOT-002-tell-people-that-something-happened-with-one-call.md#frontmatter,rhythm-v2-docs:specs/platform/notifications/planning/capabilities/CAP-PFM-NOT-004-word-each-notice-for-the-person-who-receives-it.md#frontmatter,rhythm-v2-docs:specs/platform/notifications/planning/capabilities/CAP-PFM-NOT-013-alert-rhythms-own-staff-in-slack.md#frontmatter,rhythm-v2-docs:specs/platform/notifications/planning/capabilities/CAP-PFM-NOT-015-let-the-organization-and-its-people-choose-how-they-hear.md#frontmatter
15 Validate the complete Platform declaration setruleunittest
Proves
BR-CAP-PFM-NOT-001-12
Preconditions
Read the test, responsibility and provisioning declarations from the Platform manifest.
Steps
Validate the full manifest, inspect its declared keys and render every example through the real content checker.
Expected
The manifest contains the test declaration, four responsibility declarations and two provisioning declarations; all schemas and examples pass their checks.
Data
Pure declaration and example inputs in one process.
Bound to
services-platform:modules/notifications/tests/unit/platform-notification-definitions.spec.js#registers the test notification, the responsibilities producer’s four and the tenant provisioning alerts
Source
services-platform:modules/notifications/tests/unit/platform-notification-definitions.spec.js#registers the test notification, the responsibilities producer’s four and the tenant provisioning alerts

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.