Skip to content

PM-4211: cover Auth0 M2M member token shape#14

Merged
jmgasper merged 1 commit intodevfrom
PM-4211-2
Apr 7, 2026
Merged

PM-4211: cover Auth0 M2M member token shape#14
jmgasper merged 1 commit intodevfrom
PM-4211-2

Conversation

@jmgasper
Copy link
Copy Markdown
Contributor

@jmgasper jmgasper commented Apr 6, 2026

What was broken
The earlier PM-4211 runtime fix handled M2M project-member writes, but the exact Auth0 client-credentials token shape from QA was still not covered by automated regression. That left POST /v6/projects/{projectId}/members, PATCH /v6/projects/{projectId}/members/{id}, and DELETE /v6/projects/{projectId}/members/{id} vulnerable to future regressions without a failing test.

Root cause (if identifiable)
The existing route e2e coverage mocked a simplified machine user, and JwtService coverage did not assert the non-numeric @Clients subject plus project-member write scope combination from the QA token.

What was changed
Added JwtService coverage for an Auth0 client-credentials subject carrying project-member write scope.
Added guarded project-member POST, PATCH, and DELETE regression coverage for an Auth0-shaped M2M principal whose raw token payload is broader than user.scopes.

Any added/updated tests
Updated src/shared/modules/global/jwt.service.spec.ts.
Updated test/project-member.e2e-spec.ts.
Validation run: pnpm test -- src/shared/modules/global/jwt.service.spec.ts; pnpm test:e2e -- --runInBand test/project-member.e2e-spec.ts; pnpm test -- src/shared/services/permission.service.spec.ts; pnpm test -- src/api/project-member/project-member.service.spec.ts; pnpm lint; pnpm build.
pnpm test still fails in unrelated metadata event-publishing specs on the current dev baseline.

What was broken
The earlier PM-4211 runtime fix handled M2M project-member writes, but the exact Auth0 client-credentials token shape from QA was still not covered by automated regression. That left the POST, PATCH, and DELETE member flows vulnerable to future regressions without a failing test.

Root cause (if identifiable)
The existing route e2e coverage mocked a simplified machine user, and JwtService coverage did not assert the non-numeric @Clients subject plus project-member write scope combination from the QA token.

What was changed
Added JwtService coverage for an Auth0 client-credentials subject carrying project-member write scope.
Added guarded project-member POST, PATCH, and DELETE regression coverage for an Auth0-shaped M2M principal whose raw token payload is broader than user.scopes.

Any added/updated tests
Updated src/shared/modules/global/jwt.service.spec.ts.
Updated test/project-member.e2e-spec.ts.
@jmgasper jmgasper merged commit 141a53a into dev Apr 7, 2026
4 of 5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant