---
id: TST-PFM-OPS-081
title: Licensing
kind: api-lifecycle
product_area: platform
module: operations
revision: 1
status: draft
source_sha:
  services-platform: ad3f6a6582843008ed0f5a17b131878d15829af1
repository: services-platform
files:
  - modules/licensing/tests/e2e/licensing.e2e.spec.js
implements:
  - ATS-PFM-OPS-011-01
  - ATS-PFM-OPS-011-02
  - ATS-PFM-OPS-011-04
  - ATS-PFM-OPS-011-07
  - ATS-PFM-OPS-011-08
  - ATS-PFM-OPS-011-11
  - ATS-PFM-OPS-013-01
  - ATS-PFM-OPS-013-02
  - ATS-PFM-OPS-013-03
  - ATS-PFM-OPS-015-03
  - ATS-PFM-OPS-015-07
  - ATS-PFM-OPS-016-01
  - ATS-PFM-OPS-016-02
  - ATS-PFM-OPS-016-03
environment: local
implementation_state: implemented
latest_result: not-run
latest_run_at: null
latest_run_ref: null
conformance: not-verified
estimated_minutes: 5
estimate_basis: Scheduling estimate only; no duration is measured during this documentation pass.
isolation: >-
  The prepared local test database and suite-owned identifiers; existing hooks control rollback or
  cleanup.
evidence:
  - >-
    services-platform:modules/licensing/tests/e2e/licensing.e2e.spec.js at
    ad3f6a6582843008ed0f5a17b131878d15829af1: existing suite body, setup, assertions and cleanup.
binding_note: Bindings apply only to the listed specification scenarios.
assertion_sources:
  - >-
    services-platform:modules/licensing/tests/e2e/licensing.e2e.spec.js#serves a staff member holding
    hq.licensing.read on the read
  - >-
    services-platform:modules/licensing/tests/e2e/licensing.e2e.spec.js#refuses a staff member holding
    another HQ key but not this one, with 403
  - >-
    services-platform:modules/licensing/tests/e2e/licensing.e2e.spec.js#refuses an administrator of a
    customer on the read, because a system route takes platform scope alone
  - >-
    services-platform:modules/licensing/tests/e2e/licensing.e2e.spec.js#refuses an administrator of a
    customer on the write too, so the wall is not only on reads
  - >-
    services-platform:modules/licensing/tests/e2e/licensing.e2e.spec.js#refuses an anonymous caller with
    401
  - >-
    services-platform:modules/licensing/tests/e2e/licensing.e2e.spec.js#refuses a staff member holding
    only hq.licensing.read on a write, with 403
  - >-
    services-platform:modules/licensing/tests/e2e/licensing.e2e.spec.js#leaves the tenant with no
    override after that refusal
  - >-
    services-platform:modules/licensing/tests/e2e/licensing.e2e.spec.js#answers the override and the
    application state it caused
---

# Licensing

## Verification Boundary

This suite exercises application licensing through the local API dispatcher. Its implementation is present at the pinned source revision, and this register records no execution result.

## What This Suite Proves

The checks dispatch staff licensing actions and customer application reads, compare audience-specific response fields and inspect committed history and refresh-job submissions. The scenario bindings name the attributed outcomes.

## What It Does Not Prove

Local execution does not establish deployed infrastructure, live commercial-provider configuration or authorization-cache completion. Registration and an implemented suite do not establish a passing result.

## Real Dependencies and Test Doubles

The prepared PostgreSQL database and production operations under test are real. Execution startup or probing uses a test channel where the suite declares one. Signed request contexts use a run-owned signing key.

## Must Not Be Doubled

The dispatcher, route evaluation and handler effects under assertion remain real.
