Story: Hotfix: the denial test counts on a caller without a role
Table of Contents
This page documents a story in Sprint 27. It captures the goal, current status, acceptance criteria, and the tasks that compose it.
1. Goal
Let the denial case of the account-access read exercise the refusal it describes, so the suite tests the authorization boundary rather than a state no account is in.
2. Status
| Field | Value |
|---|---|
| State | DONE |
| Parent sprint | Sprint 27 |
| Now | Nothing. |
| Waiting on | Nothing. |
| Next | Nothing. |
| Last touched | 2026-10-09 |
3. Acceptance
- The denial case calls the read with a caller that holds no role.
ores.iam.core.testspasses.- The production gate and its documented contract are unchanged.
4. Tasks
| Task | State | Start | End | Description |
|---|---|---|---|---|
| Scaffold story: Hotfix: the denial test counts on a caller without a role | DONE | 2026-10-09 | 2026-10-09 | Story scaffolding rides this task: documents, sprint wiring, and the scaffold PR. Close it before merging that PR. |
| Implement Hotfix: the denial test counts on a caller without a role | DONE | 2026-10-09 | Initial task for: Hotfix: the denial test counts on a caller without a role |
5. Decisions
- The production gate is not changed here.
read_account_accessrefuses a caller withoutiam::roles:read, and its header states that contract precisely. This fix makes the test's caller genuinely lack the code rather than relaxing the contract. - The boundary question is left open, deliberately.
efe1543875grantediam::roles:readto Member so a member can read the role catalogue, and the same code gates reading another account's access, so every member may now read any account's roles, permissions and assignment tail. That grant is argued for the catalogue and against account data in its own message, so the two readings are in conflict. Resolving it means giving the account-access read an entitlement members do not hold –iam::accounts:readis one – which changes production behaviour and the documented contract. It is a decision about the boundary, not a test fix, and it is not taken here.
6. Out of scope
- Whether a member should be able to read another account's access. See the second decision.
7. Result
Done. The case takes back the Member assignment the account trigger gave the
caller before calling the read, which is the state an administrator can leave
an account in. ores.iam.core.tests passes: 771 assertions in 252 test cases.