---
id: TST-PFM-INT-554
title: integration bindings
kind: integration
product_area: platform
module: integrations
revision: 1
status: draft
source_sha:
  services-platform: ad3f6a6582843008ed0f5a17b131878d15829af1
  macroservice-libraries: 54536a441935c6e09fdb7f96f0bec71c52ba4e03
  react-console: baf6dae382d6f41dce976c7f848667ccc37e076f
repository: services-platform
files:
  - modules/integrations/tests/integration/services/persistence/integration-bindings.integration.spec.js
implements:
  - ATS-PFM-INT-007-01
  - ATS-PFM-INT-007-02
  - ATS-PFM-INT-007-03
  - ATS-PFM-INT-007-04
  - ATS-PFM-INT-007-05
environment: local
implementation_state: implemented
latest_result: not-run
latest_run_at: null
latest_run_ref: null
conformance: not-verified
estimated_minutes: 5
isolation: >-
  Use the suite-owned database fixtures and its declared cleanup; prepare the test database before
  integration or lifecycle execution.
evidence:
  - >-
    services-platform:modules/integrations/tests/integration/services/persistence/integration-bindings.integration.spec.js
test_cases:
  - source: >-
      services-platform:modules/integrations/tests/integration/services/persistence/integration-bindings.integration.spec.js#answers
      the binding active at revision 1, with the capability’s default policy and its features sorted once
    provenance: test
  - source: >-
      services-platform:modules/integrations/tests/integration/services/persistence/integration-bindings.integration.spec.js#stores
      what it answered
    provenance: test
  - source: >-
      services-platform:modules/integrations/tests/integration/services/persistence/integration-bindings.integration.spec.js#copies
      it to its revisions as created
    provenance: test
  - source: >-
      services-platform:modules/integrations/tests/integration/services/persistence/integration-bindings.integration.spec.js#supersedes
      the binding it replaces
    provenance: test
  - source: >-
      services-platform:modules/integrations/tests/integration/services/persistence/integration-bindings.integration.spec.js#writes
      the new one active at the next revision, with the policy it was given
    provenance: test
  - source: >-
      services-platform:modules/integrations/tests/integration/services/persistence/integration-bindings.integration.spec.js#copies
      the new one as replaced
    provenance: test
  - source: >-
      services-platform:modules/integrations/tests/integration/services/persistence/integration-bindings.integration.spec.js#leaves
      the replaced binding’s own revisions as they were
    provenance: test
  - source: >-
      services-platform:modules/integrations/tests/integration/services/persistence/integration-bindings.integration.spec.js#leaves
      one active binding at the scope
    provenance: test
  - source: >-
      services-platform:modules/integrations/tests/integration/services/persistence/integration-bindings.integration.spec.js#supersedes
      the invalid one too, so the scope has one current binding
    provenance: test
  - source: >-
      services-platform:modules/integrations/tests/integration/services/persistence/integration-bindings.integration.spec.js#refuses
      a capability the contracts do not define
    provenance: test
  - source: >-
      services-platform:modules/integrations/tests/integration/services/persistence/integration-bindings.integration.spec.js#refuses
      a scope kind the capability’s policy does not allow
    provenance: test
  - source: >-
      services-platform:modules/integrations/tests/integration/services/persistence/integration-bindings.integration.spec.js#refuses
      a capability invoked only on a named connection
    provenance: test
  - source: >-
      services-platform:modules/integrations/tests/integration/services/persistence/integration-bindings.integration.spec.js#refuses
      a tenant scope whose reference is not *
    provenance: test
  - source: >-
      services-platform:modules/integrations/tests/integration/services/persistence/integration-bindings.integration.spec.js#refuses
      an application scope naming no application
    provenance: test
  - source: >-
      services-platform:modules/integrations/tests/integration/services/persistence/integration-bindings.integration.spec.js#refuses
      a resource of an object the capability does not bind
    provenance: test
  - source: >-
      services-platform:modules/integrations/tests/integration/services/persistence/integration-bindings.integration.spec.js#refuses
      a resource bound by an application that does not own it
    provenance: test
  - source: >-
      services-platform:modules/integrations/tests/integration/services/persistence/integration-bindings.integration.spec.js#refuses
      a resource binding that names no application
    provenance: test
  - source: >-
      services-platform:modules/integrations/tests/integration/services/persistence/integration-bindings.integration.spec.js#refuses
      a feature the contract does not define
    provenance: test
  - source: >-
      services-platform:modules/integrations/tests/integration/services/persistence/integration-bindings.integration.spec.js#refuses
      a connection of another tenant as one the tenant does not have
    provenance: test
  - source: >-
      services-platform:modules/integrations/tests/integration/services/persistence/integration-bindings.integration.spec.js#refuses
      a connection that is not active or degraded
    provenance: test
  - source: >-
      services-platform:modules/integrations/tests/integration/services/persistence/integration-bindings.integration.spec.js#refuses
      a capability the connection’s pinned version does not implement
    provenance: test
  - source: >-
      services-platform:modules/integrations/tests/integration/services/persistence/integration-bindings.integration.spec.js#refuses
      a required feature the connection has not verified
    provenance: test
  - source: >-
      services-platform:modules/integrations/tests/integration/services/persistence/integration-bindings.integration.spec.js#leaves
      the current binding of a scope as it was when its replacement is refused
    provenance: test
  - source: >-
      services-platform:modules/integrations/tests/integration/services/persistence/integration-bindings.integration.spec.js#keeps
      the first, and refuses the second as a conflict
    provenance: test
  - source: >-
      services-platform:modules/integrations/tests/integration/services/persistence/integration-bindings.integration.spec.js#leaves
      exactly one active binding at the scope
    provenance: test
  - source: >-
      services-platform:modules/integrations/tests/integration/services/persistence/integration-bindings.integration.spec.js#supersedes
      it at the next revision
    provenance: test
  - source: >-
      services-platform:modules/integrations/tests/integration/services/persistence/integration-bindings.integration.spec.js#copies
      the removal to its revisions
    provenance: test
  - source: >-
      services-platform:modules/integrations/tests/integration/services/persistence/integration-bindings.integration.spec.js#refuses
      to remove it again
    provenance: test
  - source: >-
      services-platform:modules/integrations/tests/integration/services/persistence/integration-bindings.integration.spec.js#answers
      not found for a binding the tenant does not have
    provenance: test
  - source: >-
      services-platform:modules/integrations/tests/integration/services/persistence/integration-bindings.integration.spec.js#gives
      the first binding the plain id and the second the next number
    provenance: test
  - source: >-
      services-platform:modules/integrations/tests/integration/services/persistence/integration-bindings.integration.spec.js#writes
      the second binding active at revision 1, the scope having no current binding
    provenance: test
  - source: >-
      services-platform:modules/integrations/tests/integration/services/persistence/integration-bindings.integration.spec.js#keeps
      the removed binding readable, superseded at revision 2
    provenance: test
  - source: >-
      services-platform:modules/integrations/tests/integration/services/persistence/integration-bindings.integration.spec.js#keeps
      the history of both bindings
    provenance: test
  - source: >-
      services-platform:modules/integrations/tests/integration/services/persistence/integration-bindings.integration.spec.js#leaves
      both rows at the scope
    provenance: test
  - source: >-
      services-platform:modules/integrations/tests/integration/services/persistence/integration-bindings.integration.spec.js#keeps
      changing it: the binding is at its newest revision
    provenance: test
  - source: >-
      services-platform:modules/integrations/tests/integration/services/persistence/integration-bindings.integration.spec.js#keeps
      the newest revisions up to the maximum and drops the oldest
    provenance: test
  - source: >-
      services-platform:modules/integrations/tests/integration/services/persistence/integration-bindings.integration.spec.js#makes
      it invalid with the reason, at the next revision
    provenance: test
  - source: >-
      services-platform:modules/integrations/tests/integration/services/persistence/integration-bindings.integration.spec.js#changes
      nothing when the binding is already what the event says
    provenance: test
  - source: >-
      services-platform:modules/integrations/tests/integration/services/persistence/integration-bindings.integration.spec.js#restores
      it to active with no reason
    provenance: test
  - source: >-
      services-platform:modules/integrations/tests/integration/services/persistence/integration-bindings.integration.spec.js#copies
      each change, and only the changes
    provenance: test
  - source: >-
      services-platform:modules/integrations/tests/integration/services/persistence/integration-bindings.integration.spec.js#leaves
      a superseded binding alone
    provenance: test
dependency_evidence:
  provenance: test
  source: >-
    services-platform:modules/integrations/tests/integration/services/persistence/integration-bindings.integration.spec.js
  reviewed:
    - Suite introduction
    - Fixture setup
    - Client substitutions
    - Assertions and cleanup
---
# integration bindings

## Verification Boundary

This database and service suite exercises integration bindings. Its registration records the executable definition; no run result is asserted.

## What This Suite Proves

The bindings identify the detailed outcomes asserted by this suite. Test-level evidence retains the individual checks, including cases where several suites contribute to one scenario.

## What It Does Not Prove

In-process execution does not establish deployed infrastructure or a real provider response. Several bindings can supply different parts of a detailed scenario; no single-file completeness is implied.

## Real Dependencies and Test Doubles

The suite definition identifies its database fixtures and replaced clients, hooks, clocks or executors. Integration runs use the prepared database; lifecycle runs exercise the in-process route or adapter path.

## Must Not Be Doubled

The database constraints, transactions and service behavior claimed by an integration binding must execute. Replaced external seams cannot establish live provider or infrastructure behavior.
