Skip to content

ATS-PFM-INT-007Assign provider connections to business needs: Capability Test Specification

Markdown

ATS-PFM-INT-007

Assign provider connections to business needs: Capability Test Specification

Markdown
  • DocumentProposed

KindAcceptance test setProduct areaPlatformModuleIntegration access, customer extensions and shared workflow configurationRevision3

Read atservices-platform ad3f6a65macroservice-libraries 54536a44react-console baf6dae3

Coverage

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

Test Scenarios

14 scenarios proving CAP-PFM-INT-007; 10 bound to an existing test.

01 Replacement maintains one current scope choiceconcurrencyapitest
Proves
BR-CAP-PFM-INT-007-01
Preconditions
A business-unit binding selects A at its first revision.
Steps
Replace it with B and race two creates at an unbound scope.
Expected
A becomes superseded, B advances the revision and the race leaves one active winner with a conflict for the other.
Data
Fixtures establishing the stated accounts, declarations and history in an isolated workspace.
Bound to
Source
services-platform:modules/integrations/tests/integration/services/persistence/integration-bindings.integration.spec.js#leaves one active binding at the scope
02 Ineligible targets do not replace a valid choicevalidationapinegativetest
Proves
BR-CAP-PFM-INT-007-02
Preconditions
Prepare paused, foreign-workspace and unsupported connections alongside a usable one.
Steps
Attempt bindings with each invalid condition and then the usable target.
Expected
Every rejection identifies its field and preserves the earlier binding; the valid choice succeeds.
Data
Fixtures establishing the stated accounts, declarations and history in an isolated workspace.
Bound to
Source
services-platform:modules/integrations/tests/integration/services/persistence/integration-bindings.integration.spec.js#refuses a required feature the connection has not verified
03 Default fallback depends on sensitivityruleunittest
Proves
BR-CAP-PFM-INT-007-03
Preconditions
Prepare a payment contract and an event contract.
Steps
Create bindings without specifying ineligibility policy.
Expected
Payments default to refusal and events default to broader-scope fallback.
Data
Fixtures establishing the stated accounts, declarations and history in an isolated workspace.
Bound to
Source
services-platform:modules/integrations/tests/unit/services/binding-migration-rules.spec.ts#gives a sensitive capability the refusing default
04 Removal exposes the next configured scopeinteractionapitest
Proves
BR-CAP-PFM-INT-007-04
Preconditions
A record and its business unit each have a binding.
Steps
Remove the record choice, Explain and inspect history.
Expected
The business-unit connection resolves the next call and the old record choice remains traceable.
Data
Fixtures establishing the stated accounts, declarations and history in an isolated workspace.
Bound to
Source
services-platform:modules/integrations/tests/e2e/integration-bindings.e2e.spec.js#supersedes it, and the scope resolves without it
05 Binding revisions cannot be rewritteninvariantapitest
Proves
BR-CAP-PFM-INT-007-05
Preconditions
A scope has been created, replaced and unbound.
Steps
Read its revisions and attempt direct revision update and deletion.
Expected
Newest-first snapshots retain reason, actor and time, and attempts to rewrite or delete history are refused.
Data
Fixtures establishing the stated accounts, declarations and history in an isolated workspace.
Bound to
Source
services-platform:modules/integrations/tests/integration/db/integration-binding-revisions.table.integration.spec.js#refuses an UPDATE of a revision by the application role, so a history cannot be rewritten
06 Connection changes invalidate only affected choicestransitionapitest
Proves
BR-CAP-PFM-INT-007-06
Preconditions
A connection has two choices, including one requiring a feature.
Steps
Suspend, resume, remove that feature and update to a release without the major.
Expected
Pause invalidates, resume restores, feature loss identifies its affected choice and unsupported major leaves the applicable binding invalid.
Data
Fixtures establishing the stated accounts, declarations and history in an isolated workspace.
Bound to
Source
services-platform:modules/integrations/tests/integration/services/bindings/invalidation.integration.spec.js#invalidates its active bindings with connection_suspended, at the next revision
07 Invalidation notices respect transaction outcomesfailureapitest
Proves
BR-CAP-PFM-INT-007-07
Preconditions
Two active bindings select one connection.
Steps
Suspend, resume and attempt another suspension in a rolled-back change.
Expected
One committed-loss e-mail names both choices; restoration and rollback send no notice.
Data
Fixtures establishing the stated accounts, declarations and history in an isolated workspace.
Bound to
Source
services-platform:modules/integrations/tests/integration/services/bindings/invalidation.integration.spec.js#tells the administrators once, after the commit, naming both bindings and why
08 Retirement moves valid choices and reports failed movesinteractionbrowsertest
Proves
BR-CAP-PFM-INT-007-08 AS-JNY-PFM-INT-002-02
Preconditions
Main account has two bindings and a proposed replacement lacks a feature one needs.
Steps
Request disconnect, inspect the move offer, confirm the move and retry disconnect when dependencies are removed.
Expected
The offer appears after refusal, the eligible choice moves while the failed one reports its reason, and disconnection succeeds only once none remain.
Data
Fixtures establishing the stated accounts, declarations and history in an isolated workspace.
Bound to
Source
services-platform:modules/integrations/tests/integration/services/bindings/binding-move.integration.spec.js#replaces every active binding of the source with one choosing the target, at the same scope, policy and note
09 Contract migration is repeatable and supports previewedgeapitest
Proves
BR-CAP-PFM-INT-007-09
Preconditions
Prepare current major-one choices and an eligible scripted major two.
Steps
Preview migration, apply it and repeat the request.
Expected
Preview writes nothing, valid targets become first revisions and repetition identifies already-created copies.
Data
Fixtures establishing the stated accounts, declarations and history in an isolated workspace.
Bound to
Source
services-platform:modules/integrations/tests/integration/services/bindings/binding-migration.integration.spec.js#refuses each ineligible binding with its reason and leaves the already migrated one alone
10 Readers inspect bindings without editingpermissionapinegativetest
Proves
BR-CAP-PFM-INT-007-10
Preconditions
Prepare an integration reader and manager.
Steps
List bindings, read revisions and attempt to create a choice as each.
Expected
Both can inspect the records and only the manager can change them.
Data
Fixtures establishing the stated accounts, declarations and history in an isolated workspace.
Bound to
Source
services-platform:modules/integrations/tests/e2e/integration-bindings.e2e.spec.js#is refused a reader of integrations (403)
11 Exercise the complete capability binding lifecycletransitionapinegativeproposed
Proves
BR-CAP-PFM-INT-007-01 BR-CAP-PFM-INT-007-04 BR-CAP-PFM-INT-007-06
Preconditions
Prepare one independent record in each starting state, including absent-record cases where the model defines creation.
Steps
Run each listed transition once with its guard satisfied, then repeat it with the guard denied. Inspect the resulting record and listed side effects after commit.
Expected
Each positive case reaches its listed destination and records its defined side effects. Each denied case preserves the starting record and creates no transition side effects.
Data
Run-owned records and principals in an isolated workspace.
Source
rhythm-v2-docs:specs/platform/integrations/design/state-models/STATE-PFM-INT-006-capability-binding-lifecycle.md#transitions
12 Removing a narrow choice reveals a broader oneinteractionapiproposed
Proves
BR-CAP-PFM-INT-007-04 BR-CAP-PFM-INT-008-01
Preconditions
Record and business-unit bindings select different usable accounts.
Steps
Resolve for the record, remove its binding and resolve again.
Expected
Selection changes to the business-unit account while the removed choice remains in revision history.
Data
Run-owned records and principals in an isolated workspace.
Source
services-platform:modules/integrations/tests/e2e/integration-bindings.e2e.spec.js#supersedes it, and the scope resolves without it,services-platform:modules/integrations/tests/unit/services/binding-resolution.spec.ts#asks every scope the policy allows and the context names, most specific first
13 An invalid selection cannot send a paymentinteractionapiproposed
Proves
BR-CAP-PFM-INT-007-06 BR-CAP-PFM-INT-009-07
Preconditions
A sensitive capability selects an active account.
Steps
Suspend the account, inspect binding invalidation and invoke through the saved scope.
Expected
The request refuses before provider contact and uses no broader processor.
Data
Run-owned records and principals in an isolated workspace.
Source
services-platform:modules/integrations/tests/integration/services/bindings/invalidation.integration.spec.js#invalidates its active bindings with connection_suspended, at the next revision,services-platform:modules/integrations/tests/integration/services/executions/invoke-capability.integration.spec.js#refuses with 503 provider_unavailable while the circuit is open, and releases the key
14 Moving selections makes account retirement possibleinteractionapiproposed
Proves
BR-CAP-PFM-INT-004-07 BR-CAP-PFM-INT-007-08
Preconditions
An old account has two bindings and a replacement lacks one required feature.
Steps
Move selections, inspect per-binding results, remove the remaining dependency and disconnect the old account.
Expected
The eligible binding moves, the failed move retains its source, and closure succeeds only after every dependency is removed.
Data
Run-owned records and principals in an isolated workspace.
Source
services-platform:modules/integrations/tests/e2e/disconnect-and-uninstall.e2e.spec.js#answers a disconnection of a bound connection 409, code connection_has_bindings, naming each binding,services-platform:modules/integrations/tests/integration/services/bindings/binding-move.integration.spec.js#replaces every active binding of the source with one choosing the target, at the same scope, policy and note

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.