@futdevpro/fsm-dynamo 1.14.20 → 1.14.22
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/build/_modules/crypto/_collections/crypto.util.d.ts.map +1 -1
- package/build/_modules/crypto/_collections/crypto.util.edge.spec.d.ts +2 -0
- package/build/_modules/crypto/_collections/crypto.util.edge.spec.d.ts.map +1 -0
- package/build/_modules/crypto/_collections/crypto.util.edge.spec.js +551 -0
- package/build/_modules/crypto/_collections/crypto.util.edge.spec.js.map +1 -0
- package/build/_modules/crypto/_collections/crypto.util.extra.spec.d.ts +2 -0
- package/build/_modules/crypto/_collections/crypto.util.extra.spec.d.ts.map +1 -0
- package/build/_modules/crypto/_collections/crypto.util.extra.spec.js +555 -0
- package/build/_modules/crypto/_collections/crypto.util.extra.spec.js.map +1 -0
- package/build/_modules/crypto/_collections/crypto.util.js +42 -3
- package/build/_modules/crypto/_collections/crypto.util.js.map +1 -1
- package/build/_modules/crypto/_collections/crypto.util.simple.spec.d.ts +2 -0
- package/build/_modules/crypto/_collections/crypto.util.simple.spec.d.ts.map +1 -0
- package/build/_modules/crypto/_collections/crypto.util.simple.spec.js +429 -0
- package/build/_modules/crypto/_collections/crypto.util.simple.spec.js.map +1 -0
- package/futdevpro-fsm-dynamo-01.14.22.tgz +0 -0
- package/package.json +2 -2
- package/src/_modules/crypto/_collections/crypto.util.edge.spec.ts +606 -0
- package/src/_modules/crypto/_collections/crypto.util.extra.spec.ts +643 -0
- package/src/_modules/crypto/_collections/crypto.util.simple.spec.ts +513 -0
- package/src/_modules/crypto/_collections/crypto.util.ts +93 -48
- package/build/_modules/crypto/_collections/crypto.util.spec.d.ts +0 -2
- package/build/_modules/crypto/_collections/crypto.util.spec.d.ts.map +0 -1
- package/build/_modules/crypto/_collections/crypto.util.spec.js +0 -1180
- package/build/_modules/crypto/_collections/crypto.util.spec.js.map +0 -1
- package/futdevpro-fsm-dynamo-01.14.20.tgz +0 -0
- package/src/_modules/crypto/_collections/crypto.util.spec.ts +0 -1370
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"crypto.util.d.ts","sourceRoot":"","sources":["../../../../src/_modules/crypto/_collections/crypto.util.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"crypto.util.d.ts","sourceRoot":"","sources":["../../../../src/_modules/crypto/_collections/crypto.util.ts"],"names":[],"mappings":"AAUA;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAMD;;;;;;;;;;;;;GAaG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAiB;IACvD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAKpC;IACF,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,mBAAmB,CAEY;IAEvD;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,aAAa;IAuC5B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,mBAAmB;IA8BlC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,mBAAmB;IAmDlC;;;;;;OAMG;IACH,OAAO,CAAC,MAAM,CAAC,UAAU;IAazB;;;;;;OAMG;IACH,OAAO,CAAC,MAAM,CAAC,YAAY;IAa3B;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,uBAAuB;IAOtC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,SAAS;IAOxB;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,aAAa;IAc5B;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,sBAAsB;IAwCrC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,eAAe;IAmD9B;;;;;;;;;;;;;;;;;;;OAmBG;IACH,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,YAAY,GAAG,MAAM;IAsCtE;;;;;;;OAOG;IACH,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,aAAa,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,YAAY,GAAG,CAAC;IAgI/E;;;;;OAKG;IACH,MAAM,CAAC,WAAW,CAAC,MAAM,GAAE,MAAW,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM;IAiBrE;;;;OAIG;IACH,MAAM,CAAC,oBAAoB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO;IAO3D;;;;OAIG;IACH,MAAM,CAAC,oBAAoB,CAAC,aAAa,EAAE,MAAM,GAAG;QAClD,OAAO,EAAE,OAAO,CAAC;QACjB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,UAAU,EAAE,MAAM,CAAC;QACnB,cAAc,EAAE,OAAO,CAAC;QACxB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB;IAgDD;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,uBAAuB;CAkCvC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"crypto.util.edge.spec.d.ts","sourceRoot":"","sources":["../../../../src/_modules/crypto/_collections/crypto.util.edge.spec.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,551 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const crypto_util_1 = require("./crypto.util");
|
|
4
|
+
describe('| DyFM_Crypto edge cases', () => {
|
|
5
|
+
const testKey = 'test-secret-key-123';
|
|
6
|
+
const testData = { id: 1, name: 'test' };
|
|
7
|
+
describe('| edge cases', () => {
|
|
8
|
+
describe('| empty and null values', () => {
|
|
9
|
+
it('| should handle empty objects', () => {
|
|
10
|
+
const emptyObj = {};
|
|
11
|
+
const encrypted = crypto_util_1.DyFM_Crypto.encrypt(emptyObj, testKey);
|
|
12
|
+
const decrypted = crypto_util_1.DyFM_Crypto.decrypt(encrypted, testKey);
|
|
13
|
+
expect(decrypted).toEqual(emptyObj);
|
|
14
|
+
});
|
|
15
|
+
it('| should handle empty arrays', () => {
|
|
16
|
+
const emptyArr = [];
|
|
17
|
+
const encrypted = crypto_util_1.DyFM_Crypto.encrypt(emptyArr, testKey);
|
|
18
|
+
const decrypted = crypto_util_1.DyFM_Crypto.decrypt(encrypted, testKey);
|
|
19
|
+
expect(decrypted).toEqual(emptyArr);
|
|
20
|
+
});
|
|
21
|
+
it('| should handle null values in objects', () => {
|
|
22
|
+
const dataWithNull = {
|
|
23
|
+
id: 1,
|
|
24
|
+
name: null,
|
|
25
|
+
nested: { value: null }
|
|
26
|
+
};
|
|
27
|
+
const encrypted = crypto_util_1.DyFM_Crypto.encrypt(dataWithNull, testKey);
|
|
28
|
+
const decrypted = crypto_util_1.DyFM_Crypto.decrypt(encrypted, testKey);
|
|
29
|
+
expect(decrypted).toEqual(dataWithNull);
|
|
30
|
+
});
|
|
31
|
+
it('| should handle undefined values in objects', () => {
|
|
32
|
+
const dataWithUndefined = {
|
|
33
|
+
id: 1,
|
|
34
|
+
name: undefined,
|
|
35
|
+
nested: { value: undefined }
|
|
36
|
+
};
|
|
37
|
+
const encrypted = crypto_util_1.DyFM_Crypto.encrypt(dataWithUndefined, testKey);
|
|
38
|
+
const decrypted = crypto_util_1.DyFM_Crypto.decrypt(encrypted, testKey);
|
|
39
|
+
expect(decrypted).toEqual({ id: 1, nested: {} });
|
|
40
|
+
});
|
|
41
|
+
});
|
|
42
|
+
describe('| key edge cases', () => {
|
|
43
|
+
it('| should handle very long keys', () => {
|
|
44
|
+
const longKey = 'a'.repeat(1000);
|
|
45
|
+
const encrypted = crypto_util_1.DyFM_Crypto.encrypt(testData, longKey);
|
|
46
|
+
const decrypted = crypto_util_1.DyFM_Crypto.decrypt(encrypted, longKey);
|
|
47
|
+
expect(decrypted).toEqual(testData);
|
|
48
|
+
});
|
|
49
|
+
it('| should handle empty key', () => {
|
|
50
|
+
expect(() => crypto_util_1.DyFM_Crypto.encrypt(testData, '')).toThrow();
|
|
51
|
+
});
|
|
52
|
+
it('| should handle whitespace-only keys', () => {
|
|
53
|
+
expect(() => crypto_util_1.DyFM_Crypto.encrypt(testData, ' ')).toThrow();
|
|
54
|
+
});
|
|
55
|
+
});
|
|
56
|
+
describe('| encrypted data manipulation', () => {
|
|
57
|
+
it('| should detect when encrypted data is truncated', () => {
|
|
58
|
+
const encrypted = crypto_util_1.DyFM_Crypto.encrypt(testData, testKey);
|
|
59
|
+
const truncated = encrypted.slice(0, -10);
|
|
60
|
+
expect(() => crypto_util_1.DyFM_Crypto.decrypt(truncated, testKey)).toThrow();
|
|
61
|
+
});
|
|
62
|
+
it('| should detect when encrypted data is extended', () => {
|
|
63
|
+
const encrypted = crypto_util_1.DyFM_Crypto.encrypt(testData, testKey);
|
|
64
|
+
const extended = encrypted + 'A'.repeat(10);
|
|
65
|
+
expect(() => crypto_util_1.DyFM_Crypto.decrypt(extended, testKey)).toThrow();
|
|
66
|
+
});
|
|
67
|
+
it('| should detect when encrypted data is modified in the middle', () => {
|
|
68
|
+
const encrypted = crypto_util_1.DyFM_Crypto.encrypt(testData, testKey);
|
|
69
|
+
const midPoint = Math.floor(encrypted.length / 2);
|
|
70
|
+
const modified = encrypted.slice(0, midPoint) + 'X' + encrypted.slice(midPoint + 1);
|
|
71
|
+
expect(() => crypto_util_1.DyFM_Crypto.decrypt(modified, testKey)).toThrow();
|
|
72
|
+
});
|
|
73
|
+
});
|
|
74
|
+
describe('| JSON handling edge cases', () => {
|
|
75
|
+
it('| should handle double-stringified JSON data correctly', () => {
|
|
76
|
+
const testData = {
|
|
77
|
+
username: 'Itharen',
|
|
78
|
+
password: 'asdasd',
|
|
79
|
+
roles: [],
|
|
80
|
+
permissions: [],
|
|
81
|
+
activeSubscriptions: [],
|
|
82
|
+
clientUserIds: {},
|
|
83
|
+
oauth2Data: {}
|
|
84
|
+
};
|
|
85
|
+
// Simulate double stringification
|
|
86
|
+
const doubleStringified = JSON.stringify(JSON.stringify(testData));
|
|
87
|
+
const encrypted = crypto_util_1.DyFM_Crypto.encrypt(doubleStringified, testKey);
|
|
88
|
+
const decrypted = crypto_util_1.DyFM_Crypto.decrypt(encrypted, testKey);
|
|
89
|
+
// The crypto utility should automatically handle double-stringified JSON
|
|
90
|
+
// and return the original object directly
|
|
91
|
+
expect(decrypted).toEqual(testData);
|
|
92
|
+
});
|
|
93
|
+
it('| should handle character-by-character JSON data correctly', () => {
|
|
94
|
+
// Create a character-by-character object like in the example
|
|
95
|
+
const charByCharData = {
|
|
96
|
+
'0': '{',
|
|
97
|
+
'1': '"',
|
|
98
|
+
'2': '_',
|
|
99
|
+
'3': '_',
|
|
100
|
+
'4': 'c',
|
|
101
|
+
'5': 'r',
|
|
102
|
+
'6': 'e',
|
|
103
|
+
'7': 'a',
|
|
104
|
+
'8': 't',
|
|
105
|
+
'9': 'e',
|
|
106
|
+
'10': 'd',
|
|
107
|
+
'11': '"',
|
|
108
|
+
'12': ':',
|
|
109
|
+
'13': '"',
|
|
110
|
+
'14': '2',
|
|
111
|
+
'15': '0',
|
|
112
|
+
'16': '2',
|
|
113
|
+
'17': '5',
|
|
114
|
+
'18': '-',
|
|
115
|
+
'19': '0',
|
|
116
|
+
'20': '5',
|
|
117
|
+
'21': '-',
|
|
118
|
+
'22': '1',
|
|
119
|
+
'23': '3',
|
|
120
|
+
'24': 'T',
|
|
121
|
+
'25': '1',
|
|
122
|
+
'26': '0',
|
|
123
|
+
'27': ':',
|
|
124
|
+
'28': '4',
|
|
125
|
+
'29': '0',
|
|
126
|
+
'30': ':',
|
|
127
|
+
'31': '4',
|
|
128
|
+
'32': '4',
|
|
129
|
+
'33': '.',
|
|
130
|
+
'34': '7',
|
|
131
|
+
'35': '6',
|
|
132
|
+
'36': '0',
|
|
133
|
+
'37': 'Z',
|
|
134
|
+
'38': '"',
|
|
135
|
+
'39': ',',
|
|
136
|
+
'40': '"',
|
|
137
|
+
'41': '_',
|
|
138
|
+
'42': '_',
|
|
139
|
+
'43': 'l',
|
|
140
|
+
'44': 'a',
|
|
141
|
+
'45': 's',
|
|
142
|
+
'46': 't',
|
|
143
|
+
'47': 'M',
|
|
144
|
+
'48': 'o',
|
|
145
|
+
'49': 'd',
|
|
146
|
+
'50': 'i',
|
|
147
|
+
'51': 'f',
|
|
148
|
+
'52': 'i',
|
|
149
|
+
'53': 'e',
|
|
150
|
+
'54': 'd',
|
|
151
|
+
'55': '"',
|
|
152
|
+
'56': ':',
|
|
153
|
+
'57': '"',
|
|
154
|
+
'58': '2',
|
|
155
|
+
'59': '0',
|
|
156
|
+
'60': '2',
|
|
157
|
+
'61': '5',
|
|
158
|
+
'62': '-',
|
|
159
|
+
'63': '0',
|
|
160
|
+
'64': '5',
|
|
161
|
+
'65': '-',
|
|
162
|
+
'66': '1',
|
|
163
|
+
'67': '3',
|
|
164
|
+
'68': 'T',
|
|
165
|
+
'69': '1',
|
|
166
|
+
'70': '0',
|
|
167
|
+
'71': ':',
|
|
168
|
+
'72': '4',
|
|
169
|
+
'73': '0',
|
|
170
|
+
'74': ':',
|
|
171
|
+
'75': '4',
|
|
172
|
+
'76': '4',
|
|
173
|
+
'77': '.',
|
|
174
|
+
'78': '7',
|
|
175
|
+
'79': '6',
|
|
176
|
+
'80': '0',
|
|
177
|
+
'81': 'Z',
|
|
178
|
+
'82': '"',
|
|
179
|
+
'83': ',',
|
|
180
|
+
'84': '"',
|
|
181
|
+
'85': '_',
|
|
182
|
+
'86': '_',
|
|
183
|
+
'87': 'v',
|
|
184
|
+
'88': '"',
|
|
185
|
+
'89': ':',
|
|
186
|
+
'90': '0',
|
|
187
|
+
'91': ',',
|
|
188
|
+
'92': '"',
|
|
189
|
+
'93': 'u',
|
|
190
|
+
'94': 's',
|
|
191
|
+
'95': 'e',
|
|
192
|
+
'96': 'r',
|
|
193
|
+
'97': 'n',
|
|
194
|
+
'98': 'a',
|
|
195
|
+
'99': 'm',
|
|
196
|
+
'100': 'e',
|
|
197
|
+
'101': '"',
|
|
198
|
+
'102': ':',
|
|
199
|
+
'103': '"',
|
|
200
|
+
'104': 'I',
|
|
201
|
+
'105': 't',
|
|
202
|
+
'106': 'h',
|
|
203
|
+
'107': 'a',
|
|
204
|
+
'108': 'r',
|
|
205
|
+
'109': 'e',
|
|
206
|
+
'110': 'n',
|
|
207
|
+
'111': '"',
|
|
208
|
+
'112': ',',
|
|
209
|
+
'113': '"',
|
|
210
|
+
'114': 'p',
|
|
211
|
+
'115': 'r',
|
|
212
|
+
'116': 'e',
|
|
213
|
+
'117': 'v',
|
|
214
|
+
'118': 'i',
|
|
215
|
+
'119': 'o',
|
|
216
|
+
'120': 'u',
|
|
217
|
+
'121': 's',
|
|
218
|
+
'122': 'E',
|
|
219
|
+
'123': 'm',
|
|
220
|
+
'124': 'a',
|
|
221
|
+
'125': 'i',
|
|
222
|
+
'126': 'l',
|
|
223
|
+
'127': 's',
|
|
224
|
+
'128': '"',
|
|
225
|
+
'129': ':',
|
|
226
|
+
'130': '[',
|
|
227
|
+
'131': ']',
|
|
228
|
+
'132': ',',
|
|
229
|
+
'133': '"',
|
|
230
|
+
'134': 'p',
|
|
231
|
+
'135': 'a',
|
|
232
|
+
'136': 's',
|
|
233
|
+
'137': 's',
|
|
234
|
+
'138': 'w',
|
|
235
|
+
'139': 'o',
|
|
236
|
+
'140': 'r',
|
|
237
|
+
'141': 'd',
|
|
238
|
+
'142': '"',
|
|
239
|
+
'143': ':',
|
|
240
|
+
'144': '"',
|
|
241
|
+
'145': 'a',
|
|
242
|
+
'146': 's',
|
|
243
|
+
'147': 'd',
|
|
244
|
+
'148': 'a',
|
|
245
|
+
'149': 's',
|
|
246
|
+
'150': 'd',
|
|
247
|
+
'151': '"',
|
|
248
|
+
'152': ',',
|
|
249
|
+
'153': '"',
|
|
250
|
+
'154': 'r',
|
|
251
|
+
'155': 'o',
|
|
252
|
+
'156': 'l',
|
|
253
|
+
'157': 'e',
|
|
254
|
+
'158': 's',
|
|
255
|
+
'159': '"',
|
|
256
|
+
'160': ':',
|
|
257
|
+
'161': '[',
|
|
258
|
+
'162': ']',
|
|
259
|
+
'163': ',',
|
|
260
|
+
'164': '"',
|
|
261
|
+
'165': 'p',
|
|
262
|
+
'166': 'e',
|
|
263
|
+
'167': 'r',
|
|
264
|
+
'168': 'm',
|
|
265
|
+
'169': 'i',
|
|
266
|
+
'170': 's',
|
|
267
|
+
'171': 's',
|
|
268
|
+
'172': 'i',
|
|
269
|
+
'173': 'o',
|
|
270
|
+
'174': 'n',
|
|
271
|
+
'175': 's',
|
|
272
|
+
'176': '"',
|
|
273
|
+
'177': ':',
|
|
274
|
+
'178': '[',
|
|
275
|
+
'179': ']',
|
|
276
|
+
'180': ',',
|
|
277
|
+
'181': '"',
|
|
278
|
+
'182': 'a',
|
|
279
|
+
'183': 'c',
|
|
280
|
+
'184': 't',
|
|
281
|
+
'185': 'i',
|
|
282
|
+
'186': 'v',
|
|
283
|
+
'187': 'e',
|
|
284
|
+
'188': 'S',
|
|
285
|
+
'189': 'u',
|
|
286
|
+
'190': 'b',
|
|
287
|
+
'191': 's',
|
|
288
|
+
'192': 'c',
|
|
289
|
+
'193': 'r',
|
|
290
|
+
'194': 'i',
|
|
291
|
+
'195': 'p',
|
|
292
|
+
'196': 't',
|
|
293
|
+
'197': 'i',
|
|
294
|
+
'198': 'o',
|
|
295
|
+
'199': 'n',
|
|
296
|
+
'200': 's',
|
|
297
|
+
'201': '"',
|
|
298
|
+
'202': ':',
|
|
299
|
+
'203': '[',
|
|
300
|
+
'204': ']',
|
|
301
|
+
'205': ',',
|
|
302
|
+
'206': '"',
|
|
303
|
+
'207': 'c',
|
|
304
|
+
'208': 'l',
|
|
305
|
+
'209': 'i',
|
|
306
|
+
'210': 'e',
|
|
307
|
+
'211': 'n',
|
|
308
|
+
'212': 't',
|
|
309
|
+
'213': 'U',
|
|
310
|
+
'214': 's',
|
|
311
|
+
'215': 'e',
|
|
312
|
+
'216': 'r',
|
|
313
|
+
'217': 'I',
|
|
314
|
+
'218': 'd',
|
|
315
|
+
'219': 's',
|
|
316
|
+
'220': '"',
|
|
317
|
+
'221': ':',
|
|
318
|
+
'222': '{',
|
|
319
|
+
'223': '}',
|
|
320
|
+
'224': ',',
|
|
321
|
+
'225': '"',
|
|
322
|
+
'226': 'o',
|
|
323
|
+
'227': 'a',
|
|
324
|
+
'228': 'u',
|
|
325
|
+
'229': 't',
|
|
326
|
+
'230': 'h',
|
|
327
|
+
'231': '2',
|
|
328
|
+
'232': 'D',
|
|
329
|
+
'233': 'a',
|
|
330
|
+
'234': 't',
|
|
331
|
+
'235': 'a',
|
|
332
|
+
'236': '"',
|
|
333
|
+
'237': ':',
|
|
334
|
+
'238': '{',
|
|
335
|
+
'239': '}',
|
|
336
|
+
'240': '}'
|
|
337
|
+
};
|
|
338
|
+
const encrypted = crypto_util_1.DyFM_Crypto.encrypt(charByCharData, testKey);
|
|
339
|
+
const decrypted = crypto_util_1.DyFM_Crypto.decrypt(encrypted, testKey);
|
|
340
|
+
// Should be able to parse the decrypted data back to the original object
|
|
341
|
+
expect(decrypted).toEqual(charByCharData);
|
|
342
|
+
});
|
|
343
|
+
});
|
|
344
|
+
describe('| cross-environment consistency', () => {
|
|
345
|
+
it('| should produce same encrypted output for same input across different environments', () => {
|
|
346
|
+
const testData = {
|
|
347
|
+
id: 1,
|
|
348
|
+
name: 'test',
|
|
349
|
+
timestamp: '2024-03-20T10:00:00Z'
|
|
350
|
+
};
|
|
351
|
+
const key = 'test-secret-key-123';
|
|
352
|
+
// Simulate different environments by creating new instances
|
|
353
|
+
const encrypted1 = crypto_util_1.DyFM_Crypto.encrypt(testData, key);
|
|
354
|
+
const encrypted2 = crypto_util_1.DyFM_Crypto.encrypt(testData, key);
|
|
355
|
+
expect(encrypted1).toBe(encrypted2);
|
|
356
|
+
expect(crypto_util_1.DyFM_Crypto.decrypt(encrypted1, key)).toEqual(testData);
|
|
357
|
+
expect(crypto_util_1.DyFM_Crypto.decrypt(encrypted2, key)).toEqual(testData);
|
|
358
|
+
});
|
|
359
|
+
it('| should maintain encryption consistency with different data types', () => {
|
|
360
|
+
const testCases = [
|
|
361
|
+
{ data: { id: 1 }, key: 'key1' },
|
|
362
|
+
{ data: 'string data', key: 'key2' },
|
|
363
|
+
{ data: [1, 2, 3], key: 'key3' },
|
|
364
|
+
{ data: { nested: { value: true } }, key: 'key4' }
|
|
365
|
+
];
|
|
366
|
+
testCases.forEach(({ data, key }) => {
|
|
367
|
+
const encrypted1 = crypto_util_1.DyFM_Crypto.encrypt(data, key);
|
|
368
|
+
const encrypted2 = crypto_util_1.DyFM_Crypto.encrypt(data, key);
|
|
369
|
+
expect(encrypted1).toBe(encrypted2);
|
|
370
|
+
});
|
|
371
|
+
});
|
|
372
|
+
});
|
|
373
|
+
describe('| database persistence', () => {
|
|
374
|
+
it('| should successfully encrypt and decrypt data after database storage simulation', () => {
|
|
375
|
+
const originalData = {
|
|
376
|
+
id: 1,
|
|
377
|
+
name: 'test user',
|
|
378
|
+
email: 'test@example.com',
|
|
379
|
+
settings: {
|
|
380
|
+
theme: 'dark',
|
|
381
|
+
notifications: true
|
|
382
|
+
}
|
|
383
|
+
};
|
|
384
|
+
const key = 'db-storage-key';
|
|
385
|
+
// Simulate database storage and retrieval
|
|
386
|
+
const encrypted = crypto_util_1.DyFM_Crypto.encrypt(originalData, key);
|
|
387
|
+
const storedData = encrypted; // Simulating database storage
|
|
388
|
+
const retrievedData = storedData; // Simulating database retrieval
|
|
389
|
+
const decrypted = crypto_util_1.DyFM_Crypto.decrypt(retrievedData, key);
|
|
390
|
+
expect(decrypted).toEqual(originalData);
|
|
391
|
+
});
|
|
392
|
+
it('| should handle multiple encryption/decryption cycles for database operations', () => {
|
|
393
|
+
const userData = {
|
|
394
|
+
id: 1,
|
|
395
|
+
name: 'test user',
|
|
396
|
+
lastLogin: '2024-01-01T10:00:00.000Z',
|
|
397
|
+
preferences: {
|
|
398
|
+
language: 'en',
|
|
399
|
+
timezone: 'UTC'
|
|
400
|
+
}
|
|
401
|
+
};
|
|
402
|
+
const key = 'persistent-key';
|
|
403
|
+
// Simulate multiple database operations
|
|
404
|
+
const encrypted1 = crypto_util_1.DyFM_Crypto.encrypt(userData, key);
|
|
405
|
+
const decrypted1 = crypto_util_1.DyFM_Crypto.decrypt(encrypted1, key);
|
|
406
|
+
// Simulate data update with a different timestamp
|
|
407
|
+
const updatedData = {
|
|
408
|
+
...decrypted1,
|
|
409
|
+
lastLogin: '2024-01-02T15:30:00.000Z'
|
|
410
|
+
};
|
|
411
|
+
const encrypted2 = crypto_util_1.DyFM_Crypto.encrypt(updatedData, key);
|
|
412
|
+
const decrypted2 = crypto_util_1.DyFM_Crypto.decrypt(encrypted2, key);
|
|
413
|
+
expect(decrypted1).toEqual(userData);
|
|
414
|
+
expect(decrypted2).toEqual(updatedData);
|
|
415
|
+
expect(decrypted2.lastLogin).not.toBe(userData.lastLogin);
|
|
416
|
+
});
|
|
417
|
+
it('| should maintain data integrity through multiple database operations', () => {
|
|
418
|
+
const sensitiveData = {
|
|
419
|
+
id: 1,
|
|
420
|
+
password: 'hashed-password-123',
|
|
421
|
+
securityQuestions: [
|
|
422
|
+
{ question: 'What is your pet name?', answer: 'Fluffy' },
|
|
423
|
+
{ question: 'Where were you born?', answer: 'New York' }
|
|
424
|
+
]
|
|
425
|
+
};
|
|
426
|
+
const key = 'sensitive-data-key';
|
|
427
|
+
// Simulate multiple database operations with the same data
|
|
428
|
+
const encrypted1 = crypto_util_1.DyFM_Crypto.encrypt(sensitiveData, key);
|
|
429
|
+
const decrypted1 = crypto_util_1.DyFM_Crypto.decrypt(encrypted1, key);
|
|
430
|
+
const encrypted2 = crypto_util_1.DyFM_Crypto.encrypt(decrypted1, key);
|
|
431
|
+
const decrypted2 = crypto_util_1.DyFM_Crypto.decrypt(encrypted2, key);
|
|
432
|
+
expect(decrypted1).toEqual(sensitiveData);
|
|
433
|
+
expect(decrypted2).toEqual(sensitiveData);
|
|
434
|
+
expect(encrypted1).toBe(encrypted2); // Different encryption instances
|
|
435
|
+
});
|
|
436
|
+
});
|
|
437
|
+
describe('| special characters', () => {
|
|
438
|
+
it('| should handle Unicode characters', () => {
|
|
439
|
+
const unicodeData = {
|
|
440
|
+
text: 'Hello 世界! 🌍',
|
|
441
|
+
emoji: '👋',
|
|
442
|
+
special: '!!!@@@###$$$%%%^^^&&&***((()))___+++---===[[[]]]{{{}}}|||;;;:::,,,...<<<>>>' +
|
|
443
|
+
'ĐĐĐđđđßßߤ¤¤×××÷÷÷¨¨¨¨~~~ˇˇˇ^^^˘˘˘°°°˛˛˛```˙˙˙´´´˝˝˝˝¸¸¸§§§' +
|
|
444
|
+
'???ééééáááűűűúúúőőőóóóüüüöööíííÉÉÉÁÁÁŰŰŰÚÚÚŐŐŐÓÓÓÜÖÖÖÍÍÍ'
|
|
445
|
+
};
|
|
446
|
+
const encrypted = crypto_util_1.DyFM_Crypto.encrypt(unicodeData, testKey);
|
|
447
|
+
const decrypted = crypto_util_1.DyFM_Crypto.decrypt(encrypted, testKey);
|
|
448
|
+
expect(decrypted).toEqual(unicodeData);
|
|
449
|
+
});
|
|
450
|
+
it('| should handle special characters in object keys', () => {
|
|
451
|
+
const specialKeyData = {
|
|
452
|
+
'key-with-spaces': 'value',
|
|
453
|
+
'key.with.dots': 'value',
|
|
454
|
+
'key-with-special-chars!@#': 'value',
|
|
455
|
+
'key-with-unicode-世界': 'value'
|
|
456
|
+
};
|
|
457
|
+
const encrypted = crypto_util_1.DyFM_Crypto.encrypt(specialKeyData, testKey);
|
|
458
|
+
const decrypted = crypto_util_1.DyFM_Crypto.decrypt(encrypted, testKey);
|
|
459
|
+
expect(decrypted).toEqual(specialKeyData);
|
|
460
|
+
});
|
|
461
|
+
it('| should handle special characters in nested objects', () => {
|
|
462
|
+
const nestedData = {
|
|
463
|
+
level1: {
|
|
464
|
+
'special-key!@#': {
|
|
465
|
+
'nested-key-世界': 'value with special chars!@#'
|
|
466
|
+
}
|
|
467
|
+
}
|
|
468
|
+
};
|
|
469
|
+
const encrypted = crypto_util_1.DyFM_Crypto.encrypt(nestedData, testKey);
|
|
470
|
+
const decrypted = crypto_util_1.DyFM_Crypto.decrypt(encrypted, testKey);
|
|
471
|
+
expect(decrypted).toEqual(nestedData);
|
|
472
|
+
});
|
|
473
|
+
it('| should handle special characters in arrays', () => {
|
|
474
|
+
const arrayData = [
|
|
475
|
+
'Hello 世界!',
|
|
476
|
+
{ 'special-key': 'value with !@#' },
|
|
477
|
+
['nested', 'array', 'with', 'special', 'chars!@#']
|
|
478
|
+
];
|
|
479
|
+
const encrypted = crypto_util_1.DyFM_Crypto.encrypt(arrayData, testKey);
|
|
480
|
+
const decrypted = crypto_util_1.DyFM_Crypto.decrypt(encrypted, testKey);
|
|
481
|
+
expect(decrypted).toEqual(arrayData);
|
|
482
|
+
});
|
|
483
|
+
});
|
|
484
|
+
describe('| base64 padding and parsing edge cases', () => {
|
|
485
|
+
it('| should handle encrypted data missing 1 padding character', () => {
|
|
486
|
+
const encrypted = crypto_util_1.DyFM_Crypto.encrypt(testData, testKey);
|
|
487
|
+
// Remove last character (which might be padding)
|
|
488
|
+
const withoutPadding = encrypted.slice(0, -1);
|
|
489
|
+
expect(() => crypto_util_1.DyFM_Crypto.decrypt(withoutPadding, testKey)).toThrow();
|
|
490
|
+
});
|
|
491
|
+
it('| should handle encrypted data missing 2 padding characters', () => {
|
|
492
|
+
const encrypted = crypto_util_1.DyFM_Crypto.encrypt(testData, testKey);
|
|
493
|
+
// Remove last 2 characters
|
|
494
|
+
const withoutPadding = encrypted.slice(0, -2);
|
|
495
|
+
expect(() => crypto_util_1.DyFM_Crypto.decrypt(withoutPadding, testKey)).toThrow();
|
|
496
|
+
});
|
|
497
|
+
it('| should handle encrypted data missing 3 padding characters', () => {
|
|
498
|
+
const encrypted = crypto_util_1.DyFM_Crypto.encrypt(testData, testKey);
|
|
499
|
+
// Remove last 3 characters
|
|
500
|
+
const withoutPadding = encrypted.slice(0, -3);
|
|
501
|
+
expect(() => crypto_util_1.DyFM_Crypto.decrypt(withoutPadding, testKey)).toThrow();
|
|
502
|
+
});
|
|
503
|
+
it('| should detect base64 strings that are too short to be valid (less than 48 bytes)', () => {
|
|
504
|
+
// Create a minimal base64 string that parses to less than 48 bytes
|
|
505
|
+
// 18 bytes = 24 base64 characters (18 * 4/3 = 24)
|
|
506
|
+
const shortBase64 = 'ABCDEFGHIJKLMNOPQRSTUVW'; // 24 chars = 18 bytes when parsed
|
|
507
|
+
expect(() => crypto_util_1.DyFM_Crypto.decrypt(shortBase64, testKey)).toThrow();
|
|
508
|
+
});
|
|
509
|
+
it('| should handle base64 strings with incorrect padding', () => {
|
|
510
|
+
const encrypted = crypto_util_1.DyFM_Crypto.encrypt(testData, testKey);
|
|
511
|
+
// Add incorrect padding characters
|
|
512
|
+
const withIncorrectPadding = encrypted + '====';
|
|
513
|
+
expect(() => crypto_util_1.DyFM_Crypto.decrypt(withIncorrectPadding, testKey)).toThrow();
|
|
514
|
+
});
|
|
515
|
+
it('| should handle URL-safe base64 strings ending with dash', () => {
|
|
516
|
+
// Create a base64 string ending with '-' (which becomes '+' in regular base64)
|
|
517
|
+
const encrypted = crypto_util_1.DyFM_Crypto.encrypt(testData, testKey);
|
|
518
|
+
// Replace last character with dash if it's not already
|
|
519
|
+
const withDash = encrypted.slice(0, -1) + '-';
|
|
520
|
+
expect(() => crypto_util_1.DyFM_Crypto.decrypt(withDash, testKey)).toThrow();
|
|
521
|
+
});
|
|
522
|
+
it('| should handle URL-safe base64 strings ending with underscore', () => {
|
|
523
|
+
// Create a base64 string ending with '_' (which becomes '/' in regular base64)
|
|
524
|
+
const encrypted = crypto_util_1.DyFM_Crypto.encrypt(testData, testKey);
|
|
525
|
+
// Replace last character with underscore if it's not already
|
|
526
|
+
const withUnderscore = encrypted.slice(0, -1) + '_';
|
|
527
|
+
expect(() => crypto_util_1.DyFM_Crypto.decrypt(withUnderscore, testKey)).toThrow();
|
|
528
|
+
});
|
|
529
|
+
it('| should handle URL-safe base64 strings with no padding characters', () => {
|
|
530
|
+
const encrypted = crypto_util_1.DyFM_Crypto.encrypt(testData, testKey);
|
|
531
|
+
// Encrypted data should already have no padding (removed in encrypt method)
|
|
532
|
+
// This test verifies that decryption works without padding
|
|
533
|
+
expect(() => crypto_util_1.DyFM_Crypto.decrypt(encrypted, testKey)).not.toThrow();
|
|
534
|
+
const decrypted = crypto_util_1.DyFM_Crypto.decrypt(encrypted, testKey);
|
|
535
|
+
expect(decrypted).toEqual(testData);
|
|
536
|
+
});
|
|
537
|
+
it('| should handle very short base64 strings that parse to exactly 18 bytes', () => {
|
|
538
|
+
// Create a base64 string that parses to exactly 18 bytes
|
|
539
|
+
// 18 bytes = 24 base64 characters
|
|
540
|
+
const exactly18Bytes = 'ABCDEFGHIJKLMNOPQRSTUVWX'; // 24 chars
|
|
541
|
+
expect(() => crypto_util_1.DyFM_Crypto.decrypt(exactly18Bytes, testKey)).toThrow();
|
|
542
|
+
});
|
|
543
|
+
it('| should handle base64 strings that are valid format but too short after parsing', () => {
|
|
544
|
+
// Create a valid URL-safe base64 string that's too short
|
|
545
|
+
const validButShort = 'ABCDEFGHIJKLMNOPQRSTUVWXY'; // 25 chars, valid format
|
|
546
|
+
expect(() => crypto_util_1.DyFM_Crypto.decrypt(validButShort, testKey)).toThrow();
|
|
547
|
+
});
|
|
548
|
+
});
|
|
549
|
+
});
|
|
550
|
+
});
|
|
551
|
+
//# sourceMappingURL=crypto.util.edge.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"crypto.util.edge.spec.js","sourceRoot":"","sources":["../../../../src/_modules/crypto/_collections/crypto.util.edge.spec.ts"],"names":[],"mappings":"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T,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,GAAG;oBACT,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;oBACV,KAAK,EA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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"crypto.util.extra.spec.d.ts","sourceRoot":"","sources":["../../../../src/_modules/crypto/_collections/crypto.util.extra.spec.ts"],"names":[],"mappings":""}
|