@tellescope/sdk 1.255.11 → 1.255.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,511 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function(t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
+ t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
12
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
13
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
14
+ return new (P || (P = Promise))(function (resolve, reject) {
15
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
16
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
17
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
18
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
19
+ });
20
+ };
21
+ var __generator = (this && this.__generator) || function (thisArg, body) {
22
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
23
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
24
+ function verb(n) { return function (v) { return step([n, v]); }; }
25
+ function step(op) {
26
+ if (f) throw new TypeError("Generator is already executing.");
27
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
28
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
29
+ if (y = 0, t) op = [op[0] & 2, t.value];
30
+ switch (op[0]) {
31
+ case 0: case 1: t = op; break;
32
+ case 4: _.label++; return { value: op[1], done: false };
33
+ case 5: _.label++; y = op[1]; op = [0]; continue;
34
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
35
+ default:
36
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
37
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
38
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
39
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
40
+ if (t[2]) _.ops.pop();
41
+ _.trys.pop(); continue;
42
+ }
43
+ op = body.call(thisArg, _);
44
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
45
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
46
+ }
47
+ };
48
+ require('source-map-support').install();
49
+ import crypto from "crypto";
50
+ import { Session } from "../../sdk";
51
+ import { async_test, log_header, assert, wait, } from "@tellescope/testing";
52
+ import { setup_tests } from "../setup";
53
+ var host = process.env.API_URL || 'http://localhost:8080';
54
+ var decode_jwt = function (token) {
55
+ try {
56
+ var part = token.split('.')[1];
57
+ var json = Buffer.from(part.replace(/-/g, '+').replace(/_/g, '/'), 'base64').toString('utf8');
58
+ return JSON.parse(json);
59
+ }
60
+ catch (_a) {
61
+ return null;
62
+ }
63
+ };
64
+ // Client-side TOTP mirror (RFC 6238, HMAC-SHA1, 6 digits, 30s period) so the test can
65
+ // compute valid codes from the secret returned by begin_TOTP_configuration
66
+ var TOTP_PERIOD_MS = 30000;
67
+ var BASE32_ALPHABET = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567';
68
+ var base32_decode = function (s) {
69
+ var bits = 0, value = 0;
70
+ var bytes = [];
71
+ for (var _i = 0, _a = s.toUpperCase().replace(/=+$/, ''); _i < _a.length; _i++) {
72
+ var char = _a[_i];
73
+ var index = BASE32_ALPHABET.indexOf(char);
74
+ if (index === -1)
75
+ throw new Error("Invalid base32 character");
76
+ value = (value << 5) | index;
77
+ bits += 5;
78
+ if (bits >= 8) {
79
+ bytes.push((value >>> (bits - 8)) & 255);
80
+ bits -= 8;
81
+ }
82
+ }
83
+ return Buffer.from(bytes);
84
+ };
85
+ var current_timestep = function () { return Math.floor(Date.now() / TOTP_PERIOD_MS); };
86
+ var compute_totp_code = function (secret, timestep) {
87
+ if (timestep === void 0) { timestep = current_timestep(); }
88
+ var counter = Buffer.alloc(8);
89
+ counter.writeBigUInt64BE(BigInt(timestep));
90
+ var hmac = crypto.createHmac('sha1', base32_decode(secret)).update(counter).digest();
91
+ var offset = hmac[hmac.length - 1] & 0xf;
92
+ var binary = (((hmac[offset] & 0x7f) << 24)
93
+ | ((hmac[offset + 1] & 0xff) << 16)
94
+ | ((hmac[offset + 2] & 0xff) << 8)
95
+ | (hmac[offset + 3] & 0xff));
96
+ return (binary % 1000000).toString().padStart(6, '0');
97
+ };
98
+ // a syntactically-valid 6-digit code guaranteed not to match the current/adjacent timesteps
99
+ var wrong_totp_code = function (secret) {
100
+ var step = current_timestep();
101
+ var valid = new Set([step - 1, step, step + 1].map(function (s) { return compute_totp_code(secret, s); }));
102
+ var candidate = (parseInt(compute_totp_code(secret, step)) + 1) % 1000000;
103
+ while (valid.has(candidate.toString().padStart(6, '0'))) {
104
+ candidate = (candidate + 1) % 1000000;
105
+ }
106
+ return candidate.toString().padStart(6, '0');
107
+ };
108
+ export var totp_mfa_tests = function (_a) {
109
+ var sdk = _a.sdk, sdkNonAdmin = _a.sdkNonAdmin;
110
+ return __awaiter(void 0, void 0, void 0, function () {
111
+ var NON_ADMIN_EMAIL, NON_ADMIN_PASSWORD, nonAdminId, businessId, totpSecret, lastVerifiedStep, wait_for_fresh_totp_step, set_allowed_mfa_methods, clear_allowed_mfa_methods, reset_mfa_state, otpauthURL_1, challengeSession_1, challengeCode_1, replaySession_1, saw429, i, e_1;
112
+ var _b;
113
+ return __generator(this, function (_c) {
114
+ switch (_c.label) {
115
+ case 0:
116
+ log_header("TOTP MFA Tests");
117
+ NON_ADMIN_EMAIL = process.env.NON_ADMIN_EMAIL;
118
+ NON_ADMIN_PASSWORD = process.env.NON_ADMIN_PASSWORD;
119
+ if (!(NON_ADMIN_EMAIL && NON_ADMIN_PASSWORD)) {
120
+ throw new Error("NON_ADMIN_EMAIL and NON_ADMIN_PASSWORD must be set to run totp_mfa_tests");
121
+ }
122
+ nonAdminId = sdkNonAdmin.userInfo.id;
123
+ businessId = sdk.userInfo.businessId;
124
+ totpSecret = '';
125
+ lastVerifiedStep = 0;
126
+ wait_for_fresh_totp_step = function () { return __awaiter(void 0, void 0, void 0, function () {
127
+ return __generator(this, function (_a) {
128
+ switch (_a.label) {
129
+ case 0:
130
+ if (!(current_timestep() <= lastVerifiedStep)) return [3 /*break*/, 2];
131
+ return [4 /*yield*/, wait(undefined, 1000)];
132
+ case 1:
133
+ _a.sent();
134
+ return [3 /*break*/, 0];
135
+ case 2: return [2 /*return*/];
136
+ }
137
+ });
138
+ }); };
139
+ set_allowed_mfa_methods = function (methods) { return __awaiter(void 0, void 0, void 0, function () {
140
+ return __generator(this, function (_a) {
141
+ switch (_a.label) {
142
+ case 0: return [4 /*yield*/, sdk.api.users.updateOne(nonAdminId, { allowedMFAMethods: methods }, { replaceObjectFields: true })];
143
+ case 1:
144
+ _a.sent();
145
+ return [4 /*yield*/, wait(undefined, 250)];
146
+ case 2:
147
+ _a.sent();
148
+ return [2 /*return*/];
149
+ }
150
+ });
151
+ }); };
152
+ clear_allowed_mfa_methods = function () { return __awaiter(void 0, void 0, void 0, function () {
153
+ var u;
154
+ var _a;
155
+ return __generator(this, function (_b) {
156
+ switch (_b.label) {
157
+ case 0: return [4 /*yield*/, sdk.api.users.getOne(nonAdminId)];
158
+ case 1:
159
+ u = _b.sent();
160
+ if (!((_a = u.allowedMFAMethods) !== null && _a !== void 0 ? _a : []).length)
161
+ return [2 /*return*/];
162
+ return [4 /*yield*/, set_allowed_mfa_methods([])];
163
+ case 2:
164
+ _b.sent();
165
+ return [2 /*return*/];
166
+ }
167
+ });
168
+ }); };
169
+ reset_mfa_state = function () { return __awaiter(void 0, void 0, void 0, function () {
170
+ var _a, _b, _c, authToken, user, _d;
171
+ return __generator(this, function (_e) {
172
+ switch (_e.label) {
173
+ case 0:
174
+ _e.trys.push([0, 2, , 3]);
175
+ return [4 /*yield*/, sdk.api.organizations.updateOne(businessId, { enforceMFA: false })];
176
+ case 1:
177
+ _e.sent();
178
+ return [3 /*break*/, 3];
179
+ case 2:
180
+ _a = _e.sent();
181
+ return [3 /*break*/, 3];
182
+ case 3: return [4 /*yield*/, wait(undefined, 250)];
183
+ case 4:
184
+ _e.sent();
185
+ _e.label = 5;
186
+ case 5:
187
+ _e.trys.push([5, 7, , 8]);
188
+ return [4 /*yield*/, clear_allowed_mfa_methods()];
189
+ case 6:
190
+ _e.sent();
191
+ return [3 /*break*/, 8];
192
+ case 7:
193
+ _b = _e.sent();
194
+ return [3 /*break*/, 8];
195
+ case 8:
196
+ _e.trys.push([8, 11, , 12]);
197
+ return [4 /*yield*/, sdkNonAdmin.api.users.configure_MFA({ disable: true })];
198
+ case 9:
199
+ _c = _e.sent(), authToken = _c.authToken, user = _c.user;
200
+ return [4 /*yield*/, sdkNonAdmin.handle_new_session(__assign(__assign({}, user), { authToken: authToken }))];
201
+ case 10:
202
+ _e.sent();
203
+ return [3 /*break*/, 12];
204
+ case 11:
205
+ _d = _e.sent();
206
+ return [3 /*break*/, 12];
207
+ case 12: return [4 /*yield*/, wait(undefined, 250)];
208
+ case 13:
209
+ _e.sent();
210
+ return [2 /*return*/];
211
+ }
212
+ });
213
+ }); };
214
+ return [4 /*yield*/, reset_mfa_state()];
215
+ case 1:
216
+ _c.sent();
217
+ _c.label = 2;
218
+ case 2:
219
+ _c.trys.push([2, , 49, 51]);
220
+ // ============================================================
221
+ // A. Enrollment
222
+ // ============================================================
223
+ log_header("A. TOTP Enrollment");
224
+ otpauthURL_1 = '';
225
+ return [4 /*yield*/, async_test('A1. begin_TOTP_configuration returns otpauthURL + secret', function () { return sdkNonAdmin.api.users.begin_TOTP_configuration({}); }, { shouldError: false, onResult: function (r) {
226
+ totpSecret = r.secret;
227
+ otpauthURL_1 = r.otpauthURL;
228
+ return typeof r.secret === 'string' && r.secret.length >= 16 && /^[A-Z2-7]+$/.test(r.secret);
229
+ } })];
230
+ case 3:
231
+ _c.sent();
232
+ assert(otpauthURL_1.includes(totpSecret), 'otpauthURL missing secret', 'A2. otpauthURL contains secret');
233
+ assert(otpauthURL_1.startsWith('otpauth://totp/'), 'unexpected otpauth scheme', 'A3. otpauth scheme');
234
+ assert(otpauthURL_1.includes('issuer=Tellescope'), 'otpauthURL missing issuer', 'A4. otpauthURL issuer');
235
+ return [4 /*yield*/, async_test('A5. confirm with wrong code -> 401', function () { return sdkNonAdmin.api.users.confirm_TOTP_configuration({ code: wrong_totp_code(totpSecret) }); }, { shouldError: true, onError: function (e) { return e.statusCode === 401 || /invalid/i.test(e.message || ''); } })];
236
+ case 4:
237
+ _c.sent();
238
+ return [4 /*yield*/, wait(undefined, 600)]; // confirm rate limit is 1/500ms
239
+ case 5:
240
+ _c.sent(); // confirm rate limit is 1/500ms
241
+ return [4 /*yield*/, async_test('A6. confirm with correct code -> enabled, 10 recovery codes, requiresMFA false', function () { return sdkNonAdmin.api.users.confirm_TOTP_configuration({ code: compute_totp_code(totpSecret) }); }, { shouldError: false, onResult: function (r) {
242
+ var _a, _b, _c, _d;
243
+ if (r.authToken)
244
+ sdkNonAdmin.handle_new_session(__assign(__assign({}, r.user), { authToken: r.authToken }));
245
+ return (((_a = r.recoveryCodes) === null || _a === void 0 ? void 0 : _a.length) === 10
246
+ && ((_c = (_b = r.user) === null || _b === void 0 ? void 0 : _b.mfa) === null || _c === void 0 ? void 0 : _c.authenticator) === true
247
+ && ((_d = decode_jwt(r.authToken)) === null || _d === void 0 ? void 0 : _d.requiresMFA) === false);
248
+ } })];
249
+ case 6:
250
+ _c.sent();
251
+ lastVerifiedStep = current_timestep();
252
+ return [4 /*yield*/, async_test('A7. user record has mfa.authenticator === true', function () { return sdk.api.users.getOne(nonAdminId); }, { shouldError: false, onResult: function (u) { var _a, _b; return ((_a = u.mfa) === null || _a === void 0 ? void 0 : _a.authenticator) === true && !((_b = u.mfa) === null || _b === void 0 ? void 0 : _b.email); } })];
253
+ case 7:
254
+ _c.sent();
255
+ return [4 /*yield*/, async_test('A8. begin again while enrolled -> 400', function () { return sdkNonAdmin.api.users.begin_TOTP_configuration({}); }, { shouldError: true, onError: function (e) { return e.statusCode === 400 || /already configured/i.test(e.message || ''); } })
256
+ // ============================================================
257
+ // B. Login challenge + replay protection
258
+ // ============================================================
259
+ ];
260
+ case 8:
261
+ _c.sent();
262
+ // ============================================================
263
+ // B. Login challenge + replay protection
264
+ // ============================================================
265
+ log_header("B. TOTP Challenge + Replay");
266
+ challengeSession_1 = new Session({ host: host });
267
+ return [4 /*yield*/, challengeSession_1.authenticate(NON_ADMIN_EMAIL, NON_ADMIN_PASSWORD)];
268
+ case 9:
269
+ _c.sent();
270
+ assert(!!challengeSession_1.userInfo.requiresMFA || ((_b = decode_jwt(challengeSession_1.authToken)) === null || _b === void 0 ? void 0 : _b.requiresMFA) === true, 'expected requiresMFA session after password login with TOTP enabled', 'B1. password login yields requiresMFA session');
271
+ return [4 /*yield*/, wait_for_fresh_totp_step()];
272
+ case 10:
273
+ _c.sent();
274
+ challengeCode_1 = compute_totp_code(totpSecret);
275
+ return [4 /*yield*/, async_test('B2. submit_MFA_challenge with TOTP code -> full session', function () { return challengeSession_1.api.users.submit_MFA_challenge({ code: challengeCode_1 }); }, { shouldError: false, onResult: function (r) { var _a; return ((_a = decode_jwt(r.authToken)) === null || _a === void 0 ? void 0 : _a.requiresMFA) === false; } })];
276
+ case 11:
277
+ _c.sent();
278
+ lastVerifiedStep = current_timestep();
279
+ replaySession_1 = new Session({ host: host });
280
+ return [4 /*yield*/, replaySession_1.authenticate(NON_ADMIN_EMAIL, NON_ADMIN_PASSWORD)];
281
+ case 12:
282
+ _c.sent();
283
+ return [4 /*yield*/, wait(undefined, 600)]; // submit rate limit is 1/500ms
284
+ case 13:
285
+ _c.sent(); // submit rate limit is 1/500ms
286
+ return [4 /*yield*/, async_test('B3. replaying the same TOTP code -> 401', function () { return replaySession_1.api.users.submit_MFA_challenge({ code: challengeCode_1 }); }, { shouldError: true, onError: function (e) { return e.statusCode === 401 || /invalid/i.test(e.message || ''); } })
287
+ // ============================================================
288
+ // C. Recovery-code interplay with a second method
289
+ // ============================================================
290
+ ];
291
+ case 14:
292
+ _c.sent();
293
+ // ============================================================
294
+ // C. Recovery-code interplay with a second method
295
+ // ============================================================
296
+ log_header("C. Recovery-code interplay");
297
+ return [4 /*yield*/, async_test('C1. enabling email MFA when TOTP already configured -> recoveryCodes []', function () { return sdkNonAdmin.api.users.configure_MFA({}); }, { shouldError: false, onResult: function (r) {
298
+ var _a, _b, _c, _d, _e;
299
+ if (r.authToken)
300
+ sdkNonAdmin.handle_new_session(__assign(__assign({}, r.user), { authToken: r.authToken }));
301
+ return ((_a = r.recoveryCodes) === null || _a === void 0 ? void 0 : _a.length) === 0 && ((_c = (_b = r.user) === null || _b === void 0 ? void 0 : _b.mfa) === null || _c === void 0 ? void 0 : _c.email) === true && ((_e = (_d = r.user) === null || _d === void 0 ? void 0 : _d.mfa) === null || _e === void 0 ? void 0 : _e.authenticator) === true;
302
+ } })
303
+ // ============================================================
304
+ // D. Method-scoped disable + enforceMFA last-method rule
305
+ // ============================================================
306
+ ];
307
+ case 15:
308
+ _c.sent();
309
+ // ============================================================
310
+ // D. Method-scoped disable + enforceMFA last-method rule
311
+ // ============================================================
312
+ log_header("D. Method-scoped disable");
313
+ return [4 /*yield*/, sdk.api.organizations.updateOne(businessId, { enforceMFA: true })];
314
+ case 16:
315
+ _c.sent();
316
+ return [4 /*yield*/, wait(undefined, 250)];
317
+ case 17:
318
+ _c.sent();
319
+ return [4 /*yield*/, async_test('D1. disable email (other method remains) succeeds under enforceMFA', function () { return sdkNonAdmin.api.users.configure_MFA({ disable: true, method: 'email' }); }, { shouldError: false, onResult: function (r) {
320
+ var _a, _b, _c, _d;
321
+ if (r.authToken)
322
+ sdkNonAdmin.handle_new_session(__assign(__assign({}, r.user), { authToken: r.authToken }));
323
+ return !((_b = (_a = r.user) === null || _a === void 0 ? void 0 : _a.mfa) === null || _b === void 0 ? void 0 : _b.email) && ((_d = (_c = r.user) === null || _c === void 0 ? void 0 : _c.mfa) === null || _d === void 0 ? void 0 : _d.authenticator) === true;
324
+ } })];
325
+ case 18:
326
+ _c.sent();
327
+ return [4 /*yield*/, async_test('D2. disabling last method under enforceMFA -> 400', function () { return sdkNonAdmin.api.users.configure_MFA({ disable: true, method: 'authenticator' }); }, { shouldError: true, onError: function (e) { return e.statusCode === 400 || /at least one/i.test(e.message || ''); } })];
328
+ case 19:
329
+ _c.sent();
330
+ return [4 /*yield*/, sdk.api.organizations.updateOne(businessId, { enforceMFA: false })];
331
+ case 20:
332
+ _c.sent();
333
+ return [4 /*yield*/, wait(undefined, 250)];
334
+ case 21:
335
+ _c.sent();
336
+ return [4 /*yield*/, async_test('D3. disable authenticator (enforceMFA off) succeeds', function () { return sdkNonAdmin.api.users.configure_MFA({ disable: true, method: 'authenticator' }); }, { shouldError: false, onResult: function (r) {
337
+ var _a, _b, _c, _d;
338
+ if (r.authToken)
339
+ sdkNonAdmin.handle_new_session(__assign(__assign({}, r.user), { authToken: r.authToken }));
340
+ return !((_b = (_a = r.user) === null || _a === void 0 ? void 0 : _a.mfa) === null || _b === void 0 ? void 0 : _b.authenticator) && !((_d = (_c = r.user) === null || _c === void 0 ? void 0 : _c.mfa) === null || _d === void 0 ? void 0 : _d.email);
341
+ } })];
342
+ case 22:
343
+ _c.sent();
344
+ return [4 /*yield*/, async_test('D4. user record mfa cleared', function () { return sdk.api.users.getOne(nonAdminId); }, { shouldError: false, onResult: function (u) { var _a, _b; return !((_a = u.mfa) === null || _a === void 0 ? void 0 : _a.authenticator) && !((_b = u.mfa) === null || _b === void 0 ? void 0 : _b.email); } })
345
+ // TOTP secret deleted with the method: a still-valid-looking code must no longer verify
346
+ ];
347
+ case 23:
348
+ _c.sent();
349
+ // TOTP secret deleted with the method: a still-valid-looking code must no longer verify
350
+ return [4 /*yield*/, wait_for_fresh_totp_step()];
351
+ case 24:
352
+ // TOTP secret deleted with the method: a still-valid-looking code must no longer verify
353
+ _c.sent();
354
+ return [4 /*yield*/, wait(undefined, 600)]; // submit rate limit is 1/500ms
355
+ case 25:
356
+ _c.sent(); // submit rate limit is 1/500ms
357
+ return [4 /*yield*/, async_test('D5. TOTP submit after disable -> 401 (secret deleted)', function () { return sdkNonAdmin.api.users.submit_MFA_challenge({ code: compute_totp_code(totpSecret) }); }, { shouldError: true, onError: function (e) { return e.statusCode === 401 || /invalid/i.test(e.message || ''); } })
358
+ // ============================================================
359
+ // E. allowedMFAMethods restriction gating + grace
360
+ // ============================================================
361
+ ];
362
+ case 26:
363
+ _c.sent();
364
+ // ============================================================
365
+ // E. allowedMFAMethods restriction gating + grace
366
+ // ============================================================
367
+ log_header("E. allowedMFAMethods gating");
368
+ return [4 /*yield*/, set_allowed_mfa_methods(['authenticator'])];
369
+ case 27:
370
+ _c.sent();
371
+ return [4 /*yield*/, async_test('E1. restricted to authenticator: enabling email MFA -> 403', function () { return sdkNonAdmin.api.users.configure_MFA({}); }, { shouldError: true, onError: function (e) { return e.statusCode === 403 || /not permitted/i.test(e.message || ''); } })];
372
+ case 28:
373
+ _c.sent();
374
+ return [4 /*yield*/, async_test('E2. restricted to authenticator + email unconfigured: email challenge -> 403', function () { return sdkNonAdmin.api.users.generate_MFA_challenge({ method: 'email' }); }, { shouldError: true, onError: function (e) { return e.statusCode === 403 || /not permitted/i.test(e.message || ''); } })];
375
+ case 29:
376
+ _c.sent();
377
+ return [4 /*yield*/, set_allowed_mfa_methods(['email'])];
378
+ case 30:
379
+ _c.sent();
380
+ return [4 /*yield*/, async_test('E3. restricted to email: begin_TOTP_configuration -> 403', function () { return sdkNonAdmin.api.users.begin_TOTP_configuration({}); }, { shouldError: true, onError: function (e) { return e.statusCode === 403 || /not permitted/i.test(e.message || ''); } })];
381
+ case 31:
382
+ _c.sent();
383
+ return [4 /*yield*/, async_test('E4. restricted to email: enabling email MFA succeeds (first method -> 10 recovery codes)', function () { return sdkNonAdmin.api.users.configure_MFA({}); }, { shouldError: false, onResult: function (r) {
384
+ var _a, _b, _c;
385
+ if (r.authToken)
386
+ sdkNonAdmin.handle_new_session(__assign(__assign({}, r.user), { authToken: r.authToken }));
387
+ return ((_a = r.recoveryCodes) === null || _a === void 0 ? void 0 : _a.length) === 10 && ((_c = (_b = r.user) === null || _b === void 0 ? void 0 : _b.mfa) === null || _c === void 0 ? void 0 : _c.email) === true;
388
+ } })
389
+ // grace: email is configured, then the user is restricted to authenticator-only —
390
+ // the already-configured email method must keep working (no lockout)
391
+ ];
392
+ case 32:
393
+ _c.sent();
394
+ // grace: email is configured, then the user is restricted to authenticator-only —
395
+ // the already-configured email method must keep working (no lockout)
396
+ return [4 /*yield*/, set_allowed_mfa_methods(['authenticator'])];
397
+ case 33:
398
+ // grace: email is configured, then the user is restricted to authenticator-only —
399
+ // the already-configured email method must keep working (no lockout)
400
+ _c.sent();
401
+ return [4 /*yield*/, async_test('E5. grace: configured email challenge still works after restriction', function () { return sdkNonAdmin.api.users.generate_MFA_challenge({ method: 'email' }); }, { shouldError: false, onResult: function () { return true; } })
402
+ // cleanup E: clear restriction + disable email
403
+ ];
404
+ case 34:
405
+ _c.sent();
406
+ // cleanup E: clear restriction + disable email
407
+ return [4 /*yield*/, clear_allowed_mfa_methods()];
408
+ case 35:
409
+ // cleanup E: clear restriction + disable email
410
+ _c.sent();
411
+ return [4 /*yield*/, async_test('E6. cleanup: disable email', function () { return sdkNonAdmin.api.users.configure_MFA({ disable: true, method: 'email' }); }, { shouldError: false, onResult: function (r) {
412
+ if (r.authToken)
413
+ sdkNonAdmin.handle_new_session(__assign(__assign({}, r.user), { authToken: r.authToken }));
414
+ return true;
415
+ } })
416
+ // ============================================================
417
+ // F. allowedMFAMethods is admin-only
418
+ // ============================================================
419
+ ];
420
+ case 36:
421
+ _c.sent();
422
+ // ============================================================
423
+ // F. allowedMFAMethods is admin-only
424
+ // ============================================================
425
+ log_header("F. allowedMFAMethods admin gate");
426
+ return [4 /*yield*/, async_test('F1. non-admin cannot update allowedMFAMethods', function () { return sdkNonAdmin.api.users.updateOne(nonAdminId, { allowedMFAMethods: ['email'] }, { replaceObjectFields: true }); }, { shouldError: true, onError: function (e) { return /admin/i.test(e.message || '') || e.statusCode === 400 || e.statusCode === 403; } })];
427
+ case 37:
428
+ _c.sent();
429
+ return [4 /*yield*/, async_test('F2. admin can update allowedMFAMethods', function () { return sdk.api.users.updateOne(nonAdminId, { allowedMFAMethods: ['email'] }, { replaceObjectFields: true }); }, { shouldError: false, onResult: function () { return true; } })];
430
+ case 38:
431
+ _c.sent();
432
+ return [4 /*yield*/, wait(undefined, 250)];
433
+ case 39:
434
+ _c.sent();
435
+ return [4 /*yield*/, async_test('F3. allowedMFAMethods persisted', function () { return sdk.api.users.getOne(nonAdminId); }, { shouldError: false, onResult: function (u) { return JSON.stringify(u.allowedMFAMethods) === JSON.stringify(['email']); } })];
436
+ case 40:
437
+ _c.sent();
438
+ return [4 /*yield*/, clear_allowed_mfa_methods()
439
+ // ============================================================
440
+ // G. Brute-force rate limit (runs last: exhausts the 10/10min submit bucket)
441
+ // ============================================================
442
+ ];
443
+ case 41:
444
+ _c.sent();
445
+ // ============================================================
446
+ // G. Brute-force rate limit (runs last: exhausts the 10/10min submit bucket)
447
+ // ============================================================
448
+ log_header("G. Brute-force rate limit");
449
+ saw429 = false;
450
+ i = 0;
451
+ _c.label = 42;
452
+ case 42:
453
+ if (!(i < 12 && !saw429)) return [3 /*break*/, 48];
454
+ return [4 /*yield*/, wait(undefined, 600)]; // stay under the 1/500ms bucket so only the 10/10min bucket trips
455
+ case 43:
456
+ _c.sent(); // stay under the 1/500ms bucket so only the 10/10min bucket trips
457
+ _c.label = 44;
458
+ case 44:
459
+ _c.trys.push([44, 46, , 47]);
460
+ return [4 /*yield*/, sdkNonAdmin.api.users.submit_MFA_challenge({ code: '123456' })];
461
+ case 45:
462
+ _c.sent();
463
+ return [3 /*break*/, 47];
464
+ case 46:
465
+ e_1 = _c.sent();
466
+ if (e_1.statusCode === 429 || /rate limit/i.test(e_1.message || ''))
467
+ saw429 = true;
468
+ return [3 /*break*/, 47];
469
+ case 47:
470
+ i++;
471
+ return [3 /*break*/, 42];
472
+ case 48:
473
+ assert(saw429, 'expected 429 from repeated bad MFA submissions', 'G1. repeated bad codes hit 10/10min rate limit');
474
+ return [3 /*break*/, 51];
475
+ case 49: return [4 /*yield*/, reset_mfa_state()];
476
+ case 50:
477
+ _c.sent();
478
+ return [7 /*endfinally*/];
479
+ case 51: return [2 /*return*/];
480
+ }
481
+ });
482
+ });
483
+ };
484
+ // Allow running this test file independently
485
+ if (require.main === module) {
486
+ var sdk_1 = new Session({ host: host });
487
+ var sdkNonAdmin_1 = new Session({ host: host });
488
+ var runTests = function () { return __awaiter(void 0, void 0, void 0, function () {
489
+ return __generator(this, function (_a) {
490
+ switch (_a.label) {
491
+ case 0: return [4 /*yield*/, setup_tests(sdk_1, sdkNonAdmin_1)];
492
+ case 1:
493
+ _a.sent();
494
+ return [4 /*yield*/, totp_mfa_tests({ sdk: sdk_1, sdkNonAdmin: sdkNonAdmin_1 })];
495
+ case 2:
496
+ _a.sent();
497
+ return [2 /*return*/];
498
+ }
499
+ });
500
+ }); };
501
+ runTests()
502
+ .then(function () {
503
+ console.log("✅ TOTP MFA test suite completed successfully");
504
+ process.exit(0);
505
+ })
506
+ .catch(function (error) {
507
+ console.error("❌ TOTP MFA test suite failed:", error);
508
+ process.exit(1);
509
+ });
510
+ }
511
+ //# sourceMappingURL=totp_mfa.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"totp_mfa.test.js","sourceRoot":"","sources":["../../../../src/tests/api_tests/totp_mfa.test.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"tests.d.ts","sourceRoot":"","sources":["../../../src/tests/tests.ts"],"names":[],"mappings":"AAw0EA,eAAO,MAAM,kCAAkC,qBAgJ9C,CAAA;AAED,eAAO,MAAM,mCAAmC,qBA2K/C,CAAA;AAGD,eAAO,MAAM,oBAAoB,qBAoHhC,CAAA;AAED,eAAO,MAAM,+BAA+B,qBAsF3C,CAAA;AAID,eAAO,MAAM,0BAA0B,qBAqCtC,CAAA;AAu1FD,eAAO,MAAM,cAAc,qBAqC1B,CAAA;AAotBD,eAAO,MAAM,0BAA0B,qBAmFtC,CAAA;AAqED,eAAO,MAAM,eAAe,qBAmD3B,CAAA;AAED,eAAO,MAAM,oBAAoB,6BAsBhC,CAAA;AAED,eAAO,MAAM,oCAAoC,qBA4pBhD,CAAA;AAED,eAAO,MAAM,mCAAmC,qBAkE/C,CAAA;AAw7CD,eAAO,MAAM,yBAAyB,qBA0DrC,CAAA;AAED,eAAO,MAAM,kBAAkB,qBAmK9B,CAAA;AAED,eAAO,MAAM,sBAAsB,qBA0BlC,CAAA;AAGD,eAAO,MAAM,mBAAmB,qBAmC/B,CAAA;AAED,eAAO,MAAM,gCAAgC,mCA8C5C,CAAA;AAED,eAAO,MAAM,cAAc,qBAwb1B,CAAA;AAGD,eAAO,MAAM,oBAAoB,uBAuBhC,CAAA;AA4wBD,eAAO,MAAM,4BAA4B,qBAoExC,CAAA;AAED,eAAO,MAAM,+BAA+B,qBA4U3C,CAAA;AAED,eAAO,MAAM,gDAAgD,qBAwC5D,CAAA;AAED,eAAO,MAAM,qBAAqB,qBAwIjC,CAAA"}
1
+ {"version":3,"file":"tests.d.ts","sourceRoot":"","sources":["../../../src/tests/tests.ts"],"names":[],"mappings":"AAy0EA,eAAO,MAAM,kCAAkC,qBAgJ9C,CAAA;AAED,eAAO,MAAM,mCAAmC,qBA2K/C,CAAA;AAGD,eAAO,MAAM,oBAAoB,qBAoHhC,CAAA;AAED,eAAO,MAAM,+BAA+B,qBAsF3C,CAAA;AAID,eAAO,MAAM,0BAA0B,qBAqCtC,CAAA;AAu1FD,eAAO,MAAM,cAAc,qBAqC1B,CAAA;AAotBD,eAAO,MAAM,0BAA0B,qBAmFtC,CAAA;AAqED,eAAO,MAAM,eAAe,qBAmD3B,CAAA;AAED,eAAO,MAAM,oBAAoB,6BAsBhC,CAAA;AAED,eAAO,MAAM,oCAAoC,qBA4pBhD,CAAA;AAED,eAAO,MAAM,mCAAmC,qBAkE/C,CAAA;AAw7CD,eAAO,MAAM,yBAAyB,qBA0DrC,CAAA;AAED,eAAO,MAAM,kBAAkB,qBAmK9B,CAAA;AAED,eAAO,MAAM,sBAAsB,qBA0BlC,CAAA;AAGD,eAAO,MAAM,mBAAmB,qBAmC/B,CAAA;AAED,eAAO,MAAM,gCAAgC,mCA8C5C,CAAA;AAED,eAAO,MAAM,cAAc,qBAwb1B,CAAA;AAGD,eAAO,MAAM,oBAAoB,uBAuBhC,CAAA;AA4wBD,eAAO,MAAM,4BAA4B,qBAoExC,CAAA;AAED,eAAO,MAAM,+BAA+B,qBA4U3C,CAAA;AAED,eAAO,MAAM,gDAAgD,qBAwC5D,CAAA;AAED,eAAO,MAAM,qBAAqB,qBAwIjC,CAAA"}