@diia-inhouse/test 7.3.24 → 8.0.0
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/dist/dbUtilsBuilder.d.ts +29 -0
- package/dist/dbUtilsBuilder.js +81 -114
- package/dist/documentsGenerator.d.ts +8 -0
- package/dist/documentsGenerator.js +14 -21
- package/dist/index.d.ts +16 -0
- package/dist/index.js +19 -27
- package/dist/interfaces/index.d.ts +6 -0
- package/dist/publicServiceGenerator.d.ts +9 -0
- package/dist/publicServiceGenerator.js +25 -23
- package/dist/randomGenerator.d.ts +7 -0
- package/dist/randomGenerator.js +14 -18
- package/dist/sessionGenerator.d.ts +37 -0
- package/dist/sessionGenerator.js +340 -335
- package/dist/stubs/documents/index.js +13 -16
- package/package.json +28 -31
- package/vitest/extend-expect.ts +1 -2
- package/vitest/matchers/toBeDesignSystemElement/index.ts +1 -1
- package/vitest/tsconfig.json +1 -0
- package/dist/dbUtilsBuilder.js.map +0 -1
- package/dist/documentsGenerator.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/interfaces/documents/driverLicense.js +0 -63
- package/dist/interfaces/documents/driverLicense.js.map +0 -1
- package/dist/interfaces/documents/foreignPassport.js +0 -20
- package/dist/interfaces/documents/foreignPassport.js.map +0 -1
- package/dist/interfaces/documents/index.js +0 -40
- package/dist/interfaces/documents/index.js.map +0 -1
- package/dist/interfaces/documents/internalPassport.js +0 -19
- package/dist/interfaces/documents/internalPassport.js.map +0 -1
- package/dist/interfaces/documents/taxpayerCard.js +0 -3
- package/dist/interfaces/documents/taxpayerCard.js.map +0 -1
- package/dist/interfaces/index.js +0 -3
- package/dist/interfaces/index.js.map +0 -1
- package/dist/publicServiceGenerator.js.map +0 -1
- package/dist/randomGenerator.js.map +0 -1
- package/dist/sessionGenerator.js.map +0 -1
- package/dist/stubs/documents/driverLicense.js +0 -233
- package/dist/stubs/documents/driverLicense.js.map +0 -1
- package/dist/stubs/documents/foreignPassport.js +0 -63
- package/dist/stubs/documents/foreignPassport.js.map +0 -1
- package/dist/stubs/documents/index.js.map +0 -1
- package/dist/stubs/documents/internalPassport.js +0 -59
- package/dist/stubs/documents/internalPassport.js.map +0 -1
- package/dist/stubs/documents/taxpayerCard.js +0 -20
- package/dist/stubs/documents/taxpayerCard.js.map +0 -1
- package/dist/stubs/photo.js +0 -5
- package/dist/stubs/photo.js.map +0 -1
- package/dist/stubs/signature.js +0 -5
- package/dist/stubs/signature.js.map +0 -1
- package/dist/types/dbUtilsBuilder.d.ts +0 -29
- package/dist/types/documentsGenerator.d.ts +0 -4
- package/dist/types/index.d.ts +0 -13
- package/dist/types/interfaces/documents/driverLicense.d.ts +0 -120
- package/dist/types/interfaces/documents/foreignPassport.d.ts +0 -87
- package/dist/types/interfaces/documents/index.d.ts +0 -82
- package/dist/types/interfaces/documents/internalPassport.d.ts +0 -49
- package/dist/types/interfaces/documents/taxpayerCard.d.ts +0 -17
- package/dist/types/interfaces/index.d.ts +0 -7
- package/dist/types/publicServiceGenerator.d.ts +0 -5
- package/dist/types/randomGenerator.d.ts +0 -4
- package/dist/types/sessionGenerator.d.ts +0 -33
- package/dist/types/stubs/documents/driverLicense.d.ts +0 -3
- package/dist/types/stubs/documents/foreignPassport.d.ts +0 -3
- package/dist/types/stubs/documents/index.d.ts +0 -2
- package/dist/types/stubs/documents/internalPassport.d.ts +0 -3
- package/dist/types/stubs/documents/taxpayerCard.d.ts +0 -3
- package/dist/types/stubs/photo.d.ts +0 -2
- package/dist/types/stubs/signature.d.ts +0 -2
package/dist/sessionGenerator.js
CHANGED
|
@@ -1,335 +1,340 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
}
|
|
334
|
-
|
|
335
|
-
|
|
1
|
+
import { createHmac, randomInt, randomUUID } from "node:crypto";
|
|
2
|
+
import { ObjectId } from "bson";
|
|
3
|
+
import { DateTime, Interval } from "luxon";
|
|
4
|
+
import { ActionVersion, AuthDocumentType, DiiaOfficeStatus, Gender, IdentifierPrefix, PlatformType, ProfileFeature, SessionType } from "@diia-inhouse/types";
|
|
5
|
+
//#region src/sessionGenerator.ts
|
|
6
|
+
var SessionGenerator = class {
|
|
7
|
+
random;
|
|
8
|
+
dateFormat = "dd.MM.yyyy";
|
|
9
|
+
constructor(random) {
|
|
10
|
+
this.random = random;
|
|
11
|
+
}
|
|
12
|
+
getUserActionArguments(user = {}, headers = {}, ops = {}) {
|
|
13
|
+
return {
|
|
14
|
+
session: this.getUserSession(user, ops.validItn),
|
|
15
|
+
headers: this.getHeaders(headers),
|
|
16
|
+
params: []
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
getAuthEntryPoint(authEntryPoint = {}) {
|
|
20
|
+
return {
|
|
21
|
+
target: "bankid",
|
|
22
|
+
isBankId: true,
|
|
23
|
+
bankName: "diia bank",
|
|
24
|
+
document: AuthDocumentType.ForeignPassport,
|
|
25
|
+
...authEntryPoint
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
getUserSession(tokenData = {}, validItn = false) {
|
|
29
|
+
const sessionType = SessionType.User;
|
|
30
|
+
const userData = this.getUserData(tokenData, validItn);
|
|
31
|
+
const { itn } = userData;
|
|
32
|
+
return {
|
|
33
|
+
sessionType,
|
|
34
|
+
user: {
|
|
35
|
+
...userData,
|
|
36
|
+
mobileUid: randomUUID(),
|
|
37
|
+
document: {
|
|
38
|
+
type: AuthDocumentType.ForeignPassport,
|
|
39
|
+
value: "12345"
|
|
40
|
+
},
|
|
41
|
+
sessionType,
|
|
42
|
+
identifier: this.createIdentifier(itn),
|
|
43
|
+
authEntryPoint: this.getAuthEntryPoint(),
|
|
44
|
+
refreshToken: {
|
|
45
|
+
value: randomUUID(),
|
|
46
|
+
expirationTime: Date.now() + 3e5
|
|
47
|
+
},
|
|
48
|
+
...tokenData
|
|
49
|
+
}
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
getDiiaOfficeUserSession(tokenData = {}, validItn = false, features = {}) {
|
|
53
|
+
return {
|
|
54
|
+
...this.getUserSession(tokenData, validItn),
|
|
55
|
+
features: {
|
|
56
|
+
[ProfileFeature.office]: {
|
|
57
|
+
officeIdentifier: randomUUID(),
|
|
58
|
+
profileId: randomUUID(),
|
|
59
|
+
organizationId: randomUUID(),
|
|
60
|
+
unitId: randomUUID(),
|
|
61
|
+
isOrganizationAdmin: false,
|
|
62
|
+
scopes: ["auth"],
|
|
63
|
+
status: DiiaOfficeStatus.ACTIVE,
|
|
64
|
+
tokenFailedAt: void 0
|
|
65
|
+
},
|
|
66
|
+
...features
|
|
67
|
+
}
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
getEResidentSession(tokenData = {}, validItn = false) {
|
|
71
|
+
const sessionType = SessionType.EResident;
|
|
72
|
+
const userData = this.getUserData(tokenData, validItn);
|
|
73
|
+
const { itn } = userData;
|
|
74
|
+
return {
|
|
75
|
+
sessionType,
|
|
76
|
+
user: {
|
|
77
|
+
...userData,
|
|
78
|
+
mobileUid: randomUUID(),
|
|
79
|
+
document: {
|
|
80
|
+
type: AuthDocumentType.EResidency,
|
|
81
|
+
value: "12345"
|
|
82
|
+
},
|
|
83
|
+
sessionType,
|
|
84
|
+
identifier: this.createIdentifier(itn, { prefix: IdentifierPrefix.EResident }),
|
|
85
|
+
authEntryPoint: this.getAuthEntryPoint(),
|
|
86
|
+
refreshToken: {
|
|
87
|
+
value: randomUUID(),
|
|
88
|
+
expirationTime: Date.now() + 3e5
|
|
89
|
+
},
|
|
90
|
+
...tokenData
|
|
91
|
+
}
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
getEResidentApplicantSession(tokenData = {}) {
|
|
95
|
+
const email = tokenData.email || "eresident-applicant@mail.com";
|
|
96
|
+
const sessionType = SessionType.EResidentApplicant;
|
|
97
|
+
return {
|
|
98
|
+
sessionType,
|
|
99
|
+
user: {
|
|
100
|
+
email,
|
|
101
|
+
sessionType,
|
|
102
|
+
document: {
|
|
103
|
+
type: AuthDocumentType.EResidentApplicantEmail,
|
|
104
|
+
value: email
|
|
105
|
+
},
|
|
106
|
+
mobileUid: randomUUID(),
|
|
107
|
+
identifier: this.createIdentifier(email, { prefix: IdentifierPrefix.EResidentApplicant }),
|
|
108
|
+
authEntryPoint: this.getAuthEntryPoint(),
|
|
109
|
+
refreshToken: {
|
|
110
|
+
value: randomUUID(),
|
|
111
|
+
expirationTime: Date.now() + 3e5
|
|
112
|
+
},
|
|
113
|
+
...tokenData
|
|
114
|
+
}
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
/** @deprecated use getAcquirerSessionStringId after diia-app v15 */
|
|
118
|
+
getAcquirerSession(tokenData = {}) {
|
|
119
|
+
const sessionType = SessionType.Acquirer;
|
|
120
|
+
return {
|
|
121
|
+
sessionType,
|
|
122
|
+
acquirer: {
|
|
123
|
+
sessionType,
|
|
124
|
+
refreshToken: {
|
|
125
|
+
value: randomUUID(),
|
|
126
|
+
expirationTime: Date.now() + 3e5
|
|
127
|
+
},
|
|
128
|
+
_id: new ObjectId().toString(),
|
|
129
|
+
...tokenData
|
|
130
|
+
}
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
getAcquirerSessionStringId(tokenData = {}) {
|
|
134
|
+
const sessionType = SessionType.Acquirer;
|
|
135
|
+
return {
|
|
136
|
+
sessionType,
|
|
137
|
+
acquirer: {
|
|
138
|
+
sessionType,
|
|
139
|
+
refreshToken: {
|
|
140
|
+
value: randomUUID(),
|
|
141
|
+
expirationTime: Date.now() + 3e5
|
|
142
|
+
},
|
|
143
|
+
_id: new ObjectId().toString(),
|
|
144
|
+
...tokenData
|
|
145
|
+
}
|
|
146
|
+
};
|
|
147
|
+
}
|
|
148
|
+
/** @deprecated use getPartnerSessionStringId after diia-app v15 */
|
|
149
|
+
getPartnerSession(tokenData = {}) {
|
|
150
|
+
const sessionType = SessionType.Partner;
|
|
151
|
+
return {
|
|
152
|
+
sessionType,
|
|
153
|
+
partner: {
|
|
154
|
+
_id: new ObjectId().toString(),
|
|
155
|
+
scopes: {},
|
|
156
|
+
sessionType,
|
|
157
|
+
refreshToken: {
|
|
158
|
+
value: randomUUID(),
|
|
159
|
+
expirationTime: Date.now() + 3e5
|
|
160
|
+
},
|
|
161
|
+
...tokenData
|
|
162
|
+
}
|
|
163
|
+
};
|
|
164
|
+
}
|
|
165
|
+
getPartnerSessionStringId(tokenData = {}) {
|
|
166
|
+
const sessionType = SessionType.Partner;
|
|
167
|
+
return {
|
|
168
|
+
sessionType,
|
|
169
|
+
partner: {
|
|
170
|
+
_id: new ObjectId().toString(),
|
|
171
|
+
scopes: {},
|
|
172
|
+
sessionType,
|
|
173
|
+
refreshToken: {
|
|
174
|
+
value: randomUUID(),
|
|
175
|
+
expirationTime: Date.now() + 3e5
|
|
176
|
+
},
|
|
177
|
+
...tokenData
|
|
178
|
+
}
|
|
179
|
+
};
|
|
180
|
+
}
|
|
181
|
+
getTemporarySession(tokenData = {}) {
|
|
182
|
+
const sessionType = SessionType.Temporary;
|
|
183
|
+
return {
|
|
184
|
+
sessionType,
|
|
185
|
+
temporary: {
|
|
186
|
+
sessionType,
|
|
187
|
+
refreshToken: {
|
|
188
|
+
value: randomUUID(),
|
|
189
|
+
expirationTime: Date.now() + 3e5
|
|
190
|
+
},
|
|
191
|
+
mobileUid: randomUUID(),
|
|
192
|
+
jti: randomUUID(),
|
|
193
|
+
scope: [],
|
|
194
|
+
...tokenData
|
|
195
|
+
}
|
|
196
|
+
};
|
|
197
|
+
}
|
|
198
|
+
getServiceEntranceSession(tokenData = {}) {
|
|
199
|
+
const sessionType = SessionType.ServiceEntrance;
|
|
200
|
+
return {
|
|
201
|
+
sessionType,
|
|
202
|
+
entrance: {
|
|
203
|
+
acquirerId: new ObjectId().toString(),
|
|
204
|
+
branchHashId: randomUUID(),
|
|
205
|
+
offerHashId: randomUUID(),
|
|
206
|
+
offerRequestHashId: randomUUID(),
|
|
207
|
+
mobileUid: randomUUID(),
|
|
208
|
+
sessionType,
|
|
209
|
+
refreshToken: {
|
|
210
|
+
value: randomUUID(),
|
|
211
|
+
expirationTime: Date.now() + 3e5
|
|
212
|
+
},
|
|
213
|
+
...tokenData
|
|
214
|
+
}
|
|
215
|
+
};
|
|
216
|
+
}
|
|
217
|
+
getPortalUserSession(tokenData = {}, validItn = false) {
|
|
218
|
+
const sessionType = SessionType.PortalUser;
|
|
219
|
+
const birthDate = tokenData.birthDay || this.getBirthDate();
|
|
220
|
+
const gender = this.getGender();
|
|
221
|
+
const itn = this.generateItn(birthDate, gender, validItn);
|
|
222
|
+
return {
|
|
223
|
+
sessionType,
|
|
224
|
+
user: {
|
|
225
|
+
sessionType,
|
|
226
|
+
refreshToken: {
|
|
227
|
+
value: randomUUID(),
|
|
228
|
+
expirationTime: Date.now() + 3e5
|
|
229
|
+
},
|
|
230
|
+
fName: "Дія",
|
|
231
|
+
lName: "Надія",
|
|
232
|
+
mName: "Володимирівна",
|
|
233
|
+
itn,
|
|
234
|
+
birthDay: birthDate,
|
|
235
|
+
identifier: randomUUID(),
|
|
236
|
+
...tokenData
|
|
237
|
+
}
|
|
238
|
+
};
|
|
239
|
+
}
|
|
240
|
+
getServiceUserSession(tokenData = {}) {
|
|
241
|
+
const sessionType = SessionType.ServiceUser;
|
|
242
|
+
return {
|
|
243
|
+
sessionType,
|
|
244
|
+
serviceUser: {
|
|
245
|
+
sessionType,
|
|
246
|
+
refreshToken: {
|
|
247
|
+
value: randomUUID(),
|
|
248
|
+
expirationTime: Date.now() + 3e5
|
|
249
|
+
},
|
|
250
|
+
login: "test-login",
|
|
251
|
+
...tokenData
|
|
252
|
+
}
|
|
253
|
+
};
|
|
254
|
+
}
|
|
255
|
+
getSessionBySessionType(sessionType, tokenData = {}, validItn = false) {
|
|
256
|
+
switch (sessionType) {
|
|
257
|
+
case SessionType.Acquirer: return this.getAcquirerSession(tokenData);
|
|
258
|
+
case SessionType.EResident: return this.getEResidentSession(tokenData, validItn);
|
|
259
|
+
case SessionType.EResidentApplicant: return this.getEResidentApplicantSession(tokenData);
|
|
260
|
+
case SessionType.Partner: return this.getPartnerSession(tokenData);
|
|
261
|
+
case SessionType.PortalUser: return this.getPortalUserSession(tokenData, validItn);
|
|
262
|
+
case SessionType.ServiceEntrance: return this.getServiceEntranceSession(tokenData);
|
|
263
|
+
case SessionType.ServiceUser: return this.getServiceUserSession(tokenData);
|
|
264
|
+
case SessionType.Temporary: return this.getTemporarySession(tokenData);
|
|
265
|
+
case SessionType.User: return this.getUserSession(tokenData, validItn);
|
|
266
|
+
default: return;
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
getHeaders(headers = {}) {
|
|
270
|
+
return {
|
|
271
|
+
mobileUid: randomUUID(),
|
|
272
|
+
traceId: randomUUID(),
|
|
273
|
+
token: randomUUID(),
|
|
274
|
+
platformType: PlatformType.Android,
|
|
275
|
+
platformVersion: "13",
|
|
276
|
+
appVersion: "3.0.55.981",
|
|
277
|
+
actionVersion: ActionVersion.V3,
|
|
278
|
+
...headers
|
|
279
|
+
};
|
|
280
|
+
}
|
|
281
|
+
getBirthDate() {
|
|
282
|
+
const fromDate = DateTime.fromFormat("31.12.1899", this.dateFormat);
|
|
283
|
+
const untilDate = DateTime.fromFormat("14.12.2004", this.dateFormat);
|
|
284
|
+
const interval = Interval.fromDateTimes(fromDate, untilDate);
|
|
285
|
+
const randomDay = this.random.getRandomInt(0, interval.length("days"));
|
|
286
|
+
return fromDate.plus({ days: randomDay }).toFormat(this.dateFormat);
|
|
287
|
+
}
|
|
288
|
+
getGender() {
|
|
289
|
+
return this.random.getRandomInt(0, 1) === 0 ? Gender.male : Gender.female;
|
|
290
|
+
}
|
|
291
|
+
generateItn(birthDate, gender, validItn) {
|
|
292
|
+
if (!validItn) return randomInt(1e10).toString();
|
|
293
|
+
const fromDate = DateTime.fromFormat("31.12.1899", this.dateFormat);
|
|
294
|
+
const firstPart = Interval.fromDateTimes(fromDate, DateTime.fromFormat(birthDate, this.dateFormat)).length("days").toString().padStart(5, "0");
|
|
295
|
+
const secondPart = this.getItnSeqNumber(gender).toString().padStart(4, "0");
|
|
296
|
+
const baseNumber = firstPart.concat(secondPart);
|
|
297
|
+
const [a, b, c, d, e, f, g, h, i] = baseNumber.split("").map((item) => Number.parseInt(item, 10));
|
|
298
|
+
const checksum = -a + 5 * b + 7 * c + 9 * d + 4 * e + 6 * f + 10 * g + 5 * h + 7 * i;
|
|
299
|
+
const controlNumber = (checksum - 11 * Math.floor(checksum / 11)) % 10;
|
|
300
|
+
return baseNumber.concat(controlNumber.toString());
|
|
301
|
+
}
|
|
302
|
+
getUserData(tokenData = {}, validItn = false) {
|
|
303
|
+
const birthDate = tokenData.birthDay || this.getBirthDate();
|
|
304
|
+
const gender = tokenData.gender || this.getGender();
|
|
305
|
+
return {
|
|
306
|
+
itn: this.generateItn(birthDate, gender, validItn),
|
|
307
|
+
gender,
|
|
308
|
+
fName: "Надія",
|
|
309
|
+
lName: "Дія",
|
|
310
|
+
mName: "Володимирівна",
|
|
311
|
+
phoneNumber: "+380999999999",
|
|
312
|
+
email: "test@test.com",
|
|
313
|
+
passport: "12345",
|
|
314
|
+
document: {
|
|
315
|
+
type: AuthDocumentType.ForeignPassport,
|
|
316
|
+
value: "12345"
|
|
317
|
+
},
|
|
318
|
+
birthDay: birthDate,
|
|
319
|
+
addressOfRegistration: "",
|
|
320
|
+
addressOfBirth: "",
|
|
321
|
+
...tokenData
|
|
322
|
+
};
|
|
323
|
+
}
|
|
324
|
+
getItnSeqNumber(gender) {
|
|
325
|
+
const seqNumber = this.random.getRandomInt(1, 9998);
|
|
326
|
+
if (this.isOdd(seqNumber)) return gender === Gender.male ? seqNumber : seqNumber + 1;
|
|
327
|
+
return gender === Gender.male ? seqNumber + 1 : seqNumber;
|
|
328
|
+
}
|
|
329
|
+
isOdd(number) {
|
|
330
|
+
return number % 2 === 1;
|
|
331
|
+
}
|
|
332
|
+
createIdentifier(itn, ops = {}) {
|
|
333
|
+
const { customSalt, prefix = "" } = ops;
|
|
334
|
+
const hmac = createHmac("sha512", customSalt || "salt");
|
|
335
|
+
hmac.update(itn);
|
|
336
|
+
return `${prefix}${hmac.digest("hex")}`;
|
|
337
|
+
}
|
|
338
|
+
};
|
|
339
|
+
//#endregion
|
|
340
|
+
export { SessionGenerator as default };
|