@proteinjs/user-server 1.22.1 → 1.22.2

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.
Files changed (84) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/dist/generated/index.js +1 -1
  3. package/dist/generated/index.js.map +1 -1
  4. package/dist/index.d.ts +3 -0
  5. package/dist/index.d.ts.map +1 -1
  6. package/dist/index.js +9 -1
  7. package/dist/index.js.map +1 -1
  8. package/dist/src/authentication/PasswordHasher.d.ts +9 -0
  9. package/dist/src/authentication/PasswordHasher.d.ts.map +1 -1
  10. package/dist/src/authentication/PasswordHasher.js +25 -0
  11. package/dist/src/authentication/PasswordHasher.js.map +1 -1
  12. package/dist/src/authentication/authenticate.d.ts +15 -0
  13. package/dist/src/authentication/authenticate.d.ts.map +1 -1
  14. package/dist/src/authentication/authenticate.js +55 -20
  15. package/dist/src/authentication/authenticate.js.map +1 -1
  16. package/dist/src/routes/executePasswordReset.d.ts +4 -0
  17. package/dist/src/routes/executePasswordReset.d.ts.map +1 -1
  18. package/dist/src/routes/executePasswordReset.js +7 -0
  19. package/dist/src/routes/executePasswordReset.js.map +1 -1
  20. package/dist/src/routes/initiatePasswordReset.d.ts +7 -0
  21. package/dist/src/routes/initiatePasswordReset.d.ts.map +1 -1
  22. package/dist/src/routes/initiatePasswordReset.js +28 -10
  23. package/dist/src/routes/initiatePasswordReset.js.map +1 -1
  24. package/dist/src/routes/login.d.ts +8 -0
  25. package/dist/src/routes/login.d.ts.map +1 -1
  26. package/dist/src/routes/login.js +63 -22
  27. package/dist/src/routes/login.js.map +1 -1
  28. package/dist/src/throttle/ClientAddress.d.ts +35 -0
  29. package/dist/src/throttle/ClientAddress.d.ts.map +1 -0
  30. package/dist/src/throttle/ClientAddress.js +48 -0
  31. package/dist/src/throttle/ClientAddress.js.map +1 -0
  32. package/dist/src/throttle/PasswordResetThrottle.d.ts +39 -0
  33. package/dist/src/throttle/PasswordResetThrottle.d.ts.map +1 -0
  34. package/dist/src/throttle/PasswordResetThrottle.js +59 -0
  35. package/dist/src/throttle/PasswordResetThrottle.js.map +1 -0
  36. package/dist/src/throttle/RequestDigests.d.ts +42 -0
  37. package/dist/src/throttle/RequestDigests.d.ts.map +1 -0
  38. package/dist/src/throttle/RequestDigests.js +96 -0
  39. package/dist/src/throttle/RequestDigests.js.map +1 -0
  40. package/dist/src/throttle/SignInThrottle.d.ts +67 -0
  41. package/dist/src/throttle/SignInThrottle.d.ts.map +1 -0
  42. package/dist/src/throttle/SignInThrottle.js +91 -0
  43. package/dist/src/throttle/SignInThrottle.js.map +1 -0
  44. package/dist/src/throttle/SlidingWindow.d.ts +51 -0
  45. package/dist/src/throttle/SlidingWindow.d.ts.map +1 -0
  46. package/dist/src/throttle/SlidingWindow.js +85 -0
  47. package/dist/src/throttle/SlidingWindow.js.map +1 -0
  48. package/dist/test/ClientAddress.test.d.ts +2 -0
  49. package/dist/test/ClientAddress.test.d.ts.map +1 -0
  50. package/dist/test/ClientAddress.test.js +51 -0
  51. package/dist/test/ClientAddress.test.js.map +1 -0
  52. package/dist/test/InitiatePasswordReset.test.js +373 -5
  53. package/dist/test/InitiatePasswordReset.test.js.map +1 -1
  54. package/dist/test/LoginThrottle.integration.test.d.ts +2 -0
  55. package/dist/test/LoginThrottle.integration.test.d.ts.map +1 -0
  56. package/dist/test/LoginThrottle.integration.test.js +616 -0
  57. package/dist/test/LoginThrottle.integration.test.js.map +1 -0
  58. package/dist/test/RequestDigests.test.d.ts +2 -0
  59. package/dist/test/RequestDigests.test.d.ts.map +1 -0
  60. package/dist/test/RequestDigests.test.js +73 -0
  61. package/dist/test/RequestDigests.test.js.map +1 -0
  62. package/dist/test/SlidingWindow.test.d.ts +2 -0
  63. package/dist/test/SlidingWindow.test.d.ts.map +1 -0
  64. package/dist/test/SlidingWindow.test.js +72 -0
  65. package/dist/test/SlidingWindow.test.js.map +1 -0
  66. package/generated/index.ts +1 -1
  67. package/index.ts +5 -0
  68. package/package.json +2 -2
  69. package/src/authentication/PasswordHasher.ts +18 -1
  70. package/src/authentication/authenticate.ts +36 -9
  71. package/src/routes/executePasswordReset.ts +7 -0
  72. package/src/routes/initiatePasswordReset.ts +29 -11
  73. package/src/routes/login.ts +39 -8
  74. package/src/throttle/ClientAddress.ts +47 -0
  75. package/src/throttle/PasswordResetThrottle.ts +62 -0
  76. package/src/throttle/RequestDigests.ts +97 -0
  77. package/src/throttle/SignInThrottle.ts +98 -0
  78. package/src/throttle/SlidingWindow.ts +90 -0
  79. package/test/ClientAddress.test.ts +54 -0
  80. package/test/InitiatePasswordReset.test.ts +212 -6
  81. package/test/LoginThrottle.integration.test.ts +339 -0
  82. package/test/RequestDigests.test.ts +81 -0
  83. package/test/SlidingWindow.test.ts +85 -0
  84. package/test/setup.js +2 -0
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var ClientAddress_1 = require("../src/throttle/ClientAddress");
4
+ /**
5
+ * Which address a throttle keys on. Behind Google's external Application Load Balancer the
6
+ * header ends `<client-ip>,<load-balancer-ip>` — the balancer appends both, and anything before
7
+ * them is whatever the client itself sent. So the client is the SECOND entry from the right:
8
+ * never the last (the balancer's own address, the same for every visitor — a throttle keyed on
9
+ * it is one bucket for the whole world) and never the first (client-supplied, rotatable at will).
10
+ */
11
+ describe('ClientAddress', function () {
12
+ var behindTheBalancer = function (forwardedFor, socketAddress) {
13
+ var _a, _b;
14
+ if (socketAddress === void 0) { socketAddress = '35.191.0.10'; }
15
+ return ({
16
+ app: { get: function (setting) { return (setting === 'trust proxy' ? 1 : undefined); } },
17
+ headers: forwardedFor === undefined ? {} : { 'x-forwarded-for': forwardedFor },
18
+ socket: { remoteAddress: socketAddress },
19
+ // What express's own `request.ip` resolves to under `trust proxy 1`: the header's last entry.
20
+ ip: (_b = (_a = forwardedFor === null || forwardedFor === void 0 ? void 0 : forwardedFor.split(',').pop()) === null || _a === void 0 ? void 0 : _a.trim()) !== null && _b !== void 0 ? _b : socketAddress,
21
+ });
22
+ };
23
+ it("reads the client the balancer appended, not the balancer's own address", function () {
24
+ var request = behindTheBalancer('198.51.100.23, 34.120.1.1');
25
+ expect(new ClientAddress_1.ClientAddress().of(request)).toBe('198.51.100.23');
26
+ expect(request.ip).toBe('34.120.1.1');
27
+ });
28
+ it('ignores whatever the client put in the header itself', function () {
29
+ var spoofed = behindTheBalancer('203.0.113.99, 10.0.0.1, 198.51.100.23, 34.120.1.1');
30
+ expect(new ClientAddress_1.ClientAddress().of(spoofed)).toBe('198.51.100.23');
31
+ });
32
+ it('reads IPv6 clients the same way', function () {
33
+ expect(new ClientAddress_1.ClientAddress().of(behindTheBalancer('2001:db8:1:2:3:4:5:6,34.120.1.1'))).toBe('2001:db8:1:2:3:4:5:6');
34
+ });
35
+ it('a request that did not come through the balancer (no appended pair) keys on its own connection', function () {
36
+ expect(new ClientAddress_1.ClientAddress().of(behindTheBalancer(undefined, '10.8.0.7'))).toBe('10.8.0.7');
37
+ expect(new ClientAddress_1.ClientAddress().of(behindTheBalancer('10.8.0.9', '10.8.0.7'))).toBe('10.8.0.7');
38
+ });
39
+ it('with no proxy trusted (development) the connection is the client, and a forwarded header is ignored', function () {
40
+ var direct = {
41
+ app: { get: function () { return false; } },
42
+ headers: { 'x-forwarded-for': '203.0.113.99, 198.51.100.23' },
43
+ socket: { remoteAddress: '::1' },
44
+ };
45
+ expect(new ClientAddress_1.ClientAddress().of(direct)).toBe('::1');
46
+ });
47
+ it('a request with no connection details at all reads as the empty address', function () {
48
+ expect(new ClientAddress_1.ClientAddress().of({})).toBe('');
49
+ });
50
+ });
51
+ //# sourceMappingURL=ClientAddress.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ClientAddress.test.js","sourceRoot":"","sources":["../../test/ClientAddress.test.ts"],"names":[],"mappings":";;AAAA,+DAA8D;AAE9D;;;;;;GAMG;AACH,QAAQ,CAAC,eAAe,EAAE;IACxB,IAAM,iBAAiB,GAAG,UAAC,YAAgC,EAAE,aAA6B;;QAA7B,8BAAA,EAAA,6BAA6B;QAAK,OAAA,CAAC;YAC9F,GAAG,EAAE,EAAE,GAAG,EAAE,UAAC,OAAe,IAAK,OAAA,CAAC,OAAO,KAAK,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,EAA3C,CAA2C,EAAE;YAC9E,OAAO,EAAE,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,iBAAiB,EAAE,YAAY,EAAE;YAC9E,MAAM,EAAE,EAAE,aAAa,EAAE,aAAa,EAAE;YACxC,8FAA8F;YAC9F,EAAE,EAAE,MAAA,MAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,0CAAE,IAAI,EAAE,mCAAI,aAAa;SAC5D,CAAC,CAAA;KAAA,CAAC;IAEH,EAAE,CAAC,wEAAwE,EAAE;QAC3E,IAAM,OAAO,GAAG,iBAAiB,CAAC,2BAA2B,CAAC,CAAC;QAE/D,MAAM,CAAC,IAAI,6BAAa,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAC9D,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sDAAsD,EAAE;QACzD,IAAM,OAAO,GAAG,iBAAiB,CAAC,mDAAmD,CAAC,CAAC;QAEvF,MAAM,CAAC,IAAI,6BAAa,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IAChE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iCAAiC,EAAE;QACpC,MAAM,CAAC,IAAI,6BAAa,EAAE,CAAC,EAAE,CAAC,iBAAiB,CAAC,iCAAiC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;IACpH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gGAAgG,EAAE;QACnG,MAAM,CAAC,IAAI,6BAAa,EAAE,CAAC,EAAE,CAAC,iBAAiB,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC1F,MAAM,CAAC,IAAI,6BAAa,EAAE,CAAC,EAAE,CAAC,iBAAiB,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC7F,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qGAAqG,EAAE;QACxG,IAAM,MAAM,GAAG;YACb,GAAG,EAAE,EAAE,GAAG,EAAE,cAAM,OAAA,KAAK,EAAL,CAAK,EAAE;YACzB,OAAO,EAAE,EAAE,iBAAiB,EAAE,6BAA6B,EAAE;YAC7D,MAAM,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE;SACjC,CAAC;QAEF,MAAM,CAAC,IAAI,6BAAa,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wEAAwE,EAAE;QAC3E,MAAM,CAAC,IAAI,6BAAa,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -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
- var invoke = function (route, request) { return __awaiter(void 0, void 0, void 0, function () {
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 an account with that email exists, we have sent a password reset link.' };
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.status).toBe(500);
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.status).toBe(500);
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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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=LoginThrottle.integration.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LoginThrottle.integration.test.d.ts","sourceRoot":"","sources":["../../test/LoginThrottle.integration.test.ts"],"names":[],"mappings":""}