This commit is contained in:
2026-09-14 13:48:21 +08:00
parent d8e2dc59ae
commit d8254c4f1d
2 changed files with 26 additions and 1 deletions
@@ -0,0 +1,13 @@
import test from 'node:test'
import assert from 'node:assert/strict'
import { readFile } from 'node:fs/promises'
const source = await readFile(new URL('./client-test-env-acceptance.mjs', import.meta.url), 'utf8')
test('client registration distinguishes incomplete-registration replay from credential conflicts', () => {
assert.match(source, /same credentials replay the incomplete registration/)
assert.match(source, /\['accountId', 'tenantId', 'membershipId'\]/)
assert.match(source, /String\(json\.data\[field\]\), String\(registration\.json\.data\[field\]\)/)
assert.match(source, /duplicate username with different credentials is rejected/)
assert.match(source, /body: \{ \.\.\.registrationBody, password: `Different/)
})
+13 -1
View File
@@ -142,8 +142,20 @@ async function registrationModule() {
report.resources.tenantId = registration.json.data.tenantId
report.resources.membershipId = registration.json.data.membershipId
await apiStep('registration', 'duplicate username is rejected', {
await apiStep('registration', 'same credentials replay the incomplete registration without creating another customer', {
method: 'POST', path: '/api/auth/register', body: registrationBody,
}, ({ json }) => {
requireSuccess(json)
for (const field of ['accountId', 'tenantId', 'membershipId']) {
assertPresent(json.data?.[field], field)
assertEqual(String(json.data[field]), String(registration.json.data[field]), `replayed ${field}`)
}
assertEqual(json.data?.tenantStatus, 'PROFILE_REQUIRED', 'replayed tenantStatus')
})
await apiStep('registration', 'duplicate username with different credentials is rejected', {
method: 'POST', path: '/api/auth/register',
body: { ...registrationBody, password: `Different${randomUUID()}9!` },
}, ({ json, status }) => {
assertEqual(status, 200, 'HTTP status')
assertEqual(String(json?.code), 'A0409', 'business code')