@villedemontreal/jwt-validator 5.7.7
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/LICENSE +21 -0
- package/README.md +313 -0
- package/dist/scripts/index.d.ts +6 -0
- package/dist/scripts/index.js +16 -0
- package/dist/scripts/index.js.map +1 -0
- package/dist/scripts/lint.d.ts +6 -0
- package/dist/scripts/lint.js +18 -0
- package/dist/scripts/lint.js.map +1 -0
- package/dist/scripts/lintFix.d.ts +6 -0
- package/dist/scripts/lintFix.js +21 -0
- package/dist/scripts/lintFix.js.map +1 -0
- package/dist/scripts/showCoverage.d.ts +13 -0
- package/dist/scripts/showCoverage.js +40 -0
- package/dist/scripts/showCoverage.js.map +1 -0
- package/dist/scripts/test.d.ts +13 -0
- package/dist/scripts/test.js +29 -0
- package/dist/scripts/test.js.map +1 -0
- package/dist/scripts/testUnits.d.ts +15 -0
- package/dist/scripts/testUnits.js +95 -0
- package/dist/scripts/testUnits.js.map +1 -0
- package/dist/scripts/watch.d.ts +14 -0
- package/dist/scripts/watch.js +96 -0
- package/dist/scripts/watch.js.map +1 -0
- package/dist/src/config/configs.d.ts +88 -0
- package/dist/src/config/configs.js +123 -0
- package/dist/src/config/configs.js.map +1 -0
- package/dist/src/config/constants.d.ts +56 -0
- package/dist/src/config/constants.js +66 -0
- package/dist/src/config/constants.js.map +1 -0
- package/dist/src/config/init.d.ts +15 -0
- package/dist/src/config/init.js +48 -0
- package/dist/src/config/init.js.map +1 -0
- package/dist/src/index.d.ts +10 -0
- package/dist/src/index.js +32 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/jwtValidator.d.ts +21 -0
- package/dist/src/jwtValidator.js +129 -0
- package/dist/src/jwtValidator.js.map +1 -0
- package/dist/src/jwtValidator.test.d.ts +1 -0
- package/dist/src/jwtValidator.test.js +500 -0
- package/dist/src/jwtValidator.test.js.map +1 -0
- package/dist/src/middleware/jwtMiddleware.d.ts +7 -0
- package/dist/src/middleware/jwtMiddleware.js +27 -0
- package/dist/src/middleware/jwtMiddleware.js.map +1 -0
- package/dist/src/models/customError.d.ts +11 -0
- package/dist/src/models/customError.js +38 -0
- package/dist/src/models/customError.js.map +1 -0
- package/dist/src/models/expressRequest.d.ts +15 -0
- package/dist/src/models/expressRequest.js +17 -0
- package/dist/src/models/expressRequest.js.map +1 -0
- package/dist/src/models/gluuUserType.d.ts +9 -0
- package/dist/src/models/gluuUserType.js +14 -0
- package/dist/src/models/gluuUserType.js.map +1 -0
- package/dist/src/models/jwtPayload.d.ts +30 -0
- package/dist/src/models/jwtPayload.js +19 -0
- package/dist/src/models/jwtPayload.js.map +1 -0
- package/dist/src/models/pagination.d.ts +16 -0
- package/dist/src/models/pagination.js +16 -0
- package/dist/src/models/pagination.js.map +1 -0
- package/dist/src/models/publicKey.d.ts +29 -0
- package/dist/src/models/publicKey.js +13 -0
- package/dist/src/models/publicKey.js.map +1 -0
- package/dist/src/repositories/cachedPublicKeyRepository.d.ts +53 -0
- package/dist/src/repositories/cachedPublicKeyRepository.js +102 -0
- package/dist/src/repositories/cachedPublicKeyRepository.js.map +1 -0
- package/dist/src/repositories/publicKeyRepository.d.ts +19 -0
- package/dist/src/repositories/publicKeyRepository.js +44 -0
- package/dist/src/repositories/publicKeyRepository.js.map +1 -0
- package/dist/src/userValidator.d.ts +30 -0
- package/dist/src/userValidator.js +35 -0
- package/dist/src/userValidator.js.map +1 -0
- package/dist/src/userValidator.test.d.ts +1 -0
- package/dist/src/userValidator.test.js +251 -0
- package/dist/src/userValidator.test.js.map +1 -0
- package/dist/src/utils/jwtMock.d.ts +31 -0
- package/dist/src/utils/jwtMock.js +221 -0
- package/dist/src/utils/jwtMock.js.map +1 -0
- package/dist/src/utils/logger.d.ts +11 -0
- package/dist/src/utils/logger.js +54 -0
- package/dist/src/utils/logger.js.map +1 -0
- package/dist/src/utils/testingConfigurations.d.ts +7 -0
- package/dist/src/utils/testingConfigurations.js +16 -0
- package/dist/src/utils/testingConfigurations.js.map +1 -0
- package/package.json +82 -0
- package/src/config/configs.ts +145 -0
- package/src/config/constants.ts +83 -0
- package/src/config/init.ts +58 -0
- package/src/index.ts +15 -0
- package/src/jwtValidator.test.ts +607 -0
- package/src/jwtValidator.ts +162 -0
- package/src/middleware/jwtMiddleware.ts +33 -0
- package/src/models/customError.ts +37 -0
- package/src/models/expressRequest.ts +27 -0
- package/src/models/gluuUserType.ts +9 -0
- package/src/models/jwtPayload.ts +58 -0
- package/src/models/pagination.ts +26 -0
- package/src/models/publicKey.ts +33 -0
- package/src/repositories/cachedPublicKeyRepository.ts +121 -0
- package/src/repositories/publicKeyRepository.ts +75 -0
- package/src/userValidator.test.ts +279 -0
- package/src/userValidator.ts +54 -0
- package/src/utils/jwtMock.ts +243 -0
- package/src/utils/logger.ts +60 -0
- package/src/utils/testingConfigurations.ts +12 -0
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.UserValidator = void 0;
|
|
4
|
+
const constants_1 = require("./config/constants");
|
|
5
|
+
const customError_1 = require("./models/customError");
|
|
6
|
+
const expressRequest_1 = require("./models/expressRequest");
|
|
7
|
+
/**
|
|
8
|
+
* User Validator
|
|
9
|
+
*/
|
|
10
|
+
class UserValidator {
|
|
11
|
+
/**
|
|
12
|
+
* Create a new instance of UserValidator
|
|
13
|
+
* @param {express.Request} req
|
|
14
|
+
*/
|
|
15
|
+
constructor(req) {
|
|
16
|
+
if (!(0, expressRequest_1.isRequestWithJwt)(req)) {
|
|
17
|
+
throw new Error(`Expecting a request with a '.jwt' here! : ${req}`);
|
|
18
|
+
}
|
|
19
|
+
this._request = req;
|
|
20
|
+
}
|
|
21
|
+
isUser(userId) {
|
|
22
|
+
return this._request.jwt.sub !== userId;
|
|
23
|
+
}
|
|
24
|
+
verifyUser(userId) {
|
|
25
|
+
if (this._request.jwt.sub !== userId && this._request.jwt.mtlIdentityId !== userId) {
|
|
26
|
+
throw (0, customError_1.createInvalidJwtError)({
|
|
27
|
+
code: constants_1.constants.errors.codes.UNAUTHORIZED_ACCESS,
|
|
28
|
+
target: 'jwt',
|
|
29
|
+
message: 'Unauthorized access',
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
exports.UserValidator = UserValidator;
|
|
35
|
+
//# sourceMappingURL=userValidator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"userValidator.js","sourceRoot":"","sources":["../../src/userValidator.ts"],"names":[],"mappings":";;;AACA,kDAA+C;AAC/C,sDAA6D;AAC7D,4DAA4E;AAoB5E;;GAEG;AACH,MAAa,aAAa;IAGxB;;;OAGG;IACH,YAAmB,GAAoB;QACrC,IAAI,CAAC,IAAA,iCAAgB,EAAC,GAAG,CAAC,EAAE;YAC1B,MAAM,IAAI,KAAK,CAAC,6CAA6C,GAAG,EAAE,CAAC,CAAC;SACrE;QACD,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC;IACtB,CAAC;IAEM,MAAM,CAAC,MAAc;QAC1B,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,KAAK,MAAM,CAAC;IAC1C,CAAC;IAEM,UAAU,CAAC,MAAc;QAC9B,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,KAAK,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,aAAa,KAAK,MAAM,EAAE;YAClF,MAAM,IAAA,mCAAqB,EAAC;gBAC1B,IAAI,EAAE,qBAAS,CAAC,MAAM,CAAC,KAAK,CAAC,mBAAmB;gBAChD,MAAM,EAAE,KAAK;gBACb,OAAO,EAAE,qBAAqB;aAC/B,CAAC,CAAC;SACJ;IACH,CAAC;CACF;AA3BD,sCA2BC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,251 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const chai_1 = require("chai");
|
|
4
|
+
const nock = require("nock");
|
|
5
|
+
const validator = require("validator");
|
|
6
|
+
const configs_1 = require("./config/configs");
|
|
7
|
+
const publicKey_1 = require("./models/publicKey");
|
|
8
|
+
const cachedPublicKeyRepository_1 = require("./repositories/cachedPublicKeyRepository");
|
|
9
|
+
const userValidator_1 = require("./userValidator");
|
|
10
|
+
const testingConfigurations_1 = require("./utils/testingConfigurations");
|
|
11
|
+
// ==========================================
|
|
12
|
+
// Set Testing configurations
|
|
13
|
+
// ==========================================
|
|
14
|
+
(0, testingConfigurations_1.setTestingConfigurations)();
|
|
15
|
+
/*
|
|
16
|
+
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
|
|
65
|
+
-----END RSA PRIVATE KEY-----`;
|
|
66
|
+
*/
|
|
67
|
+
const nockPublicKey = `-----BEGIN PUBLIC KEY-----
|
|
68
|
+
MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAzVZZXij6LgAUuH6ZcvGM
|
|
69
|
+
vskXj+a8T5uBkvFFEPnTdRN7dYdWrhxeqsDkvwpyxJehMRAANCP+AYXgLE2BA7qt
|
|
70
|
+
u0SCW+Hj+1+ZubQqwaD/EQtk72yU04rJw4YfDg6VyQbSdUQRQ7ktjVitglj4dBZA
|
|
71
|
+
x99O+4guId52bRZrqSLe4OUVeRSI6tSV6n7ta+vsvPxUdAylFI9mAlh2we7vAu18
|
|
72
|
+
X7cC/5Rzq4NIuHhWpkOwwE6h7RUu7oqWfpNYl+Ugzp7qgd/vosP4FtDTW0+N82Jj
|
|
73
|
+
iuKILc1bWicynv5ka22R4wNrGewPGDCyTckogxrUYkx80YFad4UBF2hGzTDfXng4
|
|
74
|
+
gIU61eJTiB5gy3t6AgHHaVbDPnGZIefPlE+4A35Ics4uIV1z5Kbmq2+aaP+YXE42
|
|
75
|
+
a/WoYJfkXqOHs1PjIJmVj/szVRKyKbpq9Qp3xIM+YZQlYUvgql/O6vbl5N1NbkV3
|
|
76
|
+
Cjpp+zknfYXmSUJ+0FGK/ZGcFRmOSeLyJnULeFS5EAF7CUnLMEfi0hFEiyOXSngT
|
|
77
|
+
BIPL2GKsvtliZvPS78ik2mfXyG0YJQiVM7hYyRV+AnudI0Pz/zjX2DvjM0s3jMeI
|
|
78
|
+
om+l3zpAZ4SmFDkKzhAvuxoSl2koH+VXm9QtsRFSZQwF3/K5l3Zx0yi1e16dMOWw
|
|
79
|
+
YPtMOiCbEausVW7wgzdoj+kCAwEAAQ==
|
|
80
|
+
-----END PUBLIC KEY-----`;
|
|
81
|
+
let date = new Date();
|
|
82
|
+
date.setHours(-1);
|
|
83
|
+
date.setMonth(date.getMonth() - 1);
|
|
84
|
+
const lastMonth = date.toISOString();
|
|
85
|
+
date.setMonth(date.getMonth() - 1);
|
|
86
|
+
const expiredDate = date.toISOString();
|
|
87
|
+
date = new Date();
|
|
88
|
+
date.setMonth(date.getMonth() + 1);
|
|
89
|
+
const newCreatedDate = date.toISOString();
|
|
90
|
+
date.setHours(date.getHours() + 1);
|
|
91
|
+
const newExpiredDate = date.toISOString();
|
|
92
|
+
const nocKPublicKeyExpired = {
|
|
93
|
+
id: 1,
|
|
94
|
+
algorithm: 'RSA256',
|
|
95
|
+
publicKey: nockPublicKey,
|
|
96
|
+
state: publicKey_1.PublicKeyState.EXPIRED,
|
|
97
|
+
createdAt: expiredDate,
|
|
98
|
+
expiresAt: lastMonth,
|
|
99
|
+
};
|
|
100
|
+
const nocKPublicKeyExpiredNotState = {
|
|
101
|
+
id: 2,
|
|
102
|
+
algorithm: 'RSA256',
|
|
103
|
+
publicKey: nockPublicKey,
|
|
104
|
+
state: publicKey_1.PublicKeyState.ACTIVE,
|
|
105
|
+
createdAt: expiredDate,
|
|
106
|
+
expiresAt: lastMonth,
|
|
107
|
+
};
|
|
108
|
+
const nocKPublicKeyRevoked = {
|
|
109
|
+
id: 3,
|
|
110
|
+
algorithm: 'RSA256',
|
|
111
|
+
publicKey: nockPublicKey,
|
|
112
|
+
state: publicKey_1.PublicKeyState.REVOKED,
|
|
113
|
+
createdAt: lastMonth,
|
|
114
|
+
expiresAt: newExpiredDate,
|
|
115
|
+
};
|
|
116
|
+
const nocKPublicKeyActiveOld = {
|
|
117
|
+
id: 4,
|
|
118
|
+
algorithm: 'RSA256',
|
|
119
|
+
publicKey: nockPublicKey,
|
|
120
|
+
state: publicKey_1.PublicKeyState.ACTIVE,
|
|
121
|
+
createdAt: lastMonth,
|
|
122
|
+
expiresAt: newExpiredDate,
|
|
123
|
+
};
|
|
124
|
+
const nocKPublicKeyActive = {
|
|
125
|
+
id: 5,
|
|
126
|
+
algorithm: 'RSA256',
|
|
127
|
+
publicKey: nockPublicKey,
|
|
128
|
+
state: publicKey_1.PublicKeyState.ACTIVE,
|
|
129
|
+
createdAt: newCreatedDate,
|
|
130
|
+
};
|
|
131
|
+
const nockListPublicKeys = {
|
|
132
|
+
paging: {
|
|
133
|
+
limit: 25,
|
|
134
|
+
offset: 0,
|
|
135
|
+
totalCount: 5,
|
|
136
|
+
},
|
|
137
|
+
items: [
|
|
138
|
+
nocKPublicKeyExpired,
|
|
139
|
+
nocKPublicKeyExpiredNotState,
|
|
140
|
+
nocKPublicKeyRevoked,
|
|
141
|
+
nocKPublicKeyActiveOld,
|
|
142
|
+
nocKPublicKeyActive,
|
|
143
|
+
],
|
|
144
|
+
};
|
|
145
|
+
// ==========================================
|
|
146
|
+
// User Validator
|
|
147
|
+
// ==========================================
|
|
148
|
+
let publicKeys;
|
|
149
|
+
const regExpEscape = (s) => {
|
|
150
|
+
return s.replace(/[-/\\^$*+?.()|[\]{}]/g, '\\$&');
|
|
151
|
+
};
|
|
152
|
+
const pathRegex = new RegExp(`${regExpEscape(configs_1.configs.getEndpoint())}(.*)`);
|
|
153
|
+
it('User Validator - init app & get jwt public key', async () => {
|
|
154
|
+
nock.cleanAll();
|
|
155
|
+
cachedPublicKeyRepository_1.cachedPublicKeyRepository.clearCache();
|
|
156
|
+
// Intercept request
|
|
157
|
+
nock(configs_1.configs.getHost()).get(pathRegex).reply(200, nockListPublicKeys);
|
|
158
|
+
publicKeys = await cachedPublicKeyRepository_1.cachedPublicKeyRepository.getAll();
|
|
159
|
+
chai_1.assert.match(publicKeys[1].publicKey, /^-----BEGIN PUBLIC KEY-----\n/m);
|
|
160
|
+
chai_1.assert.match(publicKeys[1].publicKey, /^-----BEGIN PUBLIC KEY-----\n/m);
|
|
161
|
+
chai_1.assert.match(publicKeys[1].publicKey, /\n-----END PUBLIC KEY-----$/m);
|
|
162
|
+
const key = publicKeys[1].publicKey
|
|
163
|
+
.replace(/^-----BEGIN PUBLIC KEY-----\n/m, '')
|
|
164
|
+
.replace(/\n-----END PUBLIC KEY-----$/m, '')
|
|
165
|
+
.split('\n')
|
|
166
|
+
.join('');
|
|
167
|
+
chai_1.assert.isTrue(validator.default.isBase64(key));
|
|
168
|
+
});
|
|
169
|
+
const mockRequest = require('mock-express-request');
|
|
170
|
+
it('should consider mtlIdentityId field when verifying user', async () => {
|
|
171
|
+
let hasThrown = false;
|
|
172
|
+
try {
|
|
173
|
+
const userId = 'voodoo';
|
|
174
|
+
const request = new mockRequest();
|
|
175
|
+
request.jwt = {
|
|
176
|
+
mtlIdentityId: 'voodoo',
|
|
177
|
+
};
|
|
178
|
+
const userValidator = new userValidator_1.UserValidator(request);
|
|
179
|
+
userValidator.verifyUser(userId);
|
|
180
|
+
}
|
|
181
|
+
catch (err) {
|
|
182
|
+
hasThrown = true;
|
|
183
|
+
}
|
|
184
|
+
chai_1.assert.isFalse(hasThrown);
|
|
185
|
+
});
|
|
186
|
+
it('should throw when either fields are matching', async () => {
|
|
187
|
+
let hasThrown = false;
|
|
188
|
+
try {
|
|
189
|
+
const userId = 'wrongVoodoo';
|
|
190
|
+
const request = new mockRequest();
|
|
191
|
+
request.jwt = {
|
|
192
|
+
mtlIdentityId: 'voodoo',
|
|
193
|
+
sub: 'voodoo',
|
|
194
|
+
};
|
|
195
|
+
const userValidator = new userValidator_1.UserValidator(request);
|
|
196
|
+
userValidator.verifyUser(userId);
|
|
197
|
+
}
|
|
198
|
+
catch (err) {
|
|
199
|
+
hasThrown = true;
|
|
200
|
+
}
|
|
201
|
+
chai_1.assert.isTrue(hasThrown);
|
|
202
|
+
});
|
|
203
|
+
/*
|
|
204
|
+
it('User Validator - verifyHeaderUser - should reject missing inum ', async function () {
|
|
205
|
+
|
|
206
|
+
let token: string = jwt.sign('{"a":"a", "keyId": 4}', nockPrivateKey, { algorithm: 'RS256' });
|
|
207
|
+
|
|
208
|
+
let response = await jwtValidator.verifyHeaderUser('Bearer ' + token, 'MyInum')
|
|
209
|
+
.catch((err) => {
|
|
210
|
+
assert.strictEqual(err.error.code, constants.errors.codes.INVALID_JWT);
|
|
211
|
+
assert.strictEqual(err.error.target, 'Authorization header');
|
|
212
|
+
assert.strictEqual(err.error.message, "Invalid JWT");
|
|
213
|
+
assert.strictEqual(err.error.details[0].code, constants.errors.codes.INVALID_VALUE);
|
|
214
|
+
assert.strictEqual(err.error.details[0].target, 'jwt');
|
|
215
|
+
assert.strictEqual(err.error.details[0].message, 'Invalid JWT content');
|
|
216
|
+
});
|
|
217
|
+
|
|
218
|
+
assert.isUndefined(response);
|
|
219
|
+
});
|
|
220
|
+
|
|
221
|
+
it('User Validator - verifyHeaderUser - should reject bad inum ', async function () {
|
|
222
|
+
|
|
223
|
+
let token: string = jwt.sign('{"inum":"a", "keyId": 4}', nockPrivateKey, { algorithm: 'RS256' });
|
|
224
|
+
|
|
225
|
+
let response = await jwtValidator.verifyHeaderUser('Bearer ' + token, 'MyInum')
|
|
226
|
+
.catch((err) => {
|
|
227
|
+
assert.strictEqual(err.error.code, constants.errors.codes.INVALID_JWT);
|
|
228
|
+
assert.strictEqual(err.error.target, 'Authorization header');
|
|
229
|
+
assert.strictEqual(err.error.message, "Invalid JWT");
|
|
230
|
+
assert.strictEqual(err.error.details[0].code, constants.errors.codes.UNAUTHORIZED_ACCESS);
|
|
231
|
+
assert.strictEqual(err.error.details[0].target, 'jwt');
|
|
232
|
+
assert.strictEqual(err.error.details[0].message, 'Unauthorized access');
|
|
233
|
+
});
|
|
234
|
+
|
|
235
|
+
assert.isUndefined(response);
|
|
236
|
+
});
|
|
237
|
+
|
|
238
|
+
it('User Validator - verifyHeaderUser - should accept good token ', async function () {
|
|
239
|
+
|
|
240
|
+
let payload: any = {
|
|
241
|
+
inum: "MyInum",
|
|
242
|
+
keyId: 4
|
|
243
|
+
};
|
|
244
|
+
let token: string = jwt.sign(JSON.stringify(payload), nockPrivateKey, { algorithm: 'RS256' });
|
|
245
|
+
|
|
246
|
+
let response = await jwtValidator.verifyHeaderUser('Bearer ' + token, 'MyInum');
|
|
247
|
+
|
|
248
|
+
assert.deepEqual(response, payload);
|
|
249
|
+
});
|
|
250
|
+
*/
|
|
251
|
+
//# sourceMappingURL=userValidator.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"userValidator.test.js","sourceRoot":"","sources":["../../src/userValidator.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { IPublicKey } from '../models/publicKey';
|
|
2
|
+
/**
|
|
3
|
+
* Tools to mock JWT
|
|
4
|
+
*/
|
|
5
|
+
export declare class JwtMock {
|
|
6
|
+
/**
|
|
7
|
+
* Return a public key from the mock db
|
|
8
|
+
*/
|
|
9
|
+
getPublicKey(keyId: number): IPublicKey;
|
|
10
|
+
/**
|
|
11
|
+
* Return the public keys from the mock db
|
|
12
|
+
*/
|
|
13
|
+
getPublicKeys(): IPublicKey[];
|
|
14
|
+
/**
|
|
15
|
+
* Return the private keys from the mock db
|
|
16
|
+
*/
|
|
17
|
+
getPrivateKey(): string;
|
|
18
|
+
/**
|
|
19
|
+
* Flush the public keys in cache and add the mocked public keys
|
|
20
|
+
*/
|
|
21
|
+
mockPublicKeys(options?: any): Promise<void>;
|
|
22
|
+
/**
|
|
23
|
+
* Generate a fake JWT signed with the mocked keys
|
|
24
|
+
*/
|
|
25
|
+
generateJwt(jwtProperties?: {}): string;
|
|
26
|
+
/**
|
|
27
|
+
* Deletes all mocks and also clears the cache
|
|
28
|
+
*/
|
|
29
|
+
cleanAll(): void;
|
|
30
|
+
}
|
|
31
|
+
export declare const jwtMock: JwtMock;
|
|
@@ -0,0 +1,221 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.jwtMock = exports.JwtMock = void 0;
|
|
4
|
+
const jwt = require("jsonwebtoken");
|
|
5
|
+
const lodash_1 = require("lodash");
|
|
6
|
+
// import * as nock from 'nock';
|
|
7
|
+
const configs_1 = require("../config/configs");
|
|
8
|
+
const publicKey_1 = require("../models/publicKey");
|
|
9
|
+
const cachedPublicKeyRepository_1 = require("../repositories/cachedPublicKeyRepository");
|
|
10
|
+
let nock;
|
|
11
|
+
const nockPrivateKey = `-----BEGIN RSA PRIVATE KEY-----
|
|
12
|
+
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
|
|
61
|
+
-----END RSA PRIVATE KEY-----`;
|
|
62
|
+
const nockPublicKey = `-----BEGIN PUBLIC KEY-----
|
|
63
|
+
MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAzVZZXij6LgAUuH6ZcvGM
|
|
64
|
+
vskXj+a8T5uBkvFFEPnTdRN7dYdWrhxeqsDkvwpyxJehMRAANCP+AYXgLE2BA7qt
|
|
65
|
+
u0SCW+Hj+1+ZubQqwaD/EQtk72yU04rJw4YfDg6VyQbSdUQRQ7ktjVitglj4dBZA
|
|
66
|
+
x99O+4guId52bRZrqSLe4OUVeRSI6tSV6n7ta+vsvPxUdAylFI9mAlh2we7vAu18
|
|
67
|
+
X7cC/5Rzq4NIuHhWpkOwwE6h7RUu7oqWfpNYl+Ugzp7qgd/vosP4FtDTW0+N82Jj
|
|
68
|
+
iuKILc1bWicynv5ka22R4wNrGewPGDCyTckogxrUYkx80YFad4UBF2hGzTDfXng4
|
|
69
|
+
gIU61eJTiB5gy3t6AgHHaVbDPnGZIefPlE+4A35Ics4uIV1z5Kbmq2+aaP+YXE42
|
|
70
|
+
a/WoYJfkXqOHs1PjIJmVj/szVRKyKbpq9Qp3xIM+YZQlYUvgql/O6vbl5N1NbkV3
|
|
71
|
+
Cjpp+zknfYXmSUJ+0FGK/ZGcFRmOSeLyJnULeFS5EAF7CUnLMEfi0hFEiyOXSngT
|
|
72
|
+
BIPL2GKsvtliZvPS78ik2mfXyG0YJQiVM7hYyRV+AnudI0Pz/zjX2DvjM0s3jMeI
|
|
73
|
+
om+l3zpAZ4SmFDkKzhAvuxoSl2koH+VXm9QtsRFSZQwF3/K5l3Zx0yi1e16dMOWw
|
|
74
|
+
YPtMOiCbEausVW7wgzdoj+kCAwEAAQ==
|
|
75
|
+
-----END PUBLIC KEY-----`;
|
|
76
|
+
let date = new Date();
|
|
77
|
+
date.setHours(-1);
|
|
78
|
+
date.setMonth(date.getMonth() - 1);
|
|
79
|
+
const lastMonth = date.toISOString();
|
|
80
|
+
date.setMonth(date.getMonth() - 1);
|
|
81
|
+
const expiredDate = date.toISOString();
|
|
82
|
+
date = new Date();
|
|
83
|
+
date.setMonth(date.getMonth() + 1);
|
|
84
|
+
const newCreatedDate = date.toISOString();
|
|
85
|
+
date.setHours(date.getHours() + 1);
|
|
86
|
+
const newExpiredDate = date.toISOString();
|
|
87
|
+
const nocKPublicKeyExpired = {
|
|
88
|
+
id: 1,
|
|
89
|
+
algorithm: 'RSA256',
|
|
90
|
+
publicKey: nockPublicKey,
|
|
91
|
+
state: publicKey_1.PublicKeyState.EXPIRED,
|
|
92
|
+
createdAt: expiredDate,
|
|
93
|
+
expiresAt: lastMonth,
|
|
94
|
+
};
|
|
95
|
+
const nocKPublicKeyExpiredNotState = {
|
|
96
|
+
id: 2,
|
|
97
|
+
algorithm: 'RSA256',
|
|
98
|
+
publicKey: nockPublicKey,
|
|
99
|
+
state: publicKey_1.PublicKeyState.ACTIVE,
|
|
100
|
+
createdAt: expiredDate,
|
|
101
|
+
expiresAt: lastMonth,
|
|
102
|
+
};
|
|
103
|
+
const nocKPublicKeyRevoked = {
|
|
104
|
+
id: 3,
|
|
105
|
+
algorithm: 'RSA256',
|
|
106
|
+
publicKey: nockPublicKey,
|
|
107
|
+
state: publicKey_1.PublicKeyState.REVOKED,
|
|
108
|
+
createdAt: lastMonth,
|
|
109
|
+
expiresAt: newExpiredDate,
|
|
110
|
+
};
|
|
111
|
+
const nocKPublicKeyActiveOld = {
|
|
112
|
+
id: 4,
|
|
113
|
+
algorithm: 'RSA256',
|
|
114
|
+
publicKey: nockPublicKey,
|
|
115
|
+
state: publicKey_1.PublicKeyState.ACTIVE,
|
|
116
|
+
createdAt: lastMonth,
|
|
117
|
+
expiresAt: newExpiredDate,
|
|
118
|
+
};
|
|
119
|
+
const nocKPublicKeyActive = {
|
|
120
|
+
id: 5,
|
|
121
|
+
algorithm: 'RSA256',
|
|
122
|
+
publicKey: nockPublicKey,
|
|
123
|
+
state: publicKey_1.PublicKeyState.ACTIVE,
|
|
124
|
+
createdAt: newCreatedDate,
|
|
125
|
+
};
|
|
126
|
+
const nockListPublicKeys = {
|
|
127
|
+
paging: {
|
|
128
|
+
limit: 25,
|
|
129
|
+
offset: 0,
|
|
130
|
+
totalCount: 5,
|
|
131
|
+
},
|
|
132
|
+
items: [
|
|
133
|
+
nocKPublicKeyExpired,
|
|
134
|
+
nocKPublicKeyExpiredNotState,
|
|
135
|
+
nocKPublicKeyRevoked,
|
|
136
|
+
nocKPublicKeyActiveOld,
|
|
137
|
+
nocKPublicKeyActive,
|
|
138
|
+
],
|
|
139
|
+
};
|
|
140
|
+
const regExpEscape = (s) => {
|
|
141
|
+
return s.replace(/[-/\\^$*+?.()|[\]{}]/g, '\\$&');
|
|
142
|
+
};
|
|
143
|
+
const pathRegex = new RegExp(`${regExpEscape(configs_1.configs.getEndpoint())}(.*)`);
|
|
144
|
+
/**
|
|
145
|
+
* Tools to mock JWT
|
|
146
|
+
*/
|
|
147
|
+
class JwtMock {
|
|
148
|
+
/**
|
|
149
|
+
* Return a public key from the mock db
|
|
150
|
+
*/
|
|
151
|
+
getPublicKey(keyId) {
|
|
152
|
+
const key = nockListPublicKeys.items[keyId - 1];
|
|
153
|
+
return key;
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Return the public keys from the mock db
|
|
157
|
+
*/
|
|
158
|
+
getPublicKeys() {
|
|
159
|
+
return nockListPublicKeys.items;
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Return the private keys from the mock db
|
|
163
|
+
*/
|
|
164
|
+
getPrivateKey() {
|
|
165
|
+
return nockPrivateKey;
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Flush the public keys in cache and add the mocked public keys
|
|
169
|
+
*/
|
|
170
|
+
async mockPublicKeys(options) {
|
|
171
|
+
cachedPublicKeyRepository_1.cachedPublicKeyRepository.clearCache();
|
|
172
|
+
// Intercept request
|
|
173
|
+
if (!nock) {
|
|
174
|
+
// Note that we lazy-load the nock module
|
|
175
|
+
// until we really need it, to avoid patching
|
|
176
|
+
// the http module for nothing.
|
|
177
|
+
nock = require('nock');
|
|
178
|
+
}
|
|
179
|
+
nock(configs_1.configs.getHost(), options).get(pathRegex).once().reply(200, nockListPublicKeys);
|
|
180
|
+
await cachedPublicKeyRepository_1.cachedPublicKeyRepository.getAll();
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Generate a fake JWT signed with the mocked keys
|
|
184
|
+
*/
|
|
185
|
+
generateJwt(jwtProperties = {}) {
|
|
186
|
+
const jwtPayload = (0, lodash_1.defaults)(jwtProperties, {
|
|
187
|
+
accessToken: 'c9ba5a95-d7f9-41f9-9a24-a7e41882f7ef',
|
|
188
|
+
iss: 'jwt-mock',
|
|
189
|
+
// From Introspect
|
|
190
|
+
exp: Date.now() + 3600,
|
|
191
|
+
iat: Date.now(),
|
|
192
|
+
keyId: 5,
|
|
193
|
+
// From ClientInfo
|
|
194
|
+
displayName: 'Service Account',
|
|
195
|
+
aud: '@!4025.CA62.9BB6.16C5!0001!2212.0010!0008!2212.0010',
|
|
196
|
+
// From UserInfo
|
|
197
|
+
name: 'Guillaume Smaha',
|
|
198
|
+
sub: '@!4025.CA62.9BB6.16C5!0001!2212.0010!0000!0000.0001',
|
|
199
|
+
inum: '@!4025.CA62.9BB6.16C5!0001!2212.0010!0000!0000.0001',
|
|
200
|
+
userName: 'xsmahgu@ville.montreal.qc.ca',
|
|
201
|
+
givenName: 'Guillaume',
|
|
202
|
+
familyName: 'Smaha',
|
|
203
|
+
userType: '',
|
|
204
|
+
mtlIdentityId: '100-qwerty-azerty-dvorak',
|
|
205
|
+
});
|
|
206
|
+
const jwtSigned = jwt.sign(jwtPayload, nockPrivateKey, {
|
|
207
|
+
algorithm: 'RS256',
|
|
208
|
+
});
|
|
209
|
+
return jwtSigned;
|
|
210
|
+
}
|
|
211
|
+
/**
|
|
212
|
+
* Deletes all mocks and also clears the cache
|
|
213
|
+
*/
|
|
214
|
+
cleanAll() {
|
|
215
|
+
nock.cleanAll();
|
|
216
|
+
cachedPublicKeyRepository_1.cachedPublicKeyRepository.clearCache();
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
exports.JwtMock = JwtMock;
|
|
220
|
+
exports.jwtMock = new JwtMock();
|
|
221
|
+
//# sourceMappingURL=jwtMock.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jwtMock.js","sourceRoot":"","sources":["../../../src/utils/jwtMock.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { ILogger } from '@villedemontreal/logger';
|
|
2
|
+
/**
|
|
3
|
+
* Creates a Logger.
|
|
4
|
+
*/
|
|
5
|
+
export declare function createLogger(name: string): ILogger;
|
|
6
|
+
/**
|
|
7
|
+
* A Logger that uses a dummy cid provider.
|
|
8
|
+
*
|
|
9
|
+
* Only use this when running the tests!
|
|
10
|
+
*/
|
|
11
|
+
export declare function getTestingLoggerCreator(): (name: string) => ILogger;
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getTestingLoggerCreator = exports.createLogger = void 0;
|
|
4
|
+
const logger_1 = require("@villedemontreal/logger");
|
|
5
|
+
const configs_1 = require("../config/configs");
|
|
6
|
+
let testingLoggerLibInitialised = false;
|
|
7
|
+
/**
|
|
8
|
+
* Creates a Logger.
|
|
9
|
+
*/
|
|
10
|
+
function createLogger(name) {
|
|
11
|
+
// ==========================================
|
|
12
|
+
// We use a LazyLogger so the real Logger
|
|
13
|
+
// is only created when the first
|
|
14
|
+
// log is actually performed... At that point,
|
|
15
|
+
// our "configs.loggerCreator" configuration
|
|
16
|
+
// must have been set by the code using our library!
|
|
17
|
+
//
|
|
18
|
+
// This pattern allows calling code to import
|
|
19
|
+
// modules from us in which a logger is
|
|
20
|
+
// created in the global scope :
|
|
21
|
+
//
|
|
22
|
+
// let logger = createLogger('someName');
|
|
23
|
+
//
|
|
24
|
+
// Without a Lazy Logger, the library configurations
|
|
25
|
+
// would at that moment *not* have been set yet
|
|
26
|
+
// (by the calling code) and an Error would be thrown
|
|
27
|
+
// because the "configs.loggerCreator" is required.
|
|
28
|
+
// ==========================================
|
|
29
|
+
return new logger_1.LazyLogger(name, (nameArg) => {
|
|
30
|
+
return configs_1.configs.loggerCreator(nameArg);
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
exports.createLogger = createLogger;
|
|
34
|
+
function initTestingLoggerConfigs() {
|
|
35
|
+
const loggerConfig = new logger_1.LoggerConfigs(() => 'test-cid');
|
|
36
|
+
loggerConfig.setLogLevel(logger_1.LogLevel.DEBUG);
|
|
37
|
+
(0, logger_1.initLogger)(loggerConfig);
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* A Logger that uses a dummy cid provider.
|
|
41
|
+
*
|
|
42
|
+
* Only use this when running the tests!
|
|
43
|
+
*/
|
|
44
|
+
function getTestingLoggerCreator() {
|
|
45
|
+
return (name) => {
|
|
46
|
+
if (!testingLoggerLibInitialised) {
|
|
47
|
+
initTestingLoggerConfigs();
|
|
48
|
+
testingLoggerLibInitialised = true;
|
|
49
|
+
}
|
|
50
|
+
return new logger_1.Logger(name);
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
exports.getTestingLoggerCreator = getTestingLoggerCreator;
|
|
54
|
+
//# sourceMappingURL=logger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../../src/utils/logger.ts"],"names":[],"mappings":";;;AAAA,oDAOiC;AACjC,+CAA4C;AAE5C,IAAI,2BAA2B,GAAG,KAAK,CAAC;AAExC;;GAEG;AACH,SAAgB,YAAY,CAAC,IAAY;IACvC,6CAA6C;IAC7C,yCAAyC;IACzC,iCAAiC;IACjC,8CAA8C;IAC9C,4CAA4C;IAC5C,oDAAoD;IACpD,EAAE;IACF,6CAA6C;IAC7C,uCAAuC;IACvC,gCAAgC;IAChC,EAAE;IACF,yCAAyC;IACzC,EAAE;IACF,oDAAoD;IACpD,+CAA+C;IAC/C,qDAAqD;IACrD,mDAAmD;IACnD,6CAA6C;IAC7C,OAAO,IAAI,mBAAU,CAAC,IAAI,EAAE,CAAC,OAAe,EAAE,EAAE;QAC9C,OAAO,iBAAO,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;AACL,CAAC;AAtBD,oCAsBC;AAED,SAAS,wBAAwB;IAC/B,MAAM,YAAY,GAAkB,IAAI,sBAAa,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,CAAC;IACxE,YAAY,CAAC,WAAW,CAAC,iBAAQ,CAAC,KAAK,CAAC,CAAC;IACzC,IAAA,mBAAU,EAAC,YAAY,CAAC,CAAC;AAC3B,CAAC;AAED;;;;GAIG;AACH,SAAgB,uBAAuB;IACrC,OAAO,CAAC,IAAY,EAAW,EAAE;QAC/B,IAAI,CAAC,2BAA2B,EAAE;YAChC,wBAAwB,EAAE,CAAC;YAC3B,2BAA2B,GAAG,IAAI,CAAC;SACpC;QAED,OAAO,IAAI,eAAM,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC,CAAC;AACJ,CAAC;AATD,0DASC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.setTestingConfigurations = void 0;
|
|
4
|
+
const init_1 = require("../config/init");
|
|
5
|
+
const logger_1 = require("../utils/logger");
|
|
6
|
+
/**
|
|
7
|
+
* Call this when your need to set
|
|
8
|
+
* *Testing* configurations to the current
|
|
9
|
+
* library, without the need for a calling code
|
|
10
|
+
* to do so.
|
|
11
|
+
*/
|
|
12
|
+
function setTestingConfigurations() {
|
|
13
|
+
(0, init_1.init)((0, logger_1.getTestingLoggerCreator)(), () => 'test-cid', 'https://api.dev.interne.montreal.ca');
|
|
14
|
+
}
|
|
15
|
+
exports.setTestingConfigurations = setTestingConfigurations;
|
|
16
|
+
//# sourceMappingURL=testingConfigurations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"testingConfigurations.js","sourceRoot":"","sources":["../../../src/utils/testingConfigurations.ts"],"names":[],"mappings":";;;AAAA,yCAAsC;AACtC,4CAA0D;AAE1D;;;;;GAKG;AACH,SAAgB,wBAAwB;IACtC,IAAA,WAAI,EAAC,IAAA,gCAAuB,GAAE,EAAE,GAAG,EAAE,CAAC,UAAU,EAAE,qCAAqC,CAAC,CAAC;AAC3F,CAAC;AAFD,4DAEC"}
|