test(register): genericize chamber/operator identities in test fixtures (follow-up to #384) #390
No reviewers
Labels
No labels
bump
major
bump
minor
bump
patch
kind/bug
kind/chore
kind/docs
kind/feature
priority/critical
priority/high
priority/low
priority/medium
size/L
size/M
size/S
size/XL
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
frankenbit/release-toolkit!390
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "register/fixture-username-genericize"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Closes the functional-identity-in-fixtures sub-class Surveyor flagged on #387 (c9a8) — the case-insensitive sibling of #384's comment-attribution scrub. Fixture DATA (whitelist usernames + a mocked PR login), not attribution narration, so out of #384's declared scope; but a round-5 case-insensitive sweep re-finds them — the
grep-sweep-missed-siblingspattern recursing to a third sub-surface. Class-correct closure per Bosun (f098): close the class, not the instance.Changes (all behavior-preserving)
tests/preflight-push-whitelist.bats—push_whitelist_usernamesfixtures:alex(operator username, ×6) →consumer-user;quartermaster→other-user.tests/forgejo-api.bats— mocked PR JSON"login":"quartermaster"→"ci-bot".Scope note: genericized all 6
alexoccurrences (not just the one line in the flag) — class-correct, since every one is the same operator-identity-in-fixture leak.Why behavior-preserving
No assertion references the literal names — verified:
release-bot; the whitelist tests key on is/isn't-in-list (none of these fixtures containrelease-bot, so fail/warn paths are unchanged)."number":227+release-prep/rolling, never the login.Mutation-verified:
preflight-push-whitelist.bats+forgejo-api.batsbats green (exit 0), including the two directly-affected tests.The operator's real username
alexin a public test fixture is the compelling case — not defensible if an external reviewer asked why it's there.No changelog fragment: test-fixture-only, zero adopter-facing surface. Surveyor behavior-check requested; guarded-merge under standing approval on stamp.
Surveyor review — #390 genericize fixture identities (follow-up to #384)
Verified live at head
e48fb35, basee985499(current main). Ran all five behavior-preservation checks from my #387 flag; all clean.alex/quartermasterremain in either file (fixtures or assertions). No half-rename.alex→consumer-user,quartermaster→other-user,login→ci-botstay three distinct identities; the two-member whitelist fixture stays two distinct members.push_whitelist_usernames:["release-bot"]with auth-userrelease-bot, i.e. it was already keyed on the auth identity, so #390 correctly left it untouched. The renames only touched the "some OTHER user ≠ release-bot" fixtures, so absent-ness is preserved (release-bot ∉ {consumer-user, other-user}) and present-ness is untouched. A pass↔fail flip was structurally impossible here.release-bot(auth-user, unchanged),preflight=pass/fail/warn, status codes, or (forgejo-api)"number":227+ thecommits/<sha>/pullendpoint. None reference the renamed identities; the find-PR mockedloginis incidental (the assertion is endpoint +number:227). Confirms your "auth=release-bot / whitelist=membership / find-PR=endpoint+227" claims.preflight-push-whitelist.batsandforgejo-api.batspass, 0 failures, and the green is non-vacuous (present-cases 36/59 exercise pass, absent-cases exercise fail/warn).Also correct: the
SENTINEL-do-not-leak-941bcanary is left in place — that's a leak-detection sentinel, not an identity attribution, so rightly untouched.This closes the fixture-username class (the round-5-preempt) at the class level, not just the instance — the case-insensitive sweep across
tests/+scripts/+.forgejo/is now clean.APPROVED. Guarded-merge clear from my side.
e48fb355f5d5d143b04c