@kidemy/lib 1.0.6 → 1.0.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.
@@ -1,499 +0,0 @@
1
- import { CreateAccountUserDtoSchema, CreateAccountUserResponseSchema, LoginDtoSchema, LoginResponseSchema, } from '../model/auth.dto';
2
- import { ActivationStatus, UserRole } from '../model/model';
3
- describe('AuthDto Schemas', () => {
4
- describe('CreateAccountUserDtoSchema', () => {
5
- const validCreateAccountUserDto = {
6
- account: {
7
- name: 'Test Account',
8
- },
9
- user: {
10
- firstName: 'John',
11
- lastName: 'Doe',
12
- email: 'john.doe@example.com',
13
- username: 'johndoe',
14
- password: 'password123',
15
- birthdate: '1990-01-01',
16
- },
17
- };
18
- it('should validate a valid create account user DTO', () => {
19
- const result = CreateAccountUserDtoSchema.safeParse(validCreateAccountUserDto);
20
- expect(result.success).toBe(true);
21
- if (result.success) {
22
- expect(result.data).toEqual({
23
- ...validCreateAccountUserDto,
24
- user: {
25
- ...validCreateAccountUserDto.user,
26
- birthdate: new Date('1990-01-01'),
27
- },
28
- });
29
- }
30
- });
31
- it('should validate create account user DTO without birthdate', () => {
32
- const dtoWithoutBirthdate = {
33
- account: {
34
- name: 'Test Account',
35
- },
36
- user: {
37
- firstName: 'John',
38
- lastName: 'Doe',
39
- email: 'john.doe@example.com',
40
- username: 'johndoe',
41
- password: 'password123',
42
- },
43
- };
44
- const result = CreateAccountUserDtoSchema.safeParse(dtoWithoutBirthdate);
45
- expect(result.success).toBe(true);
46
- if (result.success) {
47
- expect(result.data.user.birthdate).toBeUndefined();
48
- }
49
- });
50
- it('should reject empty account name', () => {
51
- const invalidDto = {
52
- ...validCreateAccountUserDto,
53
- account: {
54
- name: '',
55
- },
56
- };
57
- const result = CreateAccountUserDtoSchema.safeParse(invalidDto);
58
- expect(result.success).toBe(false);
59
- if (!result.success) {
60
- expect(result.error.issues[0].path).toEqual(['account', 'name']);
61
- expect(result.error.issues[0].message).toBe('Account name is required');
62
- }
63
- });
64
- it('should reject account name longer than 255 characters', () => {
65
- const invalidDto = {
66
- ...validCreateAccountUserDto,
67
- account: {
68
- name: 'A'.repeat(256),
69
- },
70
- };
71
- const result = CreateAccountUserDtoSchema.safeParse(invalidDto);
72
- expect(result.success).toBe(false);
73
- if (!result.success) {
74
- expect(result.error.issues[0].path).toEqual(['account', 'name']);
75
- expect(result.error.issues[0].message).toBe('Account name must be less than 255 characters');
76
- }
77
- });
78
- it('should accept account name with exactly 255 characters', () => {
79
- const validDto = {
80
- ...validCreateAccountUserDto,
81
- account: {
82
- name: 'A'.repeat(255),
83
- },
84
- };
85
- const result = CreateAccountUserDtoSchema.safeParse(validDto);
86
- expect(result.success).toBe(true);
87
- if (result.success) {
88
- expect(result.data.account.name).toBe('A'.repeat(255));
89
- }
90
- });
91
- it('should reject empty firstName', () => {
92
- const invalidDto = {
93
- ...validCreateAccountUserDto,
94
- user: {
95
- ...validCreateAccountUserDto.user,
96
- firstName: '',
97
- },
98
- };
99
- const result = CreateAccountUserDtoSchema.safeParse(invalidDto);
100
- expect(result.success).toBe(false);
101
- if (!result.success) {
102
- expect(result.error.issues[0].path).toEqual(['user', 'firstName']);
103
- expect(result.error.issues[0].message).toBe('First name is required');
104
- }
105
- });
106
- it('should reject firstName longer than 255 characters', () => {
107
- const invalidDto = {
108
- ...validCreateAccountUserDto,
109
- user: {
110
- ...validCreateAccountUserDto.user,
111
- firstName: 'A'.repeat(256),
112
- },
113
- };
114
- const result = CreateAccountUserDtoSchema.safeParse(invalidDto);
115
- expect(result.success).toBe(false);
116
- if (!result.success) {
117
- expect(result.error.issues[0].path).toEqual(['user', 'firstName']);
118
- expect(result.error.issues[0].message).toBe('First name must be less than 255 characters');
119
- }
120
- });
121
- it('should reject empty lastName', () => {
122
- const invalidDto = {
123
- ...validCreateAccountUserDto,
124
- user: {
125
- ...validCreateAccountUserDto.user,
126
- lastName: '',
127
- },
128
- };
129
- const result = CreateAccountUserDtoSchema.safeParse(invalidDto);
130
- expect(result.success).toBe(false);
131
- if (!result.success) {
132
- expect(result.error.issues[0].path).toEqual(['user', 'lastName']);
133
- expect(result.error.issues[0].message).toBe('Last name is required');
134
- }
135
- });
136
- it('should reject lastName longer than 255 characters', () => {
137
- const invalidDto = {
138
- ...validCreateAccountUserDto,
139
- user: {
140
- ...validCreateAccountUserDto.user,
141
- lastName: 'A'.repeat(256),
142
- },
143
- };
144
- const result = CreateAccountUserDtoSchema.safeParse(invalidDto);
145
- expect(result.success).toBe(false);
146
- if (!result.success) {
147
- expect(result.error.issues[0].path).toEqual(['user', 'lastName']);
148
- expect(result.error.issues[0].message).toBe('Last name must be less than 255 characters');
149
- }
150
- });
151
- it('should reject invalid email format', () => {
152
- const invalidDto = {
153
- ...validCreateAccountUserDto,
154
- user: {
155
- ...validCreateAccountUserDto.user,
156
- email: 'invalid-email',
157
- },
158
- };
159
- const result = CreateAccountUserDtoSchema.safeParse(invalidDto);
160
- expect(result.success).toBe(false);
161
- if (!result.success) {
162
- expect(result.error.issues[0].path).toEqual(['user', 'email']);
163
- expect(result.error.issues[0].message).toBe('Invalid email format');
164
- }
165
- });
166
- it('should reject email longer than 255 characters', () => {
167
- const invalidDto = {
168
- ...validCreateAccountUserDto,
169
- user: {
170
- ...validCreateAccountUserDto.user,
171
- email: 'a'.repeat(250) + '@example.com',
172
- },
173
- };
174
- const result = CreateAccountUserDtoSchema.safeParse(invalidDto);
175
- expect(result.success).toBe(false);
176
- if (!result.success) {
177
- expect(result.error.issues[0].path).toEqual(['user', 'email']);
178
- expect(result.error.issues[0].message).toBe('Email must be less than 255 characters');
179
- }
180
- });
181
- it('should reject password shorter than 6 characters', () => {
182
- const invalidDto = {
183
- ...validCreateAccountUserDto,
184
- user: {
185
- ...validCreateAccountUserDto.user,
186
- password: '12345',
187
- },
188
- };
189
- const result = CreateAccountUserDtoSchema.safeParse(invalidDto);
190
- expect(result.success).toBe(false);
191
- if (!result.success) {
192
- expect(result.error.issues[0].path).toEqual(['user', 'password']);
193
- expect(result.error.issues[0].message).toBe('Password must be at least 6 characters');
194
- }
195
- });
196
- it('should reject password longer than 255 characters', () => {
197
- const invalidDto = {
198
- ...validCreateAccountUserDto,
199
- user: {
200
- ...validCreateAccountUserDto.user,
201
- password: 'A'.repeat(256),
202
- },
203
- };
204
- const result = CreateAccountUserDtoSchema.safeParse(invalidDto);
205
- expect(result.success).toBe(false);
206
- if (!result.success) {
207
- expect(result.error.issues[0].path).toEqual(['user', 'password']);
208
- expect(result.error.issues[0].message).toBe('Password must be less than 255 characters');
209
- }
210
- });
211
- it('should accept password with exactly 8 characters', () => {
212
- const validDto = {
213
- ...validCreateAccountUserDto,
214
- user: {
215
- ...validCreateAccountUserDto.user,
216
- password: '12345678',
217
- },
218
- };
219
- const result = CreateAccountUserDtoSchema.safeParse(validDto);
220
- expect(result.success).toBe(true);
221
- if (result.success) {
222
- expect(result.data.user.password).toBe('12345678');
223
- }
224
- });
225
- it('should accept password with exactly 255 characters', () => {
226
- const validDto = {
227
- ...validCreateAccountUserDto,
228
- user: {
229
- ...validCreateAccountUserDto.user,
230
- password: 'A'.repeat(255),
231
- },
232
- };
233
- const result = CreateAccountUserDtoSchema.safeParse(validDto);
234
- expect(result.success).toBe(true);
235
- if (result.success) {
236
- expect(result.data.user.password).toBe('A'.repeat(255));
237
- }
238
- });
239
- it('should transform birthdate string to Date', () => {
240
- var _a, _b, _c;
241
- const dtoWithBirthdate = {
242
- ...validCreateAccountUserDto,
243
- user: {
244
- ...validCreateAccountUserDto.user,
245
- birthdate: '2020-12-25',
246
- },
247
- };
248
- const result = CreateAccountUserDtoSchema.safeParse(dtoWithBirthdate);
249
- expect(result.success).toBe(true);
250
- if (result.success) {
251
- expect(result.data.user.birthdate).toBeInstanceOf(Date);
252
- expect((_a = result.data.user.birthdate) === null || _a === void 0 ? void 0 : _a.getFullYear()).toBe(2020);
253
- expect((_b = result.data.user.birthdate) === null || _b === void 0 ? void 0 : _b.getMonth()).toBe(11);
254
- expect((_c = result.data.user.birthdate) === null || _c === void 0 ? void 0 : _c.getDate()).toBe(25);
255
- }
256
- });
257
- it('should handle special characters in names', () => {
258
- const specialCharDto = {
259
- account: {
260
- name: 'José Account',
261
- },
262
- user: {
263
- firstName: 'José',
264
- lastName: "O'Connor-Smith",
265
- email: 'jose@example.com',
266
- username: 'jose',
267
- password: 'password123',
268
- birthdate: '1990-01-01',
269
- },
270
- };
271
- const result = CreateAccountUserDtoSchema.safeParse(specialCharDto);
272
- expect(result.success).toBe(true);
273
- if (result.success) {
274
- expect(result.data.account.name).toBe('José Account');
275
- expect(result.data.user.firstName).toBe('José');
276
- expect(result.data.user.lastName).toBe("O'Connor-Smith");
277
- }
278
- });
279
- });
280
- describe('CreateAccountUserResponseSchema', () => {
281
- const validResponse = {
282
- account: {
283
- id: '123e4567-e89b-12d3-a456-426614174000',
284
- name: 'Test Account',
285
- status: ActivationStatus.ACTIVE,
286
- createdAt: new Date('2024-01-01T00:00:00Z'),
287
- updatedAt: new Date('2024-01-01T00:00:00Z'),
288
- },
289
- user: {
290
- id: '123e4567-e89b-12d3-a456-426614174001',
291
- accountId: '123e4567-e89b-12d3-a456-426614174000',
292
- firstName: 'John',
293
- lastName: 'Doe',
294
- email: 'john.doe@example.com',
295
- username: 'johndoe',
296
- role: UserRole.OWNER,
297
- status: ActivationStatus.ACTIVE,
298
- createdAt: new Date('2024-01-01T00:00:00Z'),
299
- updatedAt: new Date('2024-01-01T00:00:00Z'),
300
- },
301
- };
302
- it('should validate a valid create account user response', () => {
303
- const result = CreateAccountUserResponseSchema.safeParse(validResponse);
304
- expect(result.success).toBe(true);
305
- if (result.success) {
306
- expect(result.data).toEqual(validResponse);
307
- }
308
- });
309
- it('should reject invalid UUID for account id', () => {
310
- const invalidResponse = {
311
- ...validResponse,
312
- account: {
313
- ...validResponse.account,
314
- id: 'invalid-uuid',
315
- },
316
- };
317
- const result = CreateAccountUserResponseSchema.safeParse(invalidResponse);
318
- expect(result.success).toBe(false);
319
- if (!result.success) {
320
- expect(result.error.issues[0].path).toEqual(['account', 'id']);
321
- expect(result.error.issues[0].code).toBe('invalid_format');
322
- }
323
- });
324
- it('should reject invalid UUID for user id', () => {
325
- const invalidResponse = {
326
- ...validResponse,
327
- user: {
328
- ...validResponse.user,
329
- id: 'invalid-uuid',
330
- },
331
- };
332
- const result = CreateAccountUserResponseSchema.safeParse(invalidResponse);
333
- expect(result.success).toBe(false);
334
- if (!result.success) {
335
- expect(result.error.issues[0].path).toEqual(['user', 'id']);
336
- expect(result.error.issues[0].code).toBe('invalid_format');
337
- }
338
- });
339
- it('should reject invalid UUID for accountId', () => {
340
- const invalidResponse = {
341
- ...validResponse,
342
- user: {
343
- ...validResponse.user,
344
- accountId: 'invalid-uuid',
345
- },
346
- };
347
- const result = CreateAccountUserResponseSchema.safeParse(invalidResponse);
348
- expect(result.success).toBe(false);
349
- if (!result.success) {
350
- expect(result.error.issues[0].path).toEqual(['user', 'accountId']);
351
- expect(result.error.issues[0].code).toBe('invalid_format');
352
- }
353
- });
354
- it('should validate all valid account statuses', () => {
355
- const statuses = [ActivationStatus.ACTIVE, ActivationStatus.DISABLED];
356
- statuses.forEach((status) => {
357
- const responseWithStatus = {
358
- ...validResponse,
359
- account: {
360
- ...validResponse.account,
361
- status,
362
- },
363
- };
364
- const result = CreateAccountUserResponseSchema.safeParse(responseWithStatus);
365
- expect(result.success).toBe(true);
366
- if (result.success) {
367
- expect(result.data.account.status).toBe(status);
368
- }
369
- });
370
- });
371
- it('should validate all valid user roles', () => {
372
- const roles = [UserRole.OWNER, UserRole.PARENT, UserRole.CHILD];
373
- roles.forEach((role) => {
374
- const responseWithRole = {
375
- ...validResponse,
376
- user: {
377
- ...validResponse.user,
378
- role,
379
- },
380
- };
381
- const result = CreateAccountUserResponseSchema.safeParse(responseWithRole);
382
- expect(result.success).toBe(true);
383
- if (result.success) {
384
- expect(result.data.user.role).toBe(role);
385
- }
386
- });
387
- });
388
- });
389
- describe('LoginDtoSchema', () => {
390
- const validLoginDto = {
391
- emailOrUsername: 'john.doe@example.com',
392
- password: 'password123',
393
- };
394
- it('should validate a valid login DTO', () => {
395
- const result = LoginDtoSchema.safeParse(validLoginDto);
396
- expect(result.success).toBe(true);
397
- if (result.success) {
398
- expect(result.data).toEqual(validLoginDto);
399
- }
400
- });
401
- it('should accept any string as emailOrUsername', () => {
402
- const dtoWithUsername = {
403
- ...validLoginDto,
404
- emailOrUsername: 'invalid-email',
405
- };
406
- const result = LoginDtoSchema.safeParse(dtoWithUsername);
407
- expect(result.success).toBe(true);
408
- if (result.success) {
409
- expect(result.data.emailOrUsername).toBe('invalid-email');
410
- }
411
- });
412
- it('should reject missing emailOrUsername', () => {
413
- const invalidDto = {
414
- password: 'password123',
415
- };
416
- const result = LoginDtoSchema.safeParse(invalidDto);
417
- expect(result.success).toBe(false);
418
- if (!result.success) {
419
- expect(result.error.issues[0].path).toEqual(['emailOrUsername']);
420
- expect(result.error.issues[0].code).toBe('invalid_type');
421
- }
422
- });
423
- it('should reject missing password', () => {
424
- const invalidDto = {
425
- emailOrUsername: 'john.doe@example.com',
426
- };
427
- const result = LoginDtoSchema.safeParse(invalidDto);
428
- expect(result.success).toBe(false);
429
- if (!result.success) {
430
- expect(result.error.issues[0].path).toEqual(['password']);
431
- expect(result.error.issues[0].message).toBe('Password must be provided');
432
- }
433
- });
434
- it('should accept empty password string', () => {
435
- const dtoWithEmptyPassword = {
436
- emailOrUsername: 'john.doe@example.com',
437
- password: '',
438
- };
439
- const result = LoginDtoSchema.safeParse(dtoWithEmptyPassword);
440
- expect(result.success).toBe(true);
441
- if (result.success) {
442
- expect(result.data.password).toBe('');
443
- }
444
- });
445
- it('should accept emailOrUsername with special characters', () => {
446
- const specialEmailDto = {
447
- emailOrUsername: 'josé.óconnor+test@example.com',
448
- password: 'password123',
449
- };
450
- const result = LoginDtoSchema.safeParse(specialEmailDto);
451
- expect(result.success).toBe(true);
452
- if (result.success) {
453
- expect(result.data.emailOrUsername).toBe('josé.óconnor+test@example.com');
454
- }
455
- });
456
- });
457
- describe('LoginResponseSchema', () => {
458
- const validLoginResponse = {
459
- token: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiIxMjMiLCJpYXQiOjE2MzQ1Njc4OTB9.example',
460
- };
461
- it('should validate a valid login response', () => {
462
- const result = LoginResponseSchema.safeParse(validLoginResponse);
463
- expect(result.success).toBe(true);
464
- if (result.success) {
465
- expect(result.data).toEqual(validLoginResponse);
466
- }
467
- });
468
- it('should reject missing token', () => {
469
- const invalidResponse = {};
470
- const result = LoginResponseSchema.safeParse(invalidResponse);
471
- expect(result.success).toBe(false);
472
- if (!result.success) {
473
- expect(result.error.issues[0].path).toEqual(['token']);
474
- expect(result.error.issues[0].code).toBe('invalid_type');
475
- }
476
- });
477
- it('should accept empty token string', () => {
478
- const responseWithEmptyToken = {
479
- token: '',
480
- };
481
- const result = LoginResponseSchema.safeParse(responseWithEmptyToken);
482
- expect(result.success).toBe(true);
483
- if (result.success) {
484
- expect(result.data.token).toBe('');
485
- }
486
- });
487
- it('should accept very long token', () => {
488
- const responseWithLongToken = {
489
- token: 'A'.repeat(10000),
490
- };
491
- const result = LoginResponseSchema.safeParse(responseWithLongToken);
492
- expect(result.success).toBe(true);
493
- if (result.success) {
494
- expect(result.data.token).toBe('A'.repeat(10000));
495
- }
496
- });
497
- });
498
- });
499
- //# sourceMappingURL=auth.dto.spec.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"auth.dto.spec.js","sourceRoot":"","sources":["../../src/tests/auth.dto.spec.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- export {};