---
id: TST-PFM-SEC-051
title: Console users request checks
kind: api-lifecycle
product_area: platform
module: security
revision: 2
status: draft
source_sha:
  services-platform: ad3f6a6582843008ed0f5a17b131878d15829af1
repository: services-platform
files:
  - modules/security/tests/e2e/console-users.e2e.spec.js
implements:
  - ATS-PFM-SEC-009-01
  - ATS-PFM-SEC-009-02
  - ATS-PFM-SEC-010-01
  - ATS-PFM-SEC-010-03
  - ATS-PFM-SEC-010-05
  - ATS-PFM-SEC-010-07
  - ATS-PFM-SEC-010-10
  - ATS-PFM-SEC-011-01
  - ATS-PFM-SEC-011-02
  - ATS-PFM-SEC-011-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 prepared test database and suite-owned fixture rows; retain shared seed records.
assertion_evidence:
  - provenance: test
    source: >-
      services-platform:modules/security/tests/e2e/console-users.e2e.spec.js#security console users
      API (end to end)
  - provenance: test
    source: 'services-platform:modules/security/tests/e2e/console-users.e2e.spec.js#listConsoleUsers'
  - provenance: test
    source: >-
      services-platform:modules/security/tests/e2e/console-users.e2e.spec.js#answers a page of the
      customer’s console users, by surname
  - provenance: test
    source: >-
      services-platform:modules/security/tests/e2e/console-users.e2e.spec.js#walks the page with the
      cursor it answered, and stops answering one at the end
  - provenance: test
    source: >-
      services-platform:modules/security/tests/e2e/console-users.e2e.spec.js#narrows to a status,
      and leaves the others out
  - provenance: test
    source: >-
      services-platform:modules/security/tests/e2e/console-users.e2e.spec.js#answers each row the
      roles the person holds, with the reference that opens each one
  - provenance: test
    source: >-
      services-platform:modules/security/tests/e2e/console-users.e2e.spec.js#answers the newest
      invitation of a row, and explicitly none for somebody never invited
  - provenance: test
    source: >-
      services-platform:modules/security/tests/e2e/console-users.e2e.spec.js#answers 404 for a
      customer the caller does not reach, saying nothing about whether it exists
  - provenance: test
    source: >-
      services-platform:modules/security/tests/e2e/console-users.e2e.spec.js#refuses a
      platform-scope caller the users of a customer they are not of, because this route is console
  - provenance: test
    source: 'services-platform:modules/security/tests/e2e/console-users.e2e.spec.js#getConsoleUser'
  - provenance: test
    source: >-
      services-platform:modules/security/tests/e2e/console-users.e2e.spec.js#answers the person with
      their grants and no invitation when none is waiting
  - provenance: test
    source: >-
      services-platform:modules/security/tests/e2e/console-users.e2e.spec.js#answers the invitation
      with its status, who issued it and how its delivery went
  - provenance: test
    source: >-
      services-platform:modules/security/tests/e2e/console-users.e2e.spec.js#answers the delivery
      outcome once one has been recorded on the invitation
  - provenance: test
    source: >-
      services-platform:modules/security/tests/e2e/console-users.e2e.spec.js#answers 404 for a user
      of another customer addressed under this one
  - provenance: test
    source: >-
      services-platform:modules/security/tests/e2e/console-users.e2e.spec.js#updateConsoleUserDetails
  - provenance: test
    source: >-
      services-platform:modules/security/tests/e2e/console-users.e2e.spec.js#changes the names and
      answers the person again, at the next version
  - provenance: test
    source: >-
      services-platform:modules/security/tests/e2e/console-users.e2e.spec.js#refuses a version the
      record has moved past as 409, and changes nothing
  - provenance: test
    source: >-
      services-platform:modules/security/tests/e2e/console-users.e2e.spec.js#refuses a body that
      states anything but the five detail fields as 400
  - provenance: test
    source: >-
      services-platform:modules/security/tests/e2e/console-users.e2e.spec.js#refuses the caller who
      may only read as 403, before the handler runs
  - provenance: test
    source: >-
      services-platform:modules/security/tests/e2e/console-users.e2e.spec.js#the grants of a console
      user
  - provenance: test
    source: >-
      services-platform:modules/security/tests/e2e/console-users.e2e.spec.js#grants a role by its
      built-in key and answers the grant with the role it names
  - provenance: test
    source: >-
      services-platform:modules/security/tests/e2e/console-users.e2e.spec.js#lists the grants it
      made, each with its role
  - provenance: test
    source: >-
      services-platform:modules/security/tests/e2e/console-users.e2e.spec.js#answers each grant when
      it was made, when it became live, and who made it
  - provenance: test
    source: >-
      services-platform:modules/security/tests/e2e/console-users.e2e.spec.js#answers a grant whose
      window opens tomorrow as scheduled, in the grant and in the list
  - provenance: test
    source: >-
      services-platform:modules/security/tests/e2e/console-users.e2e.spec.js#withdraws a grant,
      which the list then leaves out
  - provenance: test
    source: >-
      services-platform:modules/security/tests/e2e/console-users.e2e.spec.js#refuses the reader’s
      attempt to grant as 403, and grants nothing
  - provenance: test
    source: >-
      services-platform:modules/security/tests/e2e/console-users.e2e.spec.js#refuses a scope the
      screens do not offer as 400
  - provenance: test
    source: 'services-platform:modules/security/tests/e2e/console-users.e2e.spec.js#listCustomerInvitations'
  - provenance: test
    source: >-
      services-platform:modules/security/tests/e2e/console-users.e2e.spec.js#answers a page of the
      customer’s outstanding invitations, each with the person waiting
  - provenance: test
    source: >-
      services-platform:modules/security/tests/e2e/console-users.e2e.spec.js#answers 404 for a
      customer the caller does not reach
  - provenance: test
    source: 'services-platform:modules/security/tests/e2e/console-users.e2e.spec.js#listSecurityAuditEvents'
  - provenance: test
    source: >-
      services-platform:modules/security/tests/e2e/console-users.e2e.spec.js#answers the customer’s
      history, newest first, with the row the grant it made wrote
  - provenance: test
    source: >-
      services-platform:modules/security/tests/e2e/console-users.e2e.spec.js#records the refused
      attempt too, so an access review sees what was tried
  - provenance: test
    source: >-
      services-platform:modules/security/tests/e2e/console-users.e2e.spec.js#refuses the reader, who
      may not read the history either
  - provenance: test
    source: >-
      services-platform:modules/security/tests/e2e/console-users.e2e.spec.js#explainConsoleUserPermissions
  - provenance: test
    source: >-
      services-platform:modules/security/tests/e2e/console-users.e2e.spec.js#answers the keys a
      granted role really allows, each with the grant and role behind it
  - provenance: test
    source: >-
      services-platform:modules/security/tests/e2e/console-users.e2e.spec.js#answers nothing for
      somebody holding no grant, rather than failing
  - provenance: test
    source: >-
      services-platform:modules/security/tests/e2e/console-users.e2e.spec.js#refuses the reader, who
      may read the person but not explain their access
  - provenance: test
    source: >-
      services-platform:modules/security/tests/e2e/console-users.e2e.spec.js#answers 404 for a user
      of another customer addressed under this one
dependency_evidence: >-
  The local request harness exercises the route dispatcher and the prepared database. The file
  declares no substituted collaborators.
evidence:
  - 'services-platform:modules/security/tests/e2e/console-users.e2e.spec.js'
  - >-
    Static review at the recorded source revision; executable results remain not-run and conformance
    remains not-verified.
binding_note: >-
  Each binding names the scenario to which this file contributes assertions. A binding is not a
  recorded pass and does not extend the file’s dependency boundary.
examiner: codex
examined_at: '2026-10-23'
final_text: OpenAI
dependency_review:
  provenance: test
  source: 'services-platform:modules/security/tests/e2e/console-users.e2e.spec.js'
  explicit_no_doubles: true
  identified_double_boundaries: []
---
# Console users request checks

## Verification Boundary

The file exercises public request handling through the local service harness. The assertion references identify the source checks for console users.

## What This Suite Proves

The source assertions support the observations named in the bound scenarios. A scenario spanning multiple files must retain the other files’ contributions.

## What It Does Not Prove

This examination does not run the suite. Passing behavior, deployed conformance and the behavior of substituted dependencies require separate execution evidence.

## Real Dependencies and Test Doubles

The local request harness exercises the route dispatcher and the prepared database. The file declares no substituted collaborators.

## Must Not Be Doubled

Keep route dispatch, signed-context verification and the exercised service decisions real. A test key can supply signatures, but replacing the authorization decision cannot prove request enforcement.
