@proteinjs/user-server 1.22.1 → 1.22.3
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.
- package/CHANGELOG.md +28 -0
- package/dist/generated/index.js +1 -1
- package/dist/generated/index.js.map +1 -1
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -1
- package/dist/index.js.map +1 -1
- package/dist/src/authentication/PasswordHasher.d.ts +9 -0
- package/dist/src/authentication/PasswordHasher.d.ts.map +1 -1
- package/dist/src/authentication/PasswordHasher.js +25 -0
- package/dist/src/authentication/PasswordHasher.js.map +1 -1
- package/dist/src/authentication/SocketIOSessionWatcher.d.ts +5 -0
- package/dist/src/authentication/SocketIOSessionWatcher.d.ts.map +1 -1
- package/dist/src/authentication/SocketIOSessionWatcher.js +13 -2
- package/dist/src/authentication/SocketIOSessionWatcher.js.map +1 -1
- package/dist/src/authentication/UserStatusTableWatcher.d.ts.map +1 -1
- package/dist/src/authentication/UserStatusTableWatcher.js +2 -1
- package/dist/src/authentication/UserStatusTableWatcher.js.map +1 -1
- package/dist/src/authentication/authenticate.d.ts +15 -0
- package/dist/src/authentication/authenticate.d.ts.map +1 -1
- package/dist/src/authentication/authenticate.js +55 -20
- package/dist/src/authentication/authenticate.js.map +1 -1
- package/dist/src/authorization/userCache.d.ts.map +1 -1
- package/dist/src/authorization/userCache.js +3 -2
- package/dist/src/authorization/userCache.js.map +1 -1
- package/dist/src/routes/devLogin.d.ts.map +1 -1
- package/dist/src/routes/devLogin.js +29 -14
- package/dist/src/routes/devLogin.js.map +1 -1
- package/dist/src/routes/executePasswordReset.d.ts +4 -0
- package/dist/src/routes/executePasswordReset.d.ts.map +1 -1
- package/dist/src/routes/executePasswordReset.js +12 -4
- package/dist/src/routes/executePasswordReset.js.map +1 -1
- package/dist/src/routes/initiatePasswordReset.d.ts +7 -0
- package/dist/src/routes/initiatePasswordReset.d.ts.map +1 -1
- package/dist/src/routes/initiatePasswordReset.js +28 -10
- package/dist/src/routes/initiatePasswordReset.js.map +1 -1
- package/dist/src/routes/login.d.ts +8 -0
- package/dist/src/routes/login.d.ts.map +1 -1
- package/dist/src/routes/login.js +63 -22
- package/dist/src/routes/login.js.map +1 -1
- package/dist/src/routes/signup.d.ts.map +1 -1
- package/dist/src/routes/signup.js +5 -2
- package/dist/src/routes/signup.js.map +1 -1
- package/dist/src/routes/validateResetPasswordToken.d.ts.map +1 -1
- package/dist/src/routes/validateResetPasswordToken.js +5 -1
- package/dist/src/routes/validateResetPasswordToken.js.map +1 -1
- package/dist/src/services/MachineCredentials.d.ts +10 -1
- package/dist/src/services/MachineCredentials.d.ts.map +1 -1
- package/dist/src/services/MachineCredentials.js +46 -15
- package/dist/src/services/MachineCredentials.js.map +1 -1
- package/dist/src/services/Roles.d.ts.map +1 -1
- package/dist/src/services/Roles.js +6 -2
- package/dist/src/services/Roles.js.map +1 -1
- package/dist/src/services/Signup.d.ts +5 -0
- package/dist/src/services/Signup.d.ts.map +1 -1
- package/dist/src/services/Signup.js +28 -6
- package/dist/src/services/Signup.js.map +1 -1
- package/dist/src/throttle/ClientAddress.d.ts +35 -0
- package/dist/src/throttle/ClientAddress.d.ts.map +1 -0
- package/dist/src/throttle/ClientAddress.js +48 -0
- package/dist/src/throttle/ClientAddress.js.map +1 -0
- package/dist/src/throttle/PasswordResetThrottle.d.ts +39 -0
- package/dist/src/throttle/PasswordResetThrottle.d.ts.map +1 -0
- package/dist/src/throttle/PasswordResetThrottle.js +59 -0
- package/dist/src/throttle/PasswordResetThrottle.js.map +1 -0
- package/dist/src/throttle/RequestDigests.d.ts +42 -0
- package/dist/src/throttle/RequestDigests.d.ts.map +1 -0
- package/dist/src/throttle/RequestDigests.js +96 -0
- package/dist/src/throttle/RequestDigests.js.map +1 -0
- package/dist/src/throttle/SignInThrottle.d.ts +67 -0
- package/dist/src/throttle/SignInThrottle.d.ts.map +1 -0
- package/dist/src/throttle/SignInThrottle.js +91 -0
- package/dist/src/throttle/SignInThrottle.js.map +1 -0
- package/dist/src/throttle/SlidingWindow.d.ts +51 -0
- package/dist/src/throttle/SlidingWindow.d.ts.map +1 -0
- package/dist/src/throttle/SlidingWindow.js +85 -0
- package/dist/src/throttle/SlidingWindow.js.map +1 -0
- package/dist/test/ClientAddress.test.d.ts +2 -0
- package/dist/test/ClientAddress.test.d.ts.map +1 -0
- package/dist/test/ClientAddress.test.js +51 -0
- package/dist/test/ClientAddress.test.js.map +1 -0
- package/dist/test/DevLogin.test.js +68 -0
- package/dist/test/DevLogin.test.js.map +1 -1
- package/dist/test/InitiatePasswordReset.test.js +373 -5
- package/dist/test/InitiatePasswordReset.test.js.map +1 -1
- package/dist/test/LogCapture.d.ts +10 -0
- package/dist/test/LogCapture.d.ts.map +1 -1
- package/dist/test/LogCapture.js +19 -0
- package/dist/test/LogCapture.js.map +1 -1
- package/dist/test/LogCapture.test.d.ts +2 -0
- package/dist/test/LogCapture.test.d.ts.map +1 -0
- package/dist/test/LogCapture.test.js +86 -0
- package/dist/test/LogCapture.test.js.map +1 -0
- package/dist/test/LoginThrottle.integration.test.d.ts +2 -0
- package/dist/test/LoginThrottle.integration.test.d.ts.map +1 -0
- package/dist/test/LoginThrottle.integration.test.js +616 -0
- package/dist/test/LoginThrottle.integration.test.js.map +1 -0
- package/dist/test/MachineAccounts.integration.test.js +156 -28
- package/dist/test/MachineAccounts.integration.test.js.map +1 -1
- package/dist/test/NoAddressesInLogs.integration.test.d.ts +2 -0
- package/dist/test/NoAddressesInLogs.integration.test.d.ts.map +1 -0
- package/dist/test/NoAddressesInLogs.integration.test.js +717 -0
- package/dist/test/NoAddressesInLogs.integration.test.js.map +1 -0
- package/dist/test/RequestDigests.test.d.ts +2 -0
- package/dist/test/RequestDigests.test.d.ts.map +1 -0
- package/dist/test/RequestDigests.test.js +73 -0
- package/dist/test/RequestDigests.test.js.map +1 -0
- package/dist/test/SignupRoute.test.js +80 -1
- package/dist/test/SignupRoute.test.js.map +1 -1
- package/dist/test/SlidingWindow.test.d.ts +2 -0
- package/dist/test/SlidingWindow.test.d.ts.map +1 -0
- package/dist/test/SlidingWindow.test.js +72 -0
- package/dist/test/SlidingWindow.test.js.map +1 -0
- package/dist/test/SocketIOSessionWatcher.test.d.ts +2 -0
- package/dist/test/SocketIOSessionWatcher.test.d.ts.map +1 -0
- package/dist/test/SocketIOSessionWatcher.test.js +144 -0
- package/dist/test/SocketIOSessionWatcher.test.js.map +1 -0
- package/generated/index.ts +1 -1
- package/index.ts +5 -0
- package/package.json +6 -5
- package/src/authentication/PasswordHasher.ts +18 -1
- package/src/authentication/SocketIOSessionWatcher.ts +13 -1
- package/src/authentication/UserStatusTableWatcher.ts +2 -1
- package/src/authentication/authenticate.ts +36 -9
- package/src/authorization/userCache.ts +3 -2
- package/src/routes/devLogin.ts +22 -10
- package/src/routes/executePasswordReset.ts +11 -3
- package/src/routes/initiatePasswordReset.ts +29 -11
- package/src/routes/login.ts +39 -8
- package/src/routes/signup.ts +5 -2
- package/src/routes/validateResetPasswordToken.ts +5 -1
- package/src/services/MachineCredentials.ts +44 -9
- package/src/services/Roles.ts +6 -2
- package/src/services/Signup.ts +30 -4
- package/src/throttle/ClientAddress.ts +47 -0
- package/src/throttle/PasswordResetThrottle.ts +62 -0
- package/src/throttle/RequestDigests.ts +97 -0
- package/src/throttle/SignInThrottle.ts +98 -0
- package/src/throttle/SlidingWindow.ts +90 -0
- package/test/ClientAddress.test.ts +54 -0
- package/test/DevLogin.test.ts +35 -1
- package/test/InitiatePasswordReset.test.ts +212 -6
- package/test/LogCapture.test.ts +29 -0
- package/test/LogCapture.ts +16 -0
- package/test/LoginThrottle.integration.test.ts +339 -0
- package/test/MachineAccounts.integration.test.ts +97 -22
- package/test/NoAddressesInLogs.integration.test.ts +409 -0
- package/test/RequestDigests.test.ts +81 -0
- package/test/SignupRoute.test.ts +54 -1
- package/test/SlidingWindow.test.ts +85 -0
- package/test/SocketIOSessionWatcher.test.ts +86 -0
- package/test/setup.js +2 -0
|
@@ -1,4 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __assign = (this && this.__assign) || function () {
|
|
3
|
+
__assign = Object.assign || function(t) {
|
|
4
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
+
s = arguments[i];
|
|
6
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
+
t[p] = s[p];
|
|
8
|
+
}
|
|
9
|
+
return t;
|
|
10
|
+
};
|
|
11
|
+
return __assign.apply(this, arguments);
|
|
12
|
+
};
|
|
2
13
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
14
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
15
|
return new (P || (P = Promise))(function (resolve, reject) {
|
|
@@ -35,6 +46,15 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
|
35
46
|
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
36
47
|
}
|
|
37
48
|
};
|
|
49
|
+
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
50
|
+
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
51
|
+
if (ar || !(i in from)) {
|
|
52
|
+
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
53
|
+
ar[i] = from[i];
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
return to.concat(ar || Array.prototype.slice.call(from));
|
|
57
|
+
};
|
|
38
58
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
39
59
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
40
60
|
};
|
|
@@ -48,10 +68,20 @@ var user_1 = require("@proteinjs/user");
|
|
|
48
68
|
var initiatePasswordReset_1 = require("../src/routes/initiatePasswordReset");
|
|
49
69
|
var executePasswordReset_1 = require("../src/routes/executePasswordReset");
|
|
50
70
|
var PasswordHasher_1 = require("../src/authentication/PasswordHasher");
|
|
71
|
+
var PasswordResetToken_1 = require("../src/authentication/PasswordResetToken");
|
|
72
|
+
var login_1 = require("../src/routes/login");
|
|
73
|
+
var passportSessionHarness_1 = require("./passportSessionHarness");
|
|
51
74
|
var UserServerTestEnvironment_1 = require("./UserServerTestEnvironment");
|
|
52
75
|
var LogCapture_1 = require("./LogCapture");
|
|
53
76
|
var testEnv = new UserServerTestEnvironment_1.UserServerTestEnvironment();
|
|
54
|
-
|
|
77
|
+
/** Each request arrives from its own client address unless the test names one (the dev shape: no proxy). */
|
|
78
|
+
var nextAddress = 0;
|
|
79
|
+
var fromAddress = function (ip) { return ({
|
|
80
|
+
headers: {},
|
|
81
|
+
socket: { remoteAddress: ip !== null && ip !== void 0 ? ip : "10.20.".concat(Math.floor(nextAddress / 250), ".").concat((nextAddress++ % 250) + 1) },
|
|
82
|
+
app: { get: function () { return false; } },
|
|
83
|
+
}); };
|
|
84
|
+
var invoke = function (route, request, events) { return __awaiter(void 0, void 0, void 0, function () {
|
|
55
85
|
var outcome, response;
|
|
56
86
|
return __generator(this, function (_a) {
|
|
57
87
|
switch (_a.label) {
|
|
@@ -63,17 +93,18 @@ var invoke = function (route, request) { return __awaiter(void 0, void 0, void 0
|
|
|
63
93
|
return this;
|
|
64
94
|
},
|
|
65
95
|
send: function (body) {
|
|
96
|
+
events === null || events === void 0 ? void 0 : events.push('answered');
|
|
66
97
|
outcome.body = body;
|
|
67
98
|
},
|
|
68
99
|
};
|
|
69
|
-
return [4 /*yield*/, route.onRequest(request, response)];
|
|
100
|
+
return [4 /*yield*/, route.onRequest(__assign(__assign({}, fromAddress()), request), response)];
|
|
70
101
|
case 1:
|
|
71
102
|
_a.sent();
|
|
72
103
|
return [2 /*return*/, outcome];
|
|
73
104
|
}
|
|
74
105
|
});
|
|
75
106
|
}); };
|
|
76
|
-
var GENERIC = { message: 'If
|
|
107
|
+
var GENERIC = { message: 'If that address has an account, a reset link is on its way.' };
|
|
77
108
|
var sha256Hex = function (value) { return (0, crypto_1.createHash)('sha256').update(value).digest('hex'); };
|
|
78
109
|
var userRow = function (email) { return __awaiter(void 0, void 0, void 0, function () { return __generator(this, function (_a) {
|
|
79
110
|
switch (_a.label) {
|
|
@@ -116,6 +147,33 @@ var tokenInLink = function (mailText) {
|
|
|
116
147
|
};
|
|
117
148
|
/** The token in the newest mailed reset link. */
|
|
118
149
|
var mailedToken = function () { var _a; return tokenInLink((_a = email_server_1.MailSink.get().list(1)[0]) === null || _a === void 0 ? void 0 : _a.text); };
|
|
150
|
+
/** Moves an account's last mint back past the five-minute gap, so only the windows can refuse. */
|
|
151
|
+
var ageLastMint = function (email) { return __awaiter(void 0, void 0, void 0, function () {
|
|
152
|
+
var armed;
|
|
153
|
+
return __generator(this, function (_a) {
|
|
154
|
+
switch (_a.label) {
|
|
155
|
+
case 0: return [4 /*yield*/, userRow(email)];
|
|
156
|
+
case 1:
|
|
157
|
+
armed = _a.sent();
|
|
158
|
+
return [4 /*yield*/, (0, db_1.getDbAsSystem)().update(user_1.tables.User, {
|
|
159
|
+
id: armed.id,
|
|
160
|
+
passwordResetTokenExpiration: (0, moment_1.default)().add(54, 'minutes'),
|
|
161
|
+
})];
|
|
162
|
+
case 2:
|
|
163
|
+
_a.sent();
|
|
164
|
+
return [2 /*return*/];
|
|
165
|
+
}
|
|
166
|
+
});
|
|
167
|
+
}); };
|
|
168
|
+
/** Log text without terminal colour codes. */
|
|
169
|
+
var plain = function (text) { return text.replace(new RegExp("".concat(String.fromCharCode(27), "\\[[0-9;]*m"), 'g'), ''); };
|
|
170
|
+
/** The `field: '<16 hex>'` value on each line containing `marker` ('missing' where absent). */
|
|
171
|
+
var fieldsOn = function (log, marker, field) {
|
|
172
|
+
return log.lines
|
|
173
|
+
.map(plain)
|
|
174
|
+
.filter(function (line) { return line.includes(marker); })
|
|
175
|
+
.map(function (line) { var _a, _b; return (_b = (_a = new RegExp("".concat(field, ": '([0-9a-f]{16})'")).exec(line)) === null || _a === void 0 ? void 0 : _a[1]) !== null && _b !== void 0 ? _b : 'missing'; });
|
|
176
|
+
};
|
|
119
177
|
describe('initiatePasswordReset route', function () {
|
|
120
178
|
var originalTransport = process.env.EMAIL_TRANSPORT;
|
|
121
179
|
beforeAll(function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
@@ -223,7 +281,7 @@ describe('initiatePasswordReset route', function () {
|
|
|
223
281
|
return [4 /*yield*/, invoke(initiatePasswordReset_1.initiatePasswordReset, { body: { email: 'initiate-send-fails@test.local' } })];
|
|
224
282
|
case 3:
|
|
225
283
|
failed = _b.sent();
|
|
226
|
-
expect(failed
|
|
284
|
+
expect(failed).toEqual({ status: 200, body: GENERIC });
|
|
227
285
|
return [4 /*yield*/, userRow('initiate-send-fails@test.local')];
|
|
228
286
|
case 4:
|
|
229
287
|
withdrawn = _b.sent();
|
|
@@ -348,7 +406,7 @@ describe('initiatePasswordReset route', function () {
|
|
|
348
406
|
return [4 /*yield*/, invoke(initiatePasswordReset_1.initiatePasswordReset, { body: { email: 'initiate-log-send-fails@test.local' } })];
|
|
349
407
|
case 5:
|
|
350
408
|
failed = _a.sent();
|
|
351
|
-
expect(failed
|
|
409
|
+
expect(failed).toEqual({ status: 200, body: GENERIC });
|
|
352
410
|
return [3 /*break*/, 7];
|
|
353
411
|
case 6:
|
|
354
412
|
send.mockRestore();
|
|
@@ -411,5 +469,315 @@ describe('initiatePasswordReset route', function () {
|
|
|
411
469
|
}
|
|
412
470
|
});
|
|
413
471
|
}); });
|
|
472
|
+
it('one answer whatever happens behind it: mailed, no account, too soon, over a window, a failed send', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
473
|
+
var answers, ask, i, send;
|
|
474
|
+
return __generator(this, function (_a) {
|
|
475
|
+
switch (_a.label) {
|
|
476
|
+
case 0: return [4 /*yield*/, testEnv.createUser({ name: 'Reset User', email: 'one-answer@test.local' })];
|
|
477
|
+
case 1:
|
|
478
|
+
_a.sent();
|
|
479
|
+
return [4 /*yield*/, testEnv.createUser({ name: 'Reset User', email: 'one-answer-fails@test.local' })];
|
|
480
|
+
case 2:
|
|
481
|
+
_a.sent();
|
|
482
|
+
answers = [];
|
|
483
|
+
ask = function (email, ip) { return __awaiter(void 0, void 0, void 0, function () { var _a, _b; return __generator(this, function (_c) {
|
|
484
|
+
switch (_c.label) {
|
|
485
|
+
case 0:
|
|
486
|
+
_b = (_a = answers).push;
|
|
487
|
+
return [4 /*yield*/, invoke(initiatePasswordReset_1.initiatePasswordReset, __assign(__assign({}, fromAddress(ip)), { body: { email: email } }))];
|
|
488
|
+
case 1: return [2 /*return*/, _b.apply(_a, [_c.sent()])];
|
|
489
|
+
}
|
|
490
|
+
}); }); };
|
|
491
|
+
return [4 /*yield*/, ask('one-answer@test.local')];
|
|
492
|
+
case 3:
|
|
493
|
+
_a.sent(); // mailed
|
|
494
|
+
return [4 /*yield*/, ask('one-answer-nobody@test.local')];
|
|
495
|
+
case 4:
|
|
496
|
+
_a.sent(); // no account
|
|
497
|
+
return [4 /*yield*/, ask('one-answer@test.local')];
|
|
498
|
+
case 5:
|
|
499
|
+
_a.sent(); // too soon
|
|
500
|
+
return [4 /*yield*/, ask('one-answer@test.local')];
|
|
501
|
+
case 6:
|
|
502
|
+
_a.sent();
|
|
503
|
+
return [4 /*yield*/, ask('one-answer@test.local')];
|
|
504
|
+
case 7:
|
|
505
|
+
_a.sent(); // over the address window
|
|
506
|
+
i = 0;
|
|
507
|
+
_a.label = 8;
|
|
508
|
+
case 8:
|
|
509
|
+
if (!(i < 11)) return [3 /*break*/, 11];
|
|
510
|
+
return [4 /*yield*/, ask("one-answer-sweep-".concat(i, "@test.local"), '198.18.0.1')];
|
|
511
|
+
case 9:
|
|
512
|
+
_a.sent(); // the eleventh is over the client window
|
|
513
|
+
_a.label = 10;
|
|
514
|
+
case 10:
|
|
515
|
+
i++;
|
|
516
|
+
return [3 /*break*/, 8];
|
|
517
|
+
case 11:
|
|
518
|
+
send = jest
|
|
519
|
+
.spyOn(email_server_1.EmailSender.prototype, 'sendEmail')
|
|
520
|
+
.mockRejectedValueOnce(new Error('Failed to send email'));
|
|
521
|
+
_a.label = 12;
|
|
522
|
+
case 12:
|
|
523
|
+
_a.trys.push([12, , 14, 15]);
|
|
524
|
+
return [4 /*yield*/, ask('one-answer-fails@test.local')];
|
|
525
|
+
case 13:
|
|
526
|
+
_a.sent(); // a failed send
|
|
527
|
+
return [3 /*break*/, 15];
|
|
528
|
+
case 14:
|
|
529
|
+
send.mockRestore();
|
|
530
|
+
return [7 /*endfinally*/];
|
|
531
|
+
case 15:
|
|
532
|
+
expect(answers).toHaveLength(17);
|
|
533
|
+
expect(new Set(answers.map(function (answer) { return JSON.stringify(answer); }))).toEqual(new Set([JSON.stringify({ status: 200, body: GENERIC })]));
|
|
534
|
+
return [2 /*return*/];
|
|
535
|
+
}
|
|
536
|
+
});
|
|
537
|
+
}); });
|
|
538
|
+
it('the answer goes out before the account is looked up, a token minted or a mail sent — its timing says nothing', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
539
|
+
var events, realMint, mint, send;
|
|
540
|
+
return __generator(this, function (_a) {
|
|
541
|
+
switch (_a.label) {
|
|
542
|
+
case 0: return [4 /*yield*/, testEnv.createUser({ name: 'Reset User', email: 'answer-first@test.local' })];
|
|
543
|
+
case 1:
|
|
544
|
+
_a.sent();
|
|
545
|
+
events = [];
|
|
546
|
+
realMint = PasswordResetToken_1.PasswordResetToken.prototype.mint;
|
|
547
|
+
mint = jest.spyOn(PasswordResetToken_1.PasswordResetToken.prototype, 'mint').mockImplementation(function () {
|
|
548
|
+
var args = [];
|
|
549
|
+
for (var _i = 0; _i < arguments.length; _i++) {
|
|
550
|
+
args[_i] = arguments[_i];
|
|
551
|
+
}
|
|
552
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
553
|
+
return __generator(this, function (_a) {
|
|
554
|
+
switch (_a.label) {
|
|
555
|
+
case 0:
|
|
556
|
+
events.push('minted');
|
|
557
|
+
return [4 /*yield*/, realMint.apply(this, args)];
|
|
558
|
+
case 1: return [2 /*return*/, _a.sent()];
|
|
559
|
+
}
|
|
560
|
+
});
|
|
561
|
+
});
|
|
562
|
+
});
|
|
563
|
+
send = jest.spyOn(email_server_1.EmailSender.prototype, 'sendEmail').mockImplementation(function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
564
|
+
return __generator(this, function (_a) {
|
|
565
|
+
events.push('mailed');
|
|
566
|
+
return [2 /*return*/];
|
|
567
|
+
});
|
|
568
|
+
}); });
|
|
569
|
+
_a.label = 2;
|
|
570
|
+
case 2:
|
|
571
|
+
_a.trys.push([2, , 4, 5]);
|
|
572
|
+
return [4 /*yield*/, invoke(initiatePasswordReset_1.initiatePasswordReset, { body: { email: 'answer-first@test.local' } }, events)];
|
|
573
|
+
case 3:
|
|
574
|
+
_a.sent();
|
|
575
|
+
return [3 /*break*/, 5];
|
|
576
|
+
case 4:
|
|
577
|
+
mint.mockRestore();
|
|
578
|
+
send.mockRestore();
|
|
579
|
+
return [7 /*endfinally*/];
|
|
580
|
+
case 5:
|
|
581
|
+
expect(events).toEqual(['answered', 'minted', 'mailed']);
|
|
582
|
+
return [2 /*return*/];
|
|
583
|
+
}
|
|
584
|
+
});
|
|
585
|
+
}); });
|
|
586
|
+
it('per address: the fourth request inside the hour mails nothing, even past the five-minute gap', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
587
|
+
var i, armed, fourth, _a;
|
|
588
|
+
return __generator(this, function (_b) {
|
|
589
|
+
switch (_b.label) {
|
|
590
|
+
case 0: return [4 /*yield*/, testEnv.createUser({ name: 'Reset User', email: 'address-window@test.local' })];
|
|
591
|
+
case 1:
|
|
592
|
+
_b.sent();
|
|
593
|
+
i = 0;
|
|
594
|
+
_b.label = 2;
|
|
595
|
+
case 2:
|
|
596
|
+
if (!(i < 3)) return [3 /*break*/, 6];
|
|
597
|
+
return [4 /*yield*/, invoke(initiatePasswordReset_1.initiatePasswordReset, { body: { email: 'Address-Window@test.local' } })];
|
|
598
|
+
case 3:
|
|
599
|
+
_b.sent();
|
|
600
|
+
return [4 /*yield*/, ageLastMint('address-window@test.local')];
|
|
601
|
+
case 4:
|
|
602
|
+
_b.sent();
|
|
603
|
+
_b.label = 5;
|
|
604
|
+
case 5:
|
|
605
|
+
i++;
|
|
606
|
+
return [3 /*break*/, 2];
|
|
607
|
+
case 6:
|
|
608
|
+
expect(email_server_1.MailSink.get().list()).toHaveLength(3);
|
|
609
|
+
return [4 /*yield*/, userRow('address-window@test.local')];
|
|
610
|
+
case 7:
|
|
611
|
+
armed = _b.sent();
|
|
612
|
+
return [4 /*yield*/, invoke(initiatePasswordReset_1.initiatePasswordReset, { body: { email: 'address-window@test.local' } })];
|
|
613
|
+
case 8:
|
|
614
|
+
fourth = _b.sent();
|
|
615
|
+
expect(fourth).toEqual({ status: 200, body: GENERIC });
|
|
616
|
+
expect(email_server_1.MailSink.get().list()).toHaveLength(3);
|
|
617
|
+
_a = expect;
|
|
618
|
+
return [4 /*yield*/, userRow('address-window@test.local')];
|
|
619
|
+
case 9:
|
|
620
|
+
_a.apply(void 0, [(_b.sent()).passwordResetToken]).toBe(armed.passwordResetToken);
|
|
621
|
+
return [2 /*return*/];
|
|
622
|
+
}
|
|
623
|
+
});
|
|
624
|
+
}); });
|
|
625
|
+
it('per client address: after ten requests the eleventh mails nothing, even for an account; another address still gets its link', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
626
|
+
var i, eleventh;
|
|
627
|
+
return __generator(this, function (_a) {
|
|
628
|
+
switch (_a.label) {
|
|
629
|
+
case 0: return [4 /*yield*/, testEnv.createUser({ name: 'Reset User', email: 'client-window@test.local' })];
|
|
630
|
+
case 1:
|
|
631
|
+
_a.sent();
|
|
632
|
+
i = 0;
|
|
633
|
+
_a.label = 2;
|
|
634
|
+
case 2:
|
|
635
|
+
if (!(i < 10)) return [3 /*break*/, 5];
|
|
636
|
+
return [4 /*yield*/, invoke(initiatePasswordReset_1.initiatePasswordReset, __assign(__assign({}, fromAddress('198.18.1.1')), { body: { email: "client-window-".concat(i, "@test.local") } }))];
|
|
637
|
+
case 3:
|
|
638
|
+
_a.sent();
|
|
639
|
+
_a.label = 4;
|
|
640
|
+
case 4:
|
|
641
|
+
i++;
|
|
642
|
+
return [3 /*break*/, 2];
|
|
643
|
+
case 5: return [4 /*yield*/, invoke(initiatePasswordReset_1.initiatePasswordReset, __assign(__assign({}, fromAddress('198.18.1.1')), { body: { email: 'client-window@test.local' } }))];
|
|
644
|
+
case 6:
|
|
645
|
+
eleventh = _a.sent();
|
|
646
|
+
expect(eleventh).toEqual({ status: 200, body: GENERIC });
|
|
647
|
+
expect(email_server_1.MailSink.get().list()).toHaveLength(0);
|
|
648
|
+
return [4 /*yield*/, invoke(initiatePasswordReset_1.initiatePasswordReset, __assign(__assign({}, fromAddress('198.18.1.2')), { body: { email: 'client-window@test.local' } }))];
|
|
649
|
+
case 7:
|
|
650
|
+
_a.sent();
|
|
651
|
+
expect(email_server_1.MailSink.get()
|
|
652
|
+
.list()
|
|
653
|
+
.map(function (mail) { return mail.to; })).toEqual([['client-window@test.local']]);
|
|
654
|
+
return [2 /*return*/];
|
|
655
|
+
}
|
|
656
|
+
});
|
|
657
|
+
}); });
|
|
658
|
+
it('every request is one outcome line with the account digest and the coarse IP hash — never the address', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
659
|
+
var log, markers, accounts, person, ips, text, _i, _a, fragment;
|
|
660
|
+
var _b;
|
|
661
|
+
return __generator(this, function (_c) {
|
|
662
|
+
switch (_c.label) {
|
|
663
|
+
case 0: return [4 /*yield*/, testEnv.createUser({ name: 'Reset User', email: 'reset.privacy.person@test.local' })];
|
|
664
|
+
case 1:
|
|
665
|
+
_c.sent();
|
|
666
|
+
return [4 /*yield*/, LogCapture_1.LogCapture.during(function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
667
|
+
var ask;
|
|
668
|
+
return __generator(this, function (_a) {
|
|
669
|
+
switch (_a.label) {
|
|
670
|
+
case 0:
|
|
671
|
+
ask = function (email) { return invoke(initiatePasswordReset_1.initiatePasswordReset, __assign(__assign({}, fromAddress('198.18.2.7')), { body: { email: email } })); };
|
|
672
|
+
return [4 /*yield*/, ask('reset.privacy.person@test.local')];
|
|
673
|
+
case 1:
|
|
674
|
+
_a.sent(); // mailed
|
|
675
|
+
return [4 /*yield*/, ask('Reset.Privacy.Person@TEST.local')];
|
|
676
|
+
case 2:
|
|
677
|
+
_a.sent(); // too soon
|
|
678
|
+
return [4 /*yield*/, ask('RESET.PRIVACY.PERSON@test.local')];
|
|
679
|
+
case 3:
|
|
680
|
+
_a.sent(); // too soon
|
|
681
|
+
return [4 /*yield*/, ask('reset.privacy.person@test.local')];
|
|
682
|
+
case 4:
|
|
683
|
+
_a.sent(); // over the address window
|
|
684
|
+
return [4 /*yield*/, ask('reset.privacy.nobody@test.local')];
|
|
685
|
+
case 5:
|
|
686
|
+
_a.sent(); // no account
|
|
687
|
+
return [2 /*return*/];
|
|
688
|
+
}
|
|
689
|
+
});
|
|
690
|
+
}); })];
|
|
691
|
+
case 2:
|
|
692
|
+
log = _c.sent();
|
|
693
|
+
markers = [
|
|
694
|
+
'Password reset link mailed',
|
|
695
|
+
'Password reset requested too soon for user',
|
|
696
|
+
'Password reset throttled',
|
|
697
|
+
'Password reset requested for non-existent user',
|
|
698
|
+
];
|
|
699
|
+
accounts = markers.map(function (marker) { return fieldsOn(log, marker, 'account'); });
|
|
700
|
+
expect(accounts.map(function (values) { return values.length; })).toEqual([1, 2, 1, 1]);
|
|
701
|
+
person = accounts[0][0];
|
|
702
|
+
expect(person).toMatch(/^[0-9a-f]{16}$/);
|
|
703
|
+
expect(__spreadArray(__spreadArray([], accounts[1], true), accounts[2], true)).toEqual([person, person, person]);
|
|
704
|
+
expect(accounts[3][0]).toMatch(/^[0-9a-f]{16}$/);
|
|
705
|
+
expect(accounts[3][0]).not.toBe(person);
|
|
706
|
+
ips = (_b = []).concat.apply(_b, markers.map(function (marker) { return fieldsOn(log, marker, 'ip'); }));
|
|
707
|
+
expect(ips).toHaveLength(5);
|
|
708
|
+
expect(ips[0]).toMatch(/^[0-9a-f]{16}$/);
|
|
709
|
+
expect(new Set(ips)).toEqual(new Set([ips[0]]));
|
|
710
|
+
text = plain(log.text).toLowerCase();
|
|
711
|
+
for (_i = 0, _a = ['reset.privacy.person', 'reset.privacy.nobody', 'reset.privacy', '198.18.2.']; _i < _a.length; _i++) {
|
|
712
|
+
fragment = _a[_i];
|
|
713
|
+
expect(text).not.toContain(fragment);
|
|
714
|
+
}
|
|
715
|
+
return [2 /*return*/];
|
|
716
|
+
}
|
|
717
|
+
});
|
|
718
|
+
}); });
|
|
719
|
+
it("a reset link redeemed while wrong guesses hold the account's sign-in window shut lets the new password in at once", function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
720
|
+
var signIn, i, _a, redeemed, after;
|
|
721
|
+
return __generator(this, function (_b) {
|
|
722
|
+
switch (_b.label) {
|
|
723
|
+
case 0: return [4 /*yield*/, testEnv.createUser({ name: 'Reset User', email: 'reset-while-shut@test.local' })];
|
|
724
|
+
case 1:
|
|
725
|
+
_b.sent();
|
|
726
|
+
signIn = function (password) { return __awaiter(void 0, void 0, void 0, function () {
|
|
727
|
+
var sent, response, request;
|
|
728
|
+
var _a;
|
|
729
|
+
return __generator(this, function (_b) {
|
|
730
|
+
switch (_b.label) {
|
|
731
|
+
case 0:
|
|
732
|
+
response = {
|
|
733
|
+
send: function (body) {
|
|
734
|
+
sent = body;
|
|
735
|
+
},
|
|
736
|
+
status: function () { return response; },
|
|
737
|
+
};
|
|
738
|
+
return [4 /*yield*/, (0, passportSessionHarness_1.createPassportRequest)(__assign({ body: { email: 'reset-while-shut@test.local', password: password } }, fromAddress()))];
|
|
739
|
+
case 1:
|
|
740
|
+
request = (_b.sent()).request;
|
|
741
|
+
return [4 /*yield*/, login_1.login.onRequest(request, response)];
|
|
742
|
+
case 2:
|
|
743
|
+
_b.sent();
|
|
744
|
+
return [2 /*return*/, { sent: sent, signedInAs: (_a = request.session.passport) === null || _a === void 0 ? void 0 : _a.user }];
|
|
745
|
+
}
|
|
746
|
+
});
|
|
747
|
+
}); };
|
|
748
|
+
i = 0;
|
|
749
|
+
_b.label = 2;
|
|
750
|
+
case 2:
|
|
751
|
+
if (!(i < 10)) return [3 /*break*/, 5];
|
|
752
|
+
return [4 /*yield*/, signIn('wrong guess')];
|
|
753
|
+
case 3:
|
|
754
|
+
_b.sent();
|
|
755
|
+
_b.label = 4;
|
|
756
|
+
case 4:
|
|
757
|
+
i++;
|
|
758
|
+
return [3 /*break*/, 2];
|
|
759
|
+
case 5:
|
|
760
|
+
_a = expect;
|
|
761
|
+
return [4 /*yield*/, signIn('wrong guess')];
|
|
762
|
+
case 6:
|
|
763
|
+
_a.apply(void 0, [(_b.sent()).sent]).toEqual({ error: 'Too many attempts. Try again in a few minutes.' });
|
|
764
|
+
return [4 /*yield*/, invoke(initiatePasswordReset_1.initiatePasswordReset, { body: { email: 'reset-while-shut@test.local' } })];
|
|
765
|
+
case 7:
|
|
766
|
+
_b.sent();
|
|
767
|
+
return [4 /*yield*/, invoke(executePasswordReset_1.executePasswordReset, {
|
|
768
|
+
body: { token: mailedToken(), newPassword: 'a brand new password' },
|
|
769
|
+
})];
|
|
770
|
+
case 8:
|
|
771
|
+
redeemed = _b.sent();
|
|
772
|
+
expect(redeemed.status).toBe(200);
|
|
773
|
+
return [4 /*yield*/, signIn('a brand new password')];
|
|
774
|
+
case 9:
|
|
775
|
+
after = _b.sent();
|
|
776
|
+
expect(after.sent).toEqual({});
|
|
777
|
+
expect(after.signedInAs).toBe('reset-while-shut@test.local');
|
|
778
|
+
return [2 /*return*/];
|
|
779
|
+
}
|
|
780
|
+
});
|
|
781
|
+
}); });
|
|
414
782
|
});
|
|
415
783
|
//# sourceMappingURL=InitiatePasswordReset.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InitiatePasswordReset.test.js","sourceRoot":"","sources":["../../test/InitiatePasswordReset.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"InitiatePasswordReset.test.js","sourceRoot":"","sources":["../../test/InitiatePasswordReset.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,9 +8,19 @@ export declare class LogCapture {
|
|
|
8
8
|
readonly lines: string[];
|
|
9
9
|
/** How many leading characters of a token count as the token showing up in a log. */
|
|
10
10
|
private static readonly TOKEN_PREFIX_LENGTH;
|
|
11
|
+
/**
|
|
12
|
+
* An e-mail address, as the house's log check reads one: bare, or URL-encoded (`%40` for the `@`)
|
|
13
|
+
* as a logged request path carries it — a check that read only the bare spelling missed the one
|
|
14
|
+
* place an address is known to reach a log, the request log's URL.
|
|
15
|
+
*/
|
|
16
|
+
private static readonly ADDRESS_SHAPE;
|
|
11
17
|
private constructor();
|
|
12
18
|
static during(run: () => Promise<void>): Promise<LogCapture>;
|
|
13
19
|
get text(): string;
|
|
20
|
+
/** Every e-mail address the log holds, in order of appearance — a log names people by their digests, never by address. */
|
|
21
|
+
get addresses(): string[];
|
|
22
|
+
/** The capture narrowed to the writes that contain `text` — one door's lines, read with the same readers. */
|
|
23
|
+
linesContaining(text: string): LogCapture;
|
|
14
24
|
/**
|
|
15
25
|
* Fails unless the log is free of `token` in every form that would let a log reader act on it
|
|
16
26
|
* or tie a line to a row: the token, the SHA-256 digest a row stores for it, and the token's
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LogCapture.d.ts","sourceRoot":"","sources":["../../test/LogCapture.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,qBAAa,UAAU;
|
|
1
|
+
{"version":3,"file":"LogCapture.d.ts","sourceRoot":"","sources":["../../test/LogCapture.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,qBAAa,UAAU;IAUD,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE;IAT5C,qFAAqF;IACrF,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,mBAAmB,CAAM;IACjD;;;;OAIG;IACH,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAA6D;IAElG,OAAO;WAEM,MAAM,CAAC,GAAG,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC;IAsBlE,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,0HAA0H;IAC1H,IAAI,SAAS,IAAI,MAAM,EAAE,CAExB;IAED,6GAA6G;IAC7G,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU;IAIzC;;;;;OAKG;IACH,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;CAOlC"}
|
package/dist/test/LogCapture.js
CHANGED
|
@@ -106,6 +106,19 @@ var LogCapture = /** @class */ (function () {
|
|
|
106
106
|
enumerable: false,
|
|
107
107
|
configurable: true
|
|
108
108
|
});
|
|
109
|
+
Object.defineProperty(LogCapture.prototype, "addresses", {
|
|
110
|
+
/** Every e-mail address the log holds, in order of appearance — a log names people by their digests, never by address. */
|
|
111
|
+
get: function () {
|
|
112
|
+
var _a;
|
|
113
|
+
return (_a = this.text.match(LogCapture.ADDRESS_SHAPE)) !== null && _a !== void 0 ? _a : [];
|
|
114
|
+
},
|
|
115
|
+
enumerable: false,
|
|
116
|
+
configurable: true
|
|
117
|
+
});
|
|
118
|
+
/** The capture narrowed to the writes that contain `text` — one door's lines, read with the same readers. */
|
|
119
|
+
LogCapture.prototype.linesContaining = function (text) {
|
|
120
|
+
return new LogCapture(this.lines.filter(function (line) { return line.includes(text); }));
|
|
121
|
+
};
|
|
109
122
|
/**
|
|
110
123
|
* Fails unless the log is free of `token` in every form that would let a log reader act on it
|
|
111
124
|
* or tie a line to a row: the token, the SHA-256 digest a row stores for it, and the token's
|
|
@@ -121,6 +134,12 @@ var LogCapture = /** @class */ (function () {
|
|
|
121
134
|
};
|
|
122
135
|
/** How many leading characters of a token count as the token showing up in a log. */
|
|
123
136
|
LogCapture.TOKEN_PREFIX_LENGTH = 12;
|
|
137
|
+
/**
|
|
138
|
+
* An e-mail address, as the house's log check reads one: bare, or URL-encoded (`%40` for the `@`)
|
|
139
|
+
* as a logged request path carries it — a check that read only the bare spelling missed the one
|
|
140
|
+
* place an address is known to reach a log, the request log's URL.
|
|
141
|
+
*/
|
|
142
|
+
LogCapture.ADDRESS_SHAPE = /[A-Za-z0-9._%+-]+(?:@|%40)[A-Za-z0-9.-]+\.[A-Za-z]{2,}/g;
|
|
124
143
|
return LogCapture;
|
|
125
144
|
}());
|
|
126
145
|
exports.LogCapture = LogCapture;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LogCapture.js","sourceRoot":"","sources":["../../test/LogCapture.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iCAAoC;AAEpC;;;;;GAKG;AACH;
|
|
1
|
+
{"version":3,"file":"LogCapture.js","sourceRoot":"","sources":["../../test/LogCapture.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LogCapture.test.d.ts","sourceRoot":"","sources":["../../test/LogCapture.test.ts"],"names":[],"mappings":""}
|