---
id: TST-PFM-INT-475
title: lifecycle
kind: unit
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/unit/lifecycle.spec.js
implements:
  - ATS-PFM-INT-016-03
  - ATS-PFM-INT-017-06
  - ATS-PFM-INT-017-07
environment: mock
implementation_state: implemented
latest_result: not-run
latest_run_at: null
latest_run_ref: null
conformance: not-verified
estimated_minutes: 1
isolation: Pure test fixtures owned by the test process.
evidence:
  - 'services-platform:modules/extensions/tests/unit/lifecycle.spec.js'
test_cases:
  - source: >-
      services-platform:modules/extensions/tests/unit/lifecycle.spec.js#allows draft to become enabled,
      shadow or disabled, enabled and shadow to trade places, disabled to return, and orphaned only to be
      disabled
    provenance: test
  - source: >-
      services-platform:modules/extensions/tests/unit/lifecycle.spec.js#names a rule for every status of
      the table, so no status is left without one
    provenance: test
  - source: 'services-platform:modules/extensions/tests/unit/lifecycle.spec.js#lets any status be disabled'
    provenance: test
  - source: >-
      services-platform:modules/extensions/tests/unit/lifecycle.spec.js#never moves a binding to
      orphaned, which only the intake sets, and says so
    provenance: test
  - source: >-
      services-platform:modules/extensions/tests/unit/lifecycle.spec.js#refuses an orphaned binding any
      move but disable, naming both statuses
    provenance: test
  - source: >-
      services-platform:modules/extensions/tests/unit/lifecycle.spec.js#answers no refusal for staying
      put or for an allowed move
    provenance: test
  - source: >-
      services-platform:modules/extensions/tests/unit/lifecycle.spec.js#creates a binding in any status
      but orphaned
    provenance: test
  - source: >-
      services-platform:modules/extensions/tests/unit/lifecycle.spec.js#resolves only enabled and shadow
      bindings
    provenance: test
  - source: >-
      services-platform:modules/extensions/tests/unit/lifecycle.spec.js#moves between active and disabled
      both ways, and nothing else
    provenance: test
  - source: >-
      services-platform:modules/extensions/tests/unit/lifecycle.spec.js#answers no refusal for either
      move or for staying put
    provenance: test
  - source: >-
      services-platform:modules/extensions/tests/unit/lifecycle.spec.js#accepts a binding at an allowed
      scope, of a handler that implements the point, on the current version
    provenance: test
  - source: >-
      services-platform:modules/extensions/tests/unit/lifecycle.spec.js#refuses a point that is not
      registered, naming it
    provenance: test
  - source: 'services-platform:modules/extensions/tests/unit/lifecycle.spec.js#refuses a retired point'
    provenance: test
  - source: >-
      services-platform:modules/extensions/tests/unit/lifecycle.spec.js#accepts a deprecated point, which
      still runs
    provenance: test
  - source: >-
      services-platform:modules/extensions/tests/unit/lifecycle.spec.js#refuses a scope kind the point
      does not allow, listing the ones it does
    provenance: test
  - source: >-
      services-platform:modules/extensions/tests/unit/lifecycle.spec.js#refuses a tenant scope that names
      a record
    provenance: test
  - source: >-
      services-platform:modules/extensions/tests/unit/lifecycle.spec.js#refuses any other scope that
      names no record
    provenance: test
  - source: >-
      services-platform:modules/extensions/tests/unit/lifecycle.spec.js#accepts the tenant scope with no
      record
    provenance: test
  - source: >-
      services-platform:modules/extensions/tests/unit/lifecycle.spec.js#refuses a handler the tenant does
      not have
    provenance: test
  - source: >-
      services-platform:modules/extensions/tests/unit/lifecycle.spec.js#refuses a handler that does not
      implement the point, naming both
    provenance: test
  - source: >-
      services-platform:modules/extensions/tests/unit/lifecycle.spec.js#refuses a failure policy the
      point does not allow
    provenance: test
  - source: >-
      services-platform:modules/extensions/tests/unit/lifecycle.spec.js#refuses a failure policy other
      than the default without a note saying why
    provenance: test
  - source: >-
      services-platform:modules/extensions/tests/unit/lifecycle.spec.js#accepts an overriding failure
      policy with its note, and the default with none
    provenance: test
  - source: >-
      services-platform:modules/extensions/tests/unit/lifecycle.spec.js#refuses a contract version the
      point does not have
    provenance: test
  - source: >-
      services-platform:modules/extensions/tests/unit/lifecycle.spec.js#accepts a newly named supported
      version as well as the current one
    provenance: test
  - source: >-
      services-platform:modules/extensions/tests/unit/lifecycle.spec.js#refuses a newly named deprecated
      or retired version, naming its status
    provenance: test
  - source: >-
      services-platform:modules/extensions/tests/unit/lifecycle.spec.js#lets a binding stay on a version
      deprecated since it was bound, while the version is unchanged
    provenance: test
  - source: >-
      services-platform:modules/extensions/tests/unit/lifecycle.spec.js#reads implements as the list of
      points a handler names
    provenance: test
  - source: >-
      services-platform:modules/extensions/tests/unit/lifecycle.spec.js#runs a binding under its own
      failure policy, else the point default
    provenance: test
  - source: >-
      services-platform:modules/extensions/tests/unit/lifecycle.spec.js#accepts a Lambda target with its
      ARN, a qualifier and a role, and defaults the qualifier to live
    provenance: test
  - source: >-
      services-platform:modules/extensions/tests/unit/lifecycle.spec.js#refuses a Lambda target without a
      function ARN, or with a qualified one
    provenance: test
  - source: >-
      services-platform:modules/extensions/tests/unit/lifecycle.spec.js#refuses a malformed qualifier or
      role
    provenance: test
  - source: >-
      services-platform:modules/extensions/tests/unit/lifecycle.spec.js#refuses a property the kind does
      not name, so a secret is never stored in a target
    provenance: test
  - source: >-
      services-platform:modules/extensions/tests/unit/lifecycle.spec.js#accepts a built-in by its key and
      refuses one without
    provenance: test
  - source: >-
      services-platform:modules/extensions/tests/unit/lifecycle.spec.js#refuses a target that is not an
      object
    provenance: test
  - source: >-
      services-platform:modules/extensions/tests/unit/lifecycle.spec.js#accepts points and event types,
      each once
    provenance: test
  - source: >-
      services-platform:modules/extensions/tests/unit/lifecycle.spec.js#refuses an entry naming neither,
      both, or a blank
    provenance: test
  - source: >-
      services-platform:modules/extensions/tests/unit/lifecycle.spec.js#refuses a point named twice, and
      a list beyond its maximum
    provenance: test
  - source: >-
      services-platform:modules/extensions/tests/unit/lifecycle.spec.js#refuses something that is not a
      list
    provenance: test
  - source: >-
      services-platform:modules/extensions/tests/unit/lifecycle.spec.js#is retired when no enabled
      binding names it
    provenance: test
  - source: >-
      services-platform:modules/extensions/tests/unit/lifecycle.spec.js#is deprecated while an enabled
      binding still names it
    provenance: test
  - source: 'services-platform:modules/extensions/tests/unit/lifecycle.spec.js#stays retired once retired'
    provenance: test
dependency_evidence:
  provenance: test
  source: 'services-platform:modules/extensions/tests/unit/lifecycle.spec.js'
  reviewed:
    - Suite introduction
    - Fixture setup
    - Client substitutions
    - Assertions and cleanup
---
# lifecycle

## Verification Boundary

This unit suite exercises lifecycle. 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

Pure cases do not establish database constraints, deployed authorization or provider effects.

## Real Dependencies and Test Doubles

The suite evaluates its imported functions with controlled inputs. Its source records the fixture and substitution boundary.

## Must Not Be Doubled

The function under test and its result checks must execute. Replacing them with expected answers provides no proof.
