47 lines
1.5 KiB
JavaScript
47 lines
1.5 KiB
JavaScript
// Journey: full email registration happy path.
|
|
//
|
|
// Endpoints exercised:
|
|
// POST /api/v1/auth/register (RegisterReq)
|
|
// POST /api/v1/auth/register/confirm (RegisterConfirmReq, OTP via MailHog)
|
|
// GET /api/v1/members/me (Bearer)
|
|
// PATCH /api/v1/members/me (UpdateMemberMeReq)
|
|
// POST /api/v1/auth/logout (Bearer)
|
|
import { get, patch, checkEnvelope } from '../lib/http.js';
|
|
import { registerAndConfirm, logout } from '../lib/auth.js';
|
|
|
|
export const options = {
|
|
vus: 1,
|
|
iterations: 1,
|
|
thresholds: {
|
|
checks: ['rate==1.0'],
|
|
http_req_failed: ['rate<0.05'],
|
|
},
|
|
};
|
|
|
|
export default function () {
|
|
const { identity, tokens } = registerAndConfirm();
|
|
const bearer = { Authorization: `Bearer ${tokens.access_token}` };
|
|
|
|
// GET /members/me
|
|
const meRes = get('/api/v1/members/me', bearer);
|
|
const me = checkEnvelope(meRes, 'GET /members/me');
|
|
if (!me.data || me.data.uid !== tokens.uid) {
|
|
throw new Error(`me.uid mismatch: ${meRes.body}`);
|
|
}
|
|
|
|
// PATCH /members/me
|
|
const newName = `${identity.displayName} updated`;
|
|
const patchRes = patch('/api/v1/members/me', {
|
|
display_name: newName,
|
|
language: 'en',
|
|
currency: 'TWD',
|
|
}, bearer);
|
|
const patched = checkEnvelope(patchRes, 'PATCH /members/me');
|
|
if (patched.data.display_name !== newName) {
|
|
throw new Error(`display_name did not update: got=${patched.data.display_name}`);
|
|
}
|
|
|
|
// POST /auth/logout
|
|
logout({ accessToken: tokens.access_token });
|
|
}
|