---
id: ATS-MBR-MEM-017
scope: CAP-MBR-MEM-017
product_area: membership
module: memberships
revision: 1
status: proposed
approved_by:
approved_at:
source_sha:
  services-membership: 5994c270e8a37a30f848e99ba5b5ee6b87c08893
  react-console: baf6dae382d6f41dce976c7f848667ccc37e076f
scenarios:
  - id: ATS-MBR-MEM-017-01
    title: "An export captures the requester's scope at request time"
    level: api
    proves:
      - BR-CAP-MBR-MEM-017-01
    preconditions: "The well-known FAA workspace fixtures, or a workspace the test builds from them."
    steps: "The Atlanta officer requests an export; staff and an officer with no reach request too."
    expected: "Each captures exactly the memberships its scope reaches with the filters."
    negative: false
    data_needs: "FAA programs, packages, units and members from the integration seed."
    bound_to:
      - "services-membership:modules/memberships/tests/integration/services/unit-scope.integration.spec.ts#captures the ids the requester’s set reaches at request time"
      - "services-membership:tests/acceptance/security/MBR-ACC-0460.acceptance.ts#MBR-ACC-0460"
    provenance: test
    source: "services-membership:modules/memberships/tests/integration/services/unit-scope.integration.spec.ts#captures the ids the requester’s set reaches at request time"
  - id: ATS-MBR-MEM-017-02
    title: "Export rows hold the captured members with their units on the date"
    level: api
    proves:
      - BR-CAP-MBR-MEM-017-02
    preconditions: "The well-known FAA workspace fixtures, or a workspace the test builds from them."
    steps: "Let the export job run."
    expected: "One row per captured membership with number, owner, program, status and units on the date."
    negative: false
    data_needs: "FAA programs, packages, units and members from the integration seed."
    bound_to:
      - "services-membership:modules/memberships/tests/integration/services/unit-scope.integration.spec.ts#writes rows for the captured memberships only, with their units on the date"
    provenance: test
    source: "services-membership:modules/memberships/tests/integration/services/unit-scope.integration.spec.ts#writes rows for the captured memberships only, with their units on the date"
  - id: ATS-MBR-MEM-017-03
    title: "An export is read by its requester and staff only"
    level: api
    proves:
      - BR-CAP-MBR-MEM-017-03
    preconditions: "The well-known FAA workspace fixtures, or a workspace the test builds from them."
    steps: "The requester, staff and another officer read the export."
    expected: "The first two read it; the other officer gets not found."
    negative: true
    data_needs: "FAA programs, packages, units and members from the integration seed."
    bound_to:
      - "services-membership:modules/memberships/tests/integration/services/unit-scope.integration.spec.ts#answers the export to the person who asked for it and to staff, and not to another officer"
    provenance: test
    source: "services-membership:modules/memberships/tests/integration/services/unit-scope.integration.spec.ts#answers the export to the person who asked for it and to staff, and not to another officer"
  - id: ATS-MBR-MEM-017-04
    title: "No reach, no capture"
    level: api
    proves:
      - BR-CAP-MBR-MEM-017-05
    preconditions: "The well-known FAA workspace fixtures, or a workspace the test builds from them."
    steps: "A caller whose scope reaches nobody requests an export."
    expected: "It captures nothing."
    negative: false
    data_needs: "FAA programs, packages, units and members from the integration seed."
    bound_to:
      - "services-membership:modules/memberships/tests/integration/services/unit-scope.integration.spec.ts#captures nothing for a caller with NONE"
    provenance: test
    source: "services-membership:modules/memberships/tests/integration/services/unit-scope.integration.spec.ts#captures nothing for a caller with NONE"
  - id: ATS-MBR-MEM-017-05
    title: "A portal member sees their own memberships only"
    level: api
    proves:
      - BR-CAP-MBR-MEM-017-06
    preconditions: "The well-known FAA workspace fixtures, or a workspace the test builds from them."
    steps: "Jo reads her own memberships and tries the staff read; Dana, with none, reads her own."
    expected: "Jo sees hers; the staff read is refused; Dana gets an empty answer."
    negative: false
    data_needs: "FAA programs, packages, units and members from the integration seed."
    bound_to:
      - "services-membership:tests/e2e/s07-regional-officer.e2e.spec.ts#lets Jo read her own memberships in the portal"
      - "services-membership:tests/e2e/s07-regional-officer.e2e.spec.ts#refuses Jo the staff read of her own membership: a portal member holds no members.read"
      - "services-membership:tests/e2e/s07-regional-officer.e2e.spec.ts#answers Dana’s own portal read with no membership, Dana holding none"
      - "services-membership:tests/acceptance/memberships/MBR-ACC-0188.acceptance.ts#MBR-ACC-0188"
    provenance: test
    source: "services-membership:tests/e2e/s07-regional-officer.e2e.spec.ts#lets Jo read her own memberships in the portal"
evidence:
  - "services-membership at 5994c270e8a37a30f848e99ba5b5ee6b87c08893: the capability sources and the bound test files."
---

# Export a roster and let members see their own memberships: Acceptance Test Set

## Coverage

| Rule | Proved by |
|---|---|
| `BR-CAP-MBR-MEM-017-01` | `ATS-MBR-MEM-017-01` |
| `BR-CAP-MBR-MEM-017-02` | `ATS-MBR-MEM-017-02` |
| `BR-CAP-MBR-MEM-017-03` | `ATS-MBR-MEM-017-03` |
| `BR-CAP-MBR-MEM-017-05` | `ATS-MBR-MEM-017-04` |
| `BR-CAP-MBR-MEM-017-06` | `ATS-MBR-MEM-017-05` |
| `BR-CAP-MBR-MEM-017-08` | no scenario: `FND-MBR-MEM-057` |
