---
id: TST-PFM-INT-551
title: installation lifecycle
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/installations/installation-lifecycle.integration.spec.js
implements:
  - ATS-PFM-INT-003-01
  - ATS-PFM-INT-003-02
  - ATS-PFM-INT-003-03
  - ATS-PFM-INT-003-04
  - ATS-PFM-INT-003-06
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/installations/installation-lifecycle.integration.spec.js
test_cases:
  - source: >-
      services-platform:modules/integrations/tests/integration/services/installations/installation-lifecycle.integration.spec.js#enables
      the integration for the tenant with the settings and acceptance given
    provenance: test
  - source: >-
      services-platform:modules/integrations/tests/integration/services/installations/installation-lifecycle.integration.spec.js#audits
      it as installation.enabled
    provenance: test
  - source: >-
      services-platform:modules/integrations/tests/integration/services/installations/installation-lifecycle.integration.spec.js#refuses
      an integration installed already, and writes no second
    provenance: test
  - source: >-
      services-platform:modules/integrations/tests/integration/services/installations/installation-lifecycle.integration.spec.js#refuses
      an acceptance wider than the manifest declares, naming it, and writes nothing
    provenance: test
  - source: >-
      services-platform:modules/integrations/tests/integration/services/installations/installation-lifecycle.integration.spec.js#refuses
      settings the manifest’s schema refuses, and writes nothing
    provenance: test
  - source: >-
      services-platform:modules/integrations/tests/integration/services/installations/installation-lifecycle.integration.spec.js#refuses
      an integration the tenant may not see (internal), as not found
    provenance: test
  - source: >-
      services-platform:modules/integrations/tests/integration/services/installations/installation-lifecycle.integration.spec.js#keeps
      one tenant’s installation out of another’s
    provenance: test
  - source: >-
      services-platform:modules/integrations/tests/integration/services/installations/installation-lifecycle.integration.spec.js#suspends
      an enabled installation with its reason
    provenance: test
  - source: >-
      services-platform:modules/integrations/tests/integration/services/installations/installation-lifecycle.integration.spec.js#refuses
      to suspend without a reason
    provenance: test
  - source: >-
      services-platform:modules/integrations/tests/integration/services/installations/installation-lifecycle.integration.spec.js#refuses
      to suspend a suspended installation, and leaves it as it was
    provenance: test
  - source: >-
      services-platform:modules/integrations/tests/integration/services/installations/installation-lifecycle.integration.spec.js#resumes
      a suspended installation
    provenance: test
  - source: >-
      services-platform:modules/integrations/tests/integration/services/installations/installation-lifecycle.integration.spec.js#refuses
      to resume an enabled installation
    provenance: test
  - source: >-
      services-platform:modules/integrations/tests/integration/services/installations/installation-lifecycle.integration.spec.js#tells
      the binding hook of each move
    provenance: test
  - source: >-
      services-platform:modules/integrations/tests/integration/services/installations/installation-lifecycle.integration.spec.js#suspends
      the active and degraded connections of the installation when it is suspended
    provenance: test
  - source: >-
      services-platform:modules/integrations/tests/integration/services/installations/installation-lifecycle.integration.spec.js#leaves
      a connection that is not active or degraded as it was
    provenance: test
  - source: >-
      services-platform:modules/integrations/tests/integration/services/installations/installation-lifecycle.integration.spec.js#audits
      each suspended connection with the reason and the installation as the cause
    provenance: test
  - source: >-
      services-platform:modules/integrations/tests/integration/services/installations/installation-lifecycle.integration.spec.js#resumes
      the connections its suspension suspended, and only those
    provenance: test
  - source: >-
      services-platform:modules/integrations/tests/integration/services/installations/installation-lifecycle.integration.spec.js#refuses
      the suspension of an installation that is already suspended and leaves its connections suspended
    provenance: test
  - source: >-
      services-platform:modules/integrations/tests/integration/services/installations/installation-lifecycle.integration.spec.js#refuses
      while a connection is not disconnected, and leaves the installation enabled
    provenance: test
  - source: >-
      services-platform:modules/integrations/tests/integration/services/installations/installation-lifecycle.integration.spec.js#uninstalls
      once every connection is disconnected, keeping the row
    provenance: test
  - source: >-
      services-platform:modules/integrations/tests/integration/services/installations/installation-lifecycle.integration.spec.js#refuses
      to change an uninstalled installation’s settings
    provenance: test
  - source: >-
      services-platform:modules/integrations/tests/integration/services/installations/installation-lifecycle.integration.spec.js#installs
      again as the same row, enabled with the new acceptance, audited as a reinstallation
    provenance: test
  - source: >-
      services-platform:modules/integrations/tests/integration/services/installations/installation-lifecycle.integration.spec.js#changes
      the settings at the version read
    provenance: test
  - source: >-
      services-platform:modules/integrations/tests/integration/services/installations/installation-lifecycle.integration.spec.js#refuses
      a stale version and leaves the settings as they were
    provenance: test
  - source: >-
      services-platform:modules/integrations/tests/integration/services/installations/installation-lifecycle.integration.spec.js#installs
      with a dataset string, stored as the manifest’s whole scope for it
    provenance: test
  - source: >-
      services-platform:modules/integrations/tests/integration/services/installations/installation-lifecycle.integration.spec.js#changes
      the acceptance with a dataset string, stored as an object
    provenance: test
  - source: >-
      services-platform:modules/integrations/tests/integration/services/installations/installation-lifecycle.integration.spec.js#changes
      the acceptance with objects, narrowing the fields
    provenance: test
  - source: >-
      services-platform:modules/integrations/tests/integration/services/installations/installation-lifecycle.integration.spec.js#refuses
      a field the current version does not declare, naming it, and keeps the acceptance
    provenance: test
dependency_evidence:
  provenance: test
  source: >-
    services-platform:modules/integrations/tests/integration/services/installations/installation-lifecycle.integration.spec.js
  reviewed:
    - Suite introduction
    - Fixture setup
    - Client substitutions
    - Assertions and cleanup
---
# installation lifecycle

## Verification Boundary

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

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.
