---
id: TST-PFM-INT-459
title: extensions
kind: api-lifecycle
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/extensions/tests/e2e/extensions.e2e.spec.js
implements:
  - ATS-PFM-INT-016-06
  - ATS-PFM-INT-017-01
  - ATS-PFM-INT-017-02
  - ATS-PFM-INT-017-06
  - ATS-PFM-INT-017-08
  - ATS-PFM-INT-017-09
  - ATS-PFM-INT-017-10
  - ATS-PFM-INT-017-12
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/extensions/tests/e2e/extensions.e2e.spec.js'
test_cases:
  - source: >-
      services-platform:modules/extensions/tests/e2e/extensions.e2e.spec.js#lists the registered points
      with their versions and the tenant’s binding counts
    provenance: test
  - source: >-
      services-platform:modules/extensions/tests/e2e/extensions.e2e.spec.js#reads one point with its
      contract and examples
    provenance: test
  - source: >-
      services-platform:modules/extensions/tests/e2e/extensions.e2e.spec.js#answers 404 for a point
      nobody registered
    provenance: test
  - source: >-
      services-platform:modules/extensions/tests/e2e/extensions.e2e.spec.js#lists the event types, which
      this service declares none of
    provenance: test
  - source: >-
      services-platform:modules/extensions/tests/e2e/extensions.e2e.spec.js#creates a Lambda handler with
      its qualifier defaulted to live, and never answers its secret
    provenance: test
  - source: >-
      services-platform:modules/extensions/tests/e2e/extensions.e2e.spec.js#writes the secret to Secrets
      Manager under the handler’s own name, untrimmed
    provenance: test
  - source: >-
      services-platform:modules/extensions/tests/e2e/extensions.e2e.spec.js#reads the handler back
      without its secret
    provenance: test
  - source: >-
      services-platform:modules/extensions/tests/e2e/extensions.e2e.spec.js#refuses an HTTPS handler as
      not available, naming decision D-02
    provenance: test
  - source: >-
      services-platform:modules/extensions/tests/e2e/extensions.e2e.spec.js#changes a handler at the
      version read
    provenance: test
  - source: >-
      services-platform:modules/extensions/tests/e2e/extensions.e2e.spec.js#lists the tenant’s handlers
      by name, a page with no next cursor
    provenance: test
  - source: >-
      services-platform:modules/extensions/tests/e2e/extensions.e2e.spec.js#creates an enabled binding at
      a product scope
    provenance: test
  - source: >-
      services-platform:modules/extensions/tests/e2e/extensions.e2e.spec.js#refuses a scope kind the
      point does not allow as 400 naming the field
    provenance: test
  - source: >-
      services-platform:modules/extensions/tests/e2e/extensions.e2e.spec.js#refuses a handler that does
      not implement the point as 400
    provenance: test
  - source: >-
      services-platform:modules/extensions/tests/e2e/extensions.e2e.spec.js#refuses a failure policy
      outside the allowed set as 400
    provenance: test
  - source: >-
      services-platform:modules/extensions/tests/e2e/extensions.e2e.spec.js#refuses an overriding failure
      policy without a note as 400
    provenance: test
  - source: >-
      services-platform:modules/extensions/tests/e2e/extensions.e2e.spec.js#refuses a version that is not
      current or supported as 400
    provenance: test
  - source: >-
      services-platform:modules/extensions/tests/e2e/extensions.e2e.spec.js#refuses a second enabled
      binding at one scope of a single point as 409
    provenance: test
  - source: >-
      services-platform:modules/extensions/tests/e2e/extensions.e2e.spec.js#refuses a body field the
      schema does not know as 400
    provenance: test
  - source: >-
      services-platform:modules/extensions/tests/e2e/extensions.e2e.spec.js#disables a binding at the
      version read
    provenance: test
  - source: 'services-platform:modules/extensions/tests/e2e/extensions.e2e.spec.js#deletes a binding'
    provenance: test
  - source: >-
      services-platform:modules/extensions/tests/e2e/extensions.e2e.spec.js#answers the product binding
      for a scope that names its product
    provenance: test
  - source: >-
      services-platform:modules/extensions/tests/e2e/extensions.e2e.spec.js#answers the default for a
      scope no binding matches
    provenance: test
  - source: >-
      services-platform:modules/extensions/tests/e2e/extensions.e2e.spec.js#refuses a scope kind the
      point does not declare as 400
    provenance: test
  - source: >-
      services-platform:modules/extensions/tests/e2e/extensions.e2e.spec.js#validates the named example
      and answers that no transport runs in Platform yet
    provenance: test
  - source: >-
      services-platform:modules/extensions/tests/e2e/extensions.e2e.spec.js#answers an input the contract
      refuses as a contract failure
    provenance: test
  - source: >-
      services-platform:modules/extensions/tests/e2e/extensions.e2e.spec.js#lists the tenant’s
      invocations of a point, newest first
    provenance: test
  - source: 'services-platform:modules/extensions/tests/e2e/extensions.e2e.spec.js#filters by outcome'
    provenance: test
  - source: >-
      services-platform:modules/extensions/tests/e2e/extensions.e2e.spec.js#reads one invocation,
      withholding its captured reference while the handler does not capture
    provenance: test
  - source: >-
      services-platform:modules/extensions/tests/e2e/extensions.e2e.spec.js#answers 404 for another
      tenant’s invocation
    provenance: test
  - source: >-
      services-platform:modules/extensions/tests/e2e/extensions.e2e.spec.js#refuses the catalogue without
      platform.extension-points.read
    provenance: test
  - source: >-
      services-platform:modules/extensions/tests/e2e/extensions.e2e.spec.js#admits the catalogue with
      platform.extension-points.read alone
    provenance: test
  - source: >-
      services-platform:modules/extensions/tests/e2e/extensions.e2e.spec.js#refuses a Lambda handler to a
      caller who may manage only rules
    provenance: test
  - source: >-
      services-platform:modules/extensions/tests/e2e/extensions.e2e.spec.js#admits a rule handler to a
      caller who may manage only rules
    provenance: test
  - source: >-
      services-platform:modules/extensions/tests/e2e/extensions.e2e.spec.js#refuses a binding write
      without platform.extension-bindings.manage
    provenance: test
  - source: >-
      services-platform:modules/extensions/tests/e2e/extensions.e2e.spec.js#refuses the invocation
      history without platform.extension-invocations.read
    provenance: test
  - source: >-
      services-platform:modules/extensions/tests/e2e/extensions.e2e.spec.js#refuses a test without
      platform.extension-handlers.test
    provenance: test
  - source: >-
      services-platform:modules/extensions/tests/e2e/extensions.e2e.spec.js#refuses an anonymous call as
      401
    provenance: test
dependency_evidence:
  provenance: test
  source: 'services-platform:modules/extensions/tests/e2e/extensions.e2e.spec.js'
  reviewed:
    - Suite introduction
    - Fixture setup
    - Client substitutions
    - Assertions and cleanup
---
# extensions

## Verification Boundary

This database and service suite exercises extensions. 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.
