@kidemy/lib 1.0.10 → 1.0.12
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/cjs/index.d.ts +1 -0
- package/dist/cjs/index.js +1 -0
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/model/account-invitation.dto.d.ts +18 -0
- package/dist/cjs/model/account-invitation.dto.js +20 -0
- package/dist/cjs/model/account-invitation.dto.js.map +1 -0
- package/dist/cjs/model/auth.dto.d.ts +2 -0
- package/dist/cjs/model/auth.dto.js +6 -0
- package/dist/cjs/model/auth.dto.js.map +1 -1
- package/dist/cjs/model/user.dto.js +4 -1
- package/dist/cjs/model/user.dto.js.map +1 -1
- package/dist/cjs/tests/account-invitation.dto.spec.d.ts +1 -0
- package/dist/cjs/tests/account-invitation.dto.spec.js +262 -0
- package/dist/cjs/tests/account-invitation.dto.spec.js.map +1 -0
- package/dist/cjs/tests/auth.dto.spec.js +63 -1
- package/dist/cjs/tests/auth.dto.spec.js.map +1 -1
- package/dist/cjs/tests/user.dto.spec.js +47 -0
- package/dist/cjs/tests/user.dto.spec.js.map +1 -1
- package/dist/cjs/tsconfig-cjs.tsbuildinfo +1 -1
- package/dist/esm/index.d.ts +1 -0
- package/dist/esm/index.js +1 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/model/account-invitation.dto.d.ts +18 -0
- package/dist/esm/model/account-invitation.dto.js +17 -0
- package/dist/esm/model/account-invitation.dto.js.map +1 -0
- package/dist/esm/model/auth.dto.d.ts +2 -0
- package/dist/esm/model/auth.dto.js +6 -0
- package/dist/esm/model/auth.dto.js.map +1 -1
- package/dist/esm/model/user.dto.js +4 -1
- package/dist/esm/model/user.dto.js.map +1 -1
- package/dist/esm/tests/account-invitation.dto.spec.d.ts +1 -0
- package/dist/esm/tests/account-invitation.dto.spec.js +260 -0
- package/dist/esm/tests/account-invitation.dto.spec.js.map +1 -0
- package/dist/esm/tests/auth.dto.spec.js +63 -1
- package/dist/esm/tests/auth.dto.spec.js.map +1 -1
- package/dist/esm/tests/user.dto.spec.js +47 -0
- package/dist/esm/tests/user.dto.spec.js.map +1 -1
- package/dist/esm/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
package/dist/esm/index.d.ts
CHANGED
package/dist/esm/index.js
CHANGED
package/dist/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,0BAA0B,CAAC;AACzC,cAAc,iBAAiB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,wBAAwB,CAAC;AACvC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,0BAA0B,CAAC;AACzC,cAAc,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare const AccountInvitationDtoSchema: z.ZodObject<{
|
|
3
|
+
id: z.ZodUUID;
|
|
4
|
+
accountUid: z.ZodUUID;
|
|
5
|
+
accountName: z.ZodString;
|
|
6
|
+
invitorUid: z.ZodUUID;
|
|
7
|
+
createdAt: z.ZodDate;
|
|
8
|
+
updatedAt: z.ZodDate;
|
|
9
|
+
}, z.core.$strip>;
|
|
10
|
+
export type AccountInvitationDto = z.infer<typeof AccountInvitationDtoSchema>;
|
|
11
|
+
export declare const AccountInvitationInfoSchema: z.ZodObject<{
|
|
12
|
+
id: z.ZodUUID;
|
|
13
|
+
accountName: z.ZodString;
|
|
14
|
+
invitorUid: z.ZodUUID;
|
|
15
|
+
invitorFirstName: z.ZodString;
|
|
16
|
+
invitorLastName: z.ZodString;
|
|
17
|
+
}, z.core.$strip>;
|
|
18
|
+
export type AccountInvitationInfo = z.infer<typeof AccountInvitationInfoSchema>;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export const AccountInvitationDtoSchema = z.object({
|
|
3
|
+
id: z.uuid(),
|
|
4
|
+
accountUid: z.uuid(),
|
|
5
|
+
accountName: z.string(),
|
|
6
|
+
invitorUid: z.uuid(),
|
|
7
|
+
createdAt: z.date(),
|
|
8
|
+
updatedAt: z.date(),
|
|
9
|
+
});
|
|
10
|
+
export const AccountInvitationInfoSchema = z.object({
|
|
11
|
+
id: z.uuid(),
|
|
12
|
+
accountName: z.string(),
|
|
13
|
+
invitorUid: z.uuid(),
|
|
14
|
+
invitorFirstName: z.string(),
|
|
15
|
+
invitorLastName: z.string(),
|
|
16
|
+
});
|
|
17
|
+
//# sourceMappingURL=account-invitation.dto.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"account-invitation.dto.js","sourceRoot":"","sources":["../../../src/model/account-invitation.dto.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,CAAC,MAAM,CAAC;IACjD,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE;IACZ,UAAU,EAAE,CAAC,CAAC,IAAI,EAAE;IACpB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;IACvB,UAAU,EAAE,CAAC,CAAC,IAAI,EAAE;IACpB,SAAS,EAAE,CAAC,CAAC,IAAI,EAAE;IACnB,SAAS,EAAE,CAAC,CAAC,IAAI,EAAE;CACpB,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,CAAC,MAAM,CAAC;IAClD,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE;IACZ,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;IACvB,UAAU,EAAE,CAAC,CAAC,IAAI,EAAE;IACpB,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE;IAC5B,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE;CAC5B,CAAC,CAAC"}
|
|
@@ -11,6 +11,7 @@ export declare const CreateAccountUserDtoSchema: z.ZodObject<{
|
|
|
11
11
|
password: z.ZodString;
|
|
12
12
|
birthdate: z.ZodPipe<z.ZodOptional<z.ZodString>, z.ZodTransform<Date | undefined, string | undefined>>;
|
|
13
13
|
}, z.core.$strip>;
|
|
14
|
+
recaptchaToken: z.ZodString;
|
|
14
15
|
}, z.core.$strip>;
|
|
15
16
|
export type CreateAccountUserDto = z.infer<typeof CreateAccountUserDtoSchema>;
|
|
16
17
|
export declare const CreateAccountUserResponseSchema: z.ZodObject<{
|
|
@@ -44,6 +45,7 @@ export type CreateAccountUserResponse = z.infer<typeof CreateAccountUserResponse
|
|
|
44
45
|
export declare const LoginDtoSchema: z.ZodObject<{
|
|
45
46
|
emailOrUsername: z.ZodString;
|
|
46
47
|
password: z.ZodString;
|
|
48
|
+
recaptchaToken: z.ZodString;
|
|
47
49
|
}, z.core.$strip>;
|
|
48
50
|
export type LoginDto = z.infer<typeof LoginDtoSchema>;
|
|
49
51
|
export declare const LoginResponseSchema: z.ZodObject<{
|
|
@@ -33,6 +33,9 @@ export const CreateAccountUserDtoSchema = z.object({
|
|
|
33
33
|
.optional()
|
|
34
34
|
.transform((val) => (val ? new Date(val) : undefined)),
|
|
35
35
|
}),
|
|
36
|
+
recaptchaToken: z
|
|
37
|
+
.string()
|
|
38
|
+
.min(1, 'reCAPTCHA token is required'),
|
|
36
39
|
});
|
|
37
40
|
export const CreateAccountUserResponseSchema = z.object({
|
|
38
41
|
account: z.object({
|
|
@@ -61,6 +64,9 @@ export const LoginDtoSchema = z.object({
|
|
|
61
64
|
.min(1, 'Email or username is required')
|
|
62
65
|
.max(255, 'Email or username must be less than 255 characters'),
|
|
63
66
|
password: z.string('Password must be provided'),
|
|
67
|
+
recaptchaToken: z
|
|
68
|
+
.string()
|
|
69
|
+
.min(1, 'reCAPTCHA token is required'),
|
|
64
70
|
});
|
|
65
71
|
export const LoginResponseSchema = z.object({
|
|
66
72
|
token: z.string(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.dto.js","sourceRoot":"","sources":["../../../src/model/auth.dto.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAE1C,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,CAAC,MAAM,CAAC;IACjD,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC;QAChB,IAAI,EAAE,CAAC;aACJ,MAAM,EAAE;aACR,GAAG,CAAC,CAAC,EAAE,0BAA0B,CAAC;aAClC,GAAG,CAAC,GAAG,EAAE,+CAA+C,CAAC;KAC7D,CAAC;IACF,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;QACb,SAAS,EAAE,CAAC;aACT,MAAM,EAAE;aACR,GAAG,CAAC,CAAC,EAAE,wBAAwB,CAAC;aAChC,GAAG,CAAC,GAAG,EAAE,6CAA6C,CAAC;QAC1D,QAAQ,EAAE,CAAC;aACR,MAAM,EAAE;aACR,GAAG,CAAC,CAAC,EAAE,uBAAuB,CAAC;aAC/B,GAAG,CAAC,GAAG,EAAE,4CAA4C,CAAC;QACzD,KAAK,EAAE,CAAC;aACL,KAAK,CAAC,sBAAsB,CAAC;aAC7B,GAAG,CAAC,GAAG,EAAE,wCAAwC,CAAC;QACrD,QAAQ,EAAE,CAAC;aACR,MAAM,EAAE;aACR,GAAG,CAAC,CAAC,EAAE,sBAAsB,CAAC;aAC9B,GAAG,CAAC,GAAG,EAAE,2CAA2C,CAAC;QACxD,QAAQ,EAAE,CAAC;aACR,MAAM,EAAE;aACR,GAAG,CAAC,CAAC,EAAE,wCAAwC,CAAC;aAChD,GAAG,CAAC,GAAG,EAAE,2CAA2C,CAAC;QACxD,SAAS,EAAE,CAAC;aACT,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,SAAS,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;KACzD,CAAC;
|
|
1
|
+
{"version":3,"file":"auth.dto.js","sourceRoot":"","sources":["../../../src/model/auth.dto.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,7 +15,10 @@ export const UserDtoSchema = z.object({
|
|
|
15
15
|
export const CreateChildUserDtoSchema = z.object({
|
|
16
16
|
firstName: z.string().min(1, 'First name is required'),
|
|
17
17
|
lastName: z.string().min(1, 'Last name is required'),
|
|
18
|
-
username: z
|
|
18
|
+
username: z
|
|
19
|
+
.string()
|
|
20
|
+
.min(3, 'Username must be at least 3 characters')
|
|
21
|
+
.regex(/^[a-z0-9]+$/, 'Username must contain only lowercase alphanumeric characters'),
|
|
19
22
|
password: z.string().length(4, 'Password must be exactly 4 characters'),
|
|
20
23
|
birthdate: z
|
|
21
24
|
.string()
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"user.dto.js","sourceRoot":"","sources":["../../../src/model/user.dto.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAE1C,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC;IACpC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE;IACZ,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IACpB,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE;IAC3B,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IACpB,IAAI,EAAE,aAAa,CAAC,QAAQ,CAAC;IAC7B,MAAM,EAAE,aAAa,CAAC,gBAAgB,CAAC;IACvC,SAAS,EAAE,CAAC,CAAC,IAAI,EAAE;IACnB,SAAS,EAAE,CAAC,CAAC,IAAI,EAAE;CACpB,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/C,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,wBAAwB,CAAC;IACtD,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,uBAAuB,CAAC;IACpD,QAAQ,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"user.dto.js","sourceRoot":"","sources":["../../../src/model/user.dto.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAE1C,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC;IACpC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE;IACZ,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IACpB,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE;IAC3B,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IACpB,IAAI,EAAE,aAAa,CAAC,QAAQ,CAAC;IAC7B,MAAM,EAAE,aAAa,CAAC,gBAAgB,CAAC;IACvC,SAAS,EAAE,CAAC,CAAC,IAAI,EAAE;IACnB,SAAS,EAAE,CAAC,CAAC,IAAI,EAAE;CACpB,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/C,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,wBAAwB,CAAC;IACtD,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,uBAAuB,CAAC;IACpD,QAAQ,EAAE,CAAC;SACR,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,EAAE,wCAAwC,CAAC;SAChD,KAAK,CAAC,aAAa,EAAE,8DAA8D,CAAC;IACvF,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,uCAAuC,CAAC;IACvE,SAAS,EAAE,CAAC;SACT,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,SAAS,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;CACzD,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5C,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC;CAC9B,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,260 @@
|
|
|
1
|
+
import { AccountInvitationDtoSchema, AccountInvitationInfoSchema, } from '../model/account-invitation.dto';
|
|
2
|
+
describe('AccountInvitationDto Schemas', () => {
|
|
3
|
+
describe('AccountInvitationDtoSchema', () => {
|
|
4
|
+
const validUuid = '550e8400-e29b-41d4-a716-446655440000';
|
|
5
|
+
it('should validate a valid account invitation DTO', () => {
|
|
6
|
+
const validDto = {
|
|
7
|
+
id: validUuid,
|
|
8
|
+
accountUid: validUuid,
|
|
9
|
+
accountName: 'Test Account',
|
|
10
|
+
invitorUid: validUuid,
|
|
11
|
+
createdAt: new Date('2024-01-01'),
|
|
12
|
+
updatedAt: new Date('2024-01-02'),
|
|
13
|
+
};
|
|
14
|
+
const result = AccountInvitationDtoSchema.safeParse(validDto);
|
|
15
|
+
expect(result.success).toBe(true);
|
|
16
|
+
if (result.success) {
|
|
17
|
+
expect(result.data.id).toBe(validUuid);
|
|
18
|
+
expect(result.data.accountUid).toBe(validUuid);
|
|
19
|
+
expect(result.data.accountName).toBe('Test Account');
|
|
20
|
+
expect(result.data.invitorUid).toBe(validUuid);
|
|
21
|
+
expect(result.data.createdAt).toEqual(new Date('2024-01-01'));
|
|
22
|
+
expect(result.data.updatedAt).toEqual(new Date('2024-01-02'));
|
|
23
|
+
}
|
|
24
|
+
});
|
|
25
|
+
it('should reject invalid id UUID', () => {
|
|
26
|
+
const invalidDto = {
|
|
27
|
+
id: 'invalid-uuid',
|
|
28
|
+
accountUid: validUuid,
|
|
29
|
+
accountName: 'Test Account',
|
|
30
|
+
invitorUid: validUuid,
|
|
31
|
+
createdAt: new Date(),
|
|
32
|
+
updatedAt: new Date(),
|
|
33
|
+
};
|
|
34
|
+
const result = AccountInvitationDtoSchema.safeParse(invalidDto);
|
|
35
|
+
expect(result.success).toBe(false);
|
|
36
|
+
if (!result.success) {
|
|
37
|
+
expect(result.error.issues[0].path).toEqual(['id']);
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
it('should reject invalid accountUid UUID', () => {
|
|
41
|
+
const invalidDto = {
|
|
42
|
+
id: validUuid,
|
|
43
|
+
accountUid: 'invalid-uuid',
|
|
44
|
+
accountName: 'Test Account',
|
|
45
|
+
invitorUid: validUuid,
|
|
46
|
+
createdAt: new Date(),
|
|
47
|
+
updatedAt: new Date(),
|
|
48
|
+
};
|
|
49
|
+
const result = AccountInvitationDtoSchema.safeParse(invalidDto);
|
|
50
|
+
expect(result.success).toBe(false);
|
|
51
|
+
if (!result.success) {
|
|
52
|
+
expect(result.error.issues[0].path).toEqual(['accountUid']);
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
it('should reject invalid invitorUid UUID', () => {
|
|
56
|
+
const invalidDto = {
|
|
57
|
+
id: validUuid,
|
|
58
|
+
accountUid: validUuid,
|
|
59
|
+
accountName: 'Test Account',
|
|
60
|
+
invitorUid: 'invalid-uuid',
|
|
61
|
+
createdAt: new Date(),
|
|
62
|
+
updatedAt: new Date(),
|
|
63
|
+
};
|
|
64
|
+
const result = AccountInvitationDtoSchema.safeParse(invalidDto);
|
|
65
|
+
expect(result.success).toBe(false);
|
|
66
|
+
if (!result.success) {
|
|
67
|
+
expect(result.error.issues[0].path).toEqual(['invitorUid']);
|
|
68
|
+
}
|
|
69
|
+
});
|
|
70
|
+
it('should reject non-string accountName', () => {
|
|
71
|
+
const invalidDto = {
|
|
72
|
+
id: validUuid,
|
|
73
|
+
accountUid: validUuid,
|
|
74
|
+
accountName: 123,
|
|
75
|
+
invitorUid: validUuid,
|
|
76
|
+
createdAt: new Date(),
|
|
77
|
+
updatedAt: new Date(),
|
|
78
|
+
};
|
|
79
|
+
const result = AccountInvitationDtoSchema.safeParse(invalidDto);
|
|
80
|
+
expect(result.success).toBe(false);
|
|
81
|
+
if (!result.success) {
|
|
82
|
+
expect(result.error.issues[0].path).toEqual(['accountName']);
|
|
83
|
+
expect(result.error.issues[0].code).toBe('invalid_type');
|
|
84
|
+
}
|
|
85
|
+
});
|
|
86
|
+
it('should reject invalid createdAt date', () => {
|
|
87
|
+
const invalidDto = {
|
|
88
|
+
id: validUuid,
|
|
89
|
+
accountUid: validUuid,
|
|
90
|
+
accountName: 'Test Account',
|
|
91
|
+
invitorUid: validUuid,
|
|
92
|
+
createdAt: 'not-a-date',
|
|
93
|
+
updatedAt: new Date(),
|
|
94
|
+
};
|
|
95
|
+
const result = AccountInvitationDtoSchema.safeParse(invalidDto);
|
|
96
|
+
expect(result.success).toBe(false);
|
|
97
|
+
if (!result.success) {
|
|
98
|
+
expect(result.error.issues[0].path).toEqual(['createdAt']);
|
|
99
|
+
}
|
|
100
|
+
});
|
|
101
|
+
it('should reject invalid updatedAt date', () => {
|
|
102
|
+
const invalidDto = {
|
|
103
|
+
id: validUuid,
|
|
104
|
+
accountUid: validUuid,
|
|
105
|
+
accountName: 'Test Account',
|
|
106
|
+
invitorUid: validUuid,
|
|
107
|
+
createdAt: new Date(),
|
|
108
|
+
updatedAt: 'not-a-date',
|
|
109
|
+
};
|
|
110
|
+
const result = AccountInvitationDtoSchema.safeParse(invalidDto);
|
|
111
|
+
expect(result.success).toBe(false);
|
|
112
|
+
if (!result.success) {
|
|
113
|
+
expect(result.error.issues[0].path).toEqual(['updatedAt']);
|
|
114
|
+
}
|
|
115
|
+
});
|
|
116
|
+
it('should reject missing required fields', () => {
|
|
117
|
+
const invalidDto = {};
|
|
118
|
+
const result = AccountInvitationDtoSchema.safeParse(invalidDto);
|
|
119
|
+
expect(result.success).toBe(false);
|
|
120
|
+
if (!result.success) {
|
|
121
|
+
expect(result.error.issues.length).toBeGreaterThan(0);
|
|
122
|
+
}
|
|
123
|
+
});
|
|
124
|
+
});
|
|
125
|
+
describe('AccountInvitationInfoSchema', () => {
|
|
126
|
+
const validUuid = '550e8400-e29b-41d4-a716-446655440000';
|
|
127
|
+
it('should validate a valid account invitation info', () => {
|
|
128
|
+
const validInfo = {
|
|
129
|
+
id: validUuid,
|
|
130
|
+
accountName: 'Test Account',
|
|
131
|
+
invitorUid: validUuid,
|
|
132
|
+
invitorFirstName: 'John',
|
|
133
|
+
invitorLastName: 'Doe',
|
|
134
|
+
};
|
|
135
|
+
const result = AccountInvitationInfoSchema.safeParse(validInfo);
|
|
136
|
+
expect(result.success).toBe(true);
|
|
137
|
+
if (result.success) {
|
|
138
|
+
expect(result.data.id).toBe(validUuid);
|
|
139
|
+
expect(result.data.accountName).toBe('Test Account');
|
|
140
|
+
expect(result.data.invitorUid).toBe(validUuid);
|
|
141
|
+
expect(result.data.invitorFirstName).toBe('John');
|
|
142
|
+
expect(result.data.invitorLastName).toBe('Doe');
|
|
143
|
+
}
|
|
144
|
+
});
|
|
145
|
+
it('should reject invalid id UUID', () => {
|
|
146
|
+
const invalidInfo = {
|
|
147
|
+
id: 'invalid-uuid',
|
|
148
|
+
accountName: 'Test Account',
|
|
149
|
+
invitorUid: validUuid,
|
|
150
|
+
invitorFirstName: 'John',
|
|
151
|
+
invitorLastName: 'Doe',
|
|
152
|
+
};
|
|
153
|
+
const result = AccountInvitationInfoSchema.safeParse(invalidInfo);
|
|
154
|
+
expect(result.success).toBe(false);
|
|
155
|
+
if (!result.success) {
|
|
156
|
+
expect(result.error.issues[0].path).toEqual(['id']);
|
|
157
|
+
}
|
|
158
|
+
});
|
|
159
|
+
it('should reject invalid invitorUid UUID', () => {
|
|
160
|
+
const invalidInfo = {
|
|
161
|
+
id: validUuid,
|
|
162
|
+
accountName: 'Test Account',
|
|
163
|
+
invitorUid: 'invalid-uuid',
|
|
164
|
+
invitorFirstName: 'John',
|
|
165
|
+
invitorLastName: 'Doe',
|
|
166
|
+
};
|
|
167
|
+
const result = AccountInvitationInfoSchema.safeParse(invalidInfo);
|
|
168
|
+
expect(result.success).toBe(false);
|
|
169
|
+
if (!result.success) {
|
|
170
|
+
expect(result.error.issues[0].path).toEqual(['invitorUid']);
|
|
171
|
+
}
|
|
172
|
+
});
|
|
173
|
+
it('should reject non-string accountName', () => {
|
|
174
|
+
const invalidInfo = {
|
|
175
|
+
id: validUuid,
|
|
176
|
+
accountName: 123,
|
|
177
|
+
invitorUid: validUuid,
|
|
178
|
+
invitorFirstName: 'John',
|
|
179
|
+
invitorLastName: 'Doe',
|
|
180
|
+
};
|
|
181
|
+
const result = AccountInvitationInfoSchema.safeParse(invalidInfo);
|
|
182
|
+
expect(result.success).toBe(false);
|
|
183
|
+
if (!result.success) {
|
|
184
|
+
expect(result.error.issues[0].path).toEqual(['accountName']);
|
|
185
|
+
expect(result.error.issues[0].code).toBe('invalid_type');
|
|
186
|
+
}
|
|
187
|
+
});
|
|
188
|
+
it('should reject non-string invitorFirstName', () => {
|
|
189
|
+
const invalidInfo = {
|
|
190
|
+
id: validUuid,
|
|
191
|
+
accountName: 'Test Account',
|
|
192
|
+
invitorUid: validUuid,
|
|
193
|
+
invitorFirstName: 123,
|
|
194
|
+
invitorLastName: 'Doe',
|
|
195
|
+
};
|
|
196
|
+
const result = AccountInvitationInfoSchema.safeParse(invalidInfo);
|
|
197
|
+
expect(result.success).toBe(false);
|
|
198
|
+
if (!result.success) {
|
|
199
|
+
expect(result.error.issues[0].path).toEqual(['invitorFirstName']);
|
|
200
|
+
expect(result.error.issues[0].code).toBe('invalid_type');
|
|
201
|
+
}
|
|
202
|
+
});
|
|
203
|
+
it('should reject non-string invitorLastName', () => {
|
|
204
|
+
const invalidInfo = {
|
|
205
|
+
id: validUuid,
|
|
206
|
+
accountName: 'Test Account',
|
|
207
|
+
invitorUid: validUuid,
|
|
208
|
+
invitorFirstName: 'John',
|
|
209
|
+
invitorLastName: 456,
|
|
210
|
+
};
|
|
211
|
+
const result = AccountInvitationInfoSchema.safeParse(invalidInfo);
|
|
212
|
+
expect(result.success).toBe(false);
|
|
213
|
+
if (!result.success) {
|
|
214
|
+
expect(result.error.issues[0].path).toEqual(['invitorLastName']);
|
|
215
|
+
expect(result.error.issues[0].code).toBe('invalid_type');
|
|
216
|
+
}
|
|
217
|
+
});
|
|
218
|
+
it('should reject missing required fields', () => {
|
|
219
|
+
const invalidInfo = {};
|
|
220
|
+
const result = AccountInvitationInfoSchema.safeParse(invalidInfo);
|
|
221
|
+
expect(result.success).toBe(false);
|
|
222
|
+
if (!result.success) {
|
|
223
|
+
expect(result.error.issues.length).toBeGreaterThan(0);
|
|
224
|
+
}
|
|
225
|
+
});
|
|
226
|
+
it('should handle special characters in names', () => {
|
|
227
|
+
const validInfo = {
|
|
228
|
+
id: validUuid,
|
|
229
|
+
accountName: "O'Connor-Smith & Co.",
|
|
230
|
+
invitorUid: validUuid,
|
|
231
|
+
invitorFirstName: "Jean-Pierre",
|
|
232
|
+
invitorLastName: "O'Brien",
|
|
233
|
+
};
|
|
234
|
+
const result = AccountInvitationInfoSchema.safeParse(validInfo);
|
|
235
|
+
expect(result.success).toBe(true);
|
|
236
|
+
if (result.success) {
|
|
237
|
+
expect(result.data.accountName).toBe("O'Connor-Smith & Co.");
|
|
238
|
+
expect(result.data.invitorFirstName).toBe("Jean-Pierre");
|
|
239
|
+
expect(result.data.invitorLastName).toBe("O'Brien");
|
|
240
|
+
}
|
|
241
|
+
});
|
|
242
|
+
it('should handle unicode characters in names', () => {
|
|
243
|
+
const validInfo = {
|
|
244
|
+
id: validUuid,
|
|
245
|
+
accountName: '账户名称',
|
|
246
|
+
invitorUid: validUuid,
|
|
247
|
+
invitorFirstName: 'José',
|
|
248
|
+
invitorLastName: 'Müller',
|
|
249
|
+
};
|
|
250
|
+
const result = AccountInvitationInfoSchema.safeParse(validInfo);
|
|
251
|
+
expect(result.success).toBe(true);
|
|
252
|
+
if (result.success) {
|
|
253
|
+
expect(result.data.accountName).toBe('账户名称');
|
|
254
|
+
expect(result.data.invitorFirstName).toBe('José');
|
|
255
|
+
expect(result.data.invitorLastName).toBe('Müller');
|
|
256
|
+
}
|
|
257
|
+
});
|
|
258
|
+
});
|
|
259
|
+
});
|
|
260
|
+
//# sourceMappingURL=account-invitation.dto.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"account-invitation.dto.spec.js","sourceRoot":"","sources":["../../../src/tests/account-invitation.dto.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,0BAA0B,EAC1B,2BAA2B,GAC5B,MAAM,iCAAiC,CAAC;AAEzC,QAAQ,CAAC,8BAA8B,EAAE,GAAG,EAAE;IAC5C,QAAQ,CAAC,4BAA4B,EAAE,GAAG,EAAE;QAC1C,MAAM,SAAS,GAAG,sCAAsC,CAAC;QAEzD,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;YAExD,MAAM,QAAQ,GAAG;gBACf,EAAE,EAAE,SAAS;gBACb,UAAU,EAAE,SAAS;gBACrB,WAAW,EAAE,cAAc;gBAC3B,UAAU,EAAE,SAAS;gBACrB,SAAS,EAAE,IAAI,IAAI,CAAC,YAAY,CAAC;gBACjC,SAAS,EAAE,IAAI,IAAI,CAAC,YAAY,CAAC;aAClC,CAAC;YAGF,MAAM,MAAM,GAAG,0BAA0B,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;YAG9D,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClC,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBACnB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBACvC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBAC/C,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;gBACrD,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBAC/C,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;gBAC9D,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;YAChE,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;YAEvC,MAAM,UAAU,GAAG;gBACjB,EAAE,EAAE,cAAc;gBAClB,UAAU,EAAE,SAAS;gBACrB,WAAW,EAAE,cAAc;gBAC3B,UAAU,EAAE,SAAS;gBACrB,SAAS,EAAE,IAAI,IAAI,EAAE;gBACrB,SAAS,EAAE,IAAI,IAAI,EAAE;aACtB,CAAC;YAGF,MAAM,MAAM,GAAG,0BAA0B,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;YAGhE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACnC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBACpB,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;YACtD,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;YAE/C,MAAM,UAAU,GAAG;gBACjB,EAAE,EAAE,SAAS;gBACb,UAAU,EAAE,cAAc;gBAC1B,WAAW,EAAE,cAAc;gBAC3B,UAAU,EAAE,SAAS;gBACrB,SAAS,EAAE,IAAI,IAAI,EAAE;gBACrB,SAAS,EAAE,IAAI,IAAI,EAAE;aACtB,CAAC;YAGF,MAAM,MAAM,GAAG,0BAA0B,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;YAGhE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACnC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBACpB,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC;YAC9D,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;YAE/C,MAAM,UAAU,GAAG;gBACjB,EAAE,EAAE,SAAS;gBACb,UAAU,EAAE,SAAS;gBACrB,WAAW,EAAE,cAAc;gBAC3B,UAAU,EAAE,cAAc;gBAC1B,SAAS,EAAE,IAAI,IAAI,EAAE;gBACrB,SAAS,EAAE,IAAI,IAAI,EAAE;aACtB,CAAC;YAGF,MAAM,MAAM,GAAG,0BAA0B,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;YAGhE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACnC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBACpB,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC;YAC9D,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;YAE9C,MAAM,UAAU,GAAG;gBACjB,EAAE,EAAE,SAAS;gBACb,UAAU,EAAE,SAAS;gBACrB,WAAW,EAAE,GAAG;gBAChB,UAAU,EAAE,SAAS;gBACrB,SAAS,EAAE,IAAI,IAAI,EAAE;gBACrB,SAAS,EAAE,IAAI,IAAI,EAAE;aACtB,CAAC;YAGF,MAAM,MAAM,GAAG,0BAA0B,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;YAGhE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACnC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBACpB,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC;gBAC7D,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YAC3D,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;YAE9C,MAAM,UAAU,GAAG;gBACjB,EAAE,EAAE,SAAS;gBACb,UAAU,EAAE,SAAS;gBACrB,WAAW,EAAE,cAAc;gBAC3B,UAAU,EAAE,SAAS;gBACrB,SAAS,EAAE,YAAY;gBACvB,SAAS,EAAE,IAAI,IAAI,EAAE;aACtB,CAAC;YAGF,MAAM,MAAM,GAAG,0BAA0B,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;YAGhE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACnC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBACpB,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;YAC7D,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;YAE9C,MAAM,UAAU,GAAG;gBACjB,EAAE,EAAE,SAAS;gBACb,UAAU,EAAE,SAAS;gBACrB,WAAW,EAAE,cAAc;gBAC3B,UAAU,EAAE,SAAS;gBACrB,SAAS,EAAE,IAAI,IAAI,EAAE;gBACrB,SAAS,EAAE,YAAY;aACxB,CAAC;YAGF,MAAM,MAAM,GAAG,0BAA0B,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;YAGhE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACnC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBACpB,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;YAC7D,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;YAE/C,MAAM,UAAU,GAAG,EAAE,CAAC;YAGtB,MAAM,MAAM,GAAG,0BAA0B,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;YAGhE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACnC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBACpB,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;YACxD,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,6BAA6B,EAAE,GAAG,EAAE;QAC3C,MAAM,SAAS,GAAG,sCAAsC,CAAC;QAEzD,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;YAEzD,MAAM,SAAS,GAAG;gBAChB,EAAE,EAAE,SAAS;gBACb,WAAW,EAAE,cAAc;gBAC3B,UAAU,EAAE,SAAS;gBACrB,gBAAgB,EAAE,MAAM;gBACxB,eAAe,EAAE,KAAK;aACvB,CAAC;YAGF,MAAM,MAAM,GAAG,2BAA2B,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;YAGhE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClC,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBACnB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBACvC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;gBACrD,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBAC/C,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAClD,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAClD,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;YAEvC,MAAM,WAAW,GAAG;gBAClB,EAAE,EAAE,cAAc;gBAClB,WAAW,EAAE,cAAc;gBAC3B,UAAU,EAAE,SAAS;gBACrB,gBAAgB,EAAE,MAAM;gBACxB,eAAe,EAAE,KAAK;aACvB,CAAC;YAGF,MAAM,MAAM,GAAG,2BAA2B,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;YAGlE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACnC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBACpB,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;YACtD,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;YAE/C,MAAM,WAAW,GAAG;gBAClB,EAAE,EAAE,SAAS;gBACb,WAAW,EAAE,cAAc;gBAC3B,UAAU,EAAE,cAAc;gBAC1B,gBAAgB,EAAE,MAAM;gBACxB,eAAe,EAAE,KAAK;aACvB,CAAC;YAGF,MAAM,MAAM,GAAG,2BAA2B,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;YAGlE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACnC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBACpB,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC;YAC9D,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;YAE9C,MAAM,WAAW,GAAG;gBAClB,EAAE,EAAE,SAAS;gBACb,WAAW,EAAE,GAAG;gBAChB,UAAU,EAAE,SAAS;gBACrB,gBAAgB,EAAE,MAAM;gBACxB,eAAe,EAAE,KAAK;aACvB,CAAC;YAGF,MAAM,MAAM,GAAG,2BAA2B,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;YAGlE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACnC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBACpB,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC;gBAC7D,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YAC3D,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;YAEnD,MAAM,WAAW,GAAG;gBAClB,EAAE,EAAE,SAAS;gBACb,WAAW,EAAE,cAAc;gBAC3B,UAAU,EAAE,SAAS;gBACrB,gBAAgB,EAAE,GAAG;gBACrB,eAAe,EAAE,KAAK;aACvB,CAAC;YAGF,MAAM,MAAM,GAAG,2BAA2B,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;YAGlE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACnC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBACpB,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC;gBAClE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YAC3D,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;YAElD,MAAM,WAAW,GAAG;gBAClB,EAAE,EAAE,SAAS;gBACb,WAAW,EAAE,cAAc;gBAC3B,UAAU,EAAE,SAAS;gBACrB,gBAAgB,EAAE,MAAM;gBACxB,eAAe,EAAE,GAAG;aACrB,CAAC;YAGF,MAAM,MAAM,GAAG,2BAA2B,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;YAGlE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACnC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBACpB,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC;gBACjE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YAC3D,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;YAE/C,MAAM,WAAW,GAAG,EAAE,CAAC;YAGvB,MAAM,MAAM,GAAG,2BAA2B,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;YAGlE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACnC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBACpB,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;YACxD,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;YAEnD,MAAM,SAAS,GAAG;gBAChB,EAAE,EAAE,SAAS;gBACb,WAAW,EAAE,sBAAsB;gBACnC,UAAU,EAAE,SAAS;gBACrB,gBAAgB,EAAE,aAAa;gBAC/B,eAAe,EAAE,SAAS;aAC3B,CAAC;YAGF,MAAM,MAAM,GAAG,2BAA2B,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;YAGhE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClC,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBACnB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;gBAC7D,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;gBACzD,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACtD,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;YAEnD,MAAM,SAAS,GAAG;gBAChB,EAAE,EAAE,SAAS;gBACb,WAAW,EAAE,MAAM;gBACnB,UAAU,EAAE,SAAS;gBACrB,gBAAgB,EAAE,MAAM;gBACxB,eAAe,EAAE,QAAQ;aAC1B,CAAC;YAGF,MAAM,MAAM,GAAG,2BAA2B,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;YAGhE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClC,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBACnB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAC7C,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAClD,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACrD,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -14,6 +14,7 @@ describe('AuthDto Schemas', () => {
|
|
|
14
14
|
password: 'password123',
|
|
15
15
|
birthdate: '1990-01-01',
|
|
16
16
|
},
|
|
17
|
+
recaptchaToken: 'test-recaptcha-token-123',
|
|
17
18
|
};
|
|
18
19
|
it('should validate a valid create account user DTO', () => {
|
|
19
20
|
const result = CreateAccountUserDtoSchema.safeParse(validCreateAccountUserDto);
|
|
@@ -34,6 +35,7 @@ describe('AuthDto Schemas', () => {
|
|
|
34
35
|
username: 'johndoe',
|
|
35
36
|
password: 'password123',
|
|
36
37
|
},
|
|
38
|
+
recaptchaToken: 'test-recaptcha-token-123',
|
|
37
39
|
};
|
|
38
40
|
const result = CreateAccountUserDtoSchema.safeParse(dtoWithoutBirthdate);
|
|
39
41
|
expect(result.success).toBe(true);
|
|
@@ -186,6 +188,7 @@ describe('AuthDto Schemas', () => {
|
|
|
186
188
|
password: 'password123',
|
|
187
189
|
birthdate: '1990-01-01',
|
|
188
190
|
},
|
|
191
|
+
recaptchaToken: 'test-recaptcha-token-123',
|
|
189
192
|
};
|
|
190
193
|
const result = CreateAccountUserDtoSchema.safeParse(specialCharDto);
|
|
191
194
|
expect(result.success).toBe(true);
|
|
@@ -195,6 +198,35 @@ describe('AuthDto Schemas', () => {
|
|
|
195
198
|
expect(result.data.user.lastName).toBe("O'Connor-Smith");
|
|
196
199
|
}
|
|
197
200
|
});
|
|
201
|
+
it('should reject missing recaptchaToken', () => {
|
|
202
|
+
const invalidDto = {
|
|
203
|
+
account: {
|
|
204
|
+
name: 'Test Account',
|
|
205
|
+
},
|
|
206
|
+
user: {
|
|
207
|
+
firstName: 'John',
|
|
208
|
+
lastName: 'Doe',
|
|
209
|
+
email: 'john.doe@example.com',
|
|
210
|
+
username: 'johndoe',
|
|
211
|
+
password: 'password123',
|
|
212
|
+
},
|
|
213
|
+
};
|
|
214
|
+
const result = CreateAccountUserDtoSchema.safeParse(invalidDto);
|
|
215
|
+
expect(result.success).toBe(false);
|
|
216
|
+
if (!result.success) {
|
|
217
|
+
expect(result.error.issues[0].path).toEqual(['recaptchaToken']);
|
|
218
|
+
expect(result.error.issues[0].code).toBe('invalid_type');
|
|
219
|
+
}
|
|
220
|
+
});
|
|
221
|
+
it('should reject empty recaptchaToken', () => {
|
|
222
|
+
const invalidDto = Object.assign(Object.assign({}, validCreateAccountUserDto), { recaptchaToken: '' });
|
|
223
|
+
const result = CreateAccountUserDtoSchema.safeParse(invalidDto);
|
|
224
|
+
expect(result.success).toBe(false);
|
|
225
|
+
if (!result.success) {
|
|
226
|
+
expect(result.error.issues[0].path).toEqual(['recaptchaToken']);
|
|
227
|
+
expect(result.error.issues[0].message).toBe('reCAPTCHA token is required');
|
|
228
|
+
}
|
|
229
|
+
});
|
|
198
230
|
});
|
|
199
231
|
describe('CreateAccountUserResponseSchema', () => {
|
|
200
232
|
const validResponse = {
|
|
@@ -279,6 +311,7 @@ describe('AuthDto Schemas', () => {
|
|
|
279
311
|
const validLoginDto = {
|
|
280
312
|
emailOrUsername: 'john.doe@example.com',
|
|
281
313
|
password: 'password123',
|
|
314
|
+
recaptchaToken: 'test-recaptcha-token-123',
|
|
282
315
|
};
|
|
283
316
|
it('should validate a valid login DTO', () => {
|
|
284
317
|
const result = LoginDtoSchema.safeParse(validLoginDto);
|
|
@@ -288,7 +321,11 @@ describe('AuthDto Schemas', () => {
|
|
|
288
321
|
}
|
|
289
322
|
});
|
|
290
323
|
it('should accept any string as emailOrUsername', () => {
|
|
291
|
-
const dtoWithUsername =
|
|
324
|
+
const dtoWithUsername = {
|
|
325
|
+
emailOrUsername: 'invalid-email',
|
|
326
|
+
password: 'password123',
|
|
327
|
+
recaptchaToken: 'test-recaptcha-token-123',
|
|
328
|
+
};
|
|
292
329
|
const result = LoginDtoSchema.safeParse(dtoWithUsername);
|
|
293
330
|
expect(result.success).toBe(true);
|
|
294
331
|
if (result.success) {
|
|
@@ -298,6 +335,7 @@ describe('AuthDto Schemas', () => {
|
|
|
298
335
|
it('should reject missing emailOrUsername', () => {
|
|
299
336
|
const invalidDto = {
|
|
300
337
|
password: 'password123',
|
|
338
|
+
recaptchaToken: 'test-recaptcha-token-123',
|
|
301
339
|
};
|
|
302
340
|
const result = LoginDtoSchema.safeParse(invalidDto);
|
|
303
341
|
expect(result.success).toBe(false);
|
|
@@ -309,6 +347,7 @@ describe('AuthDto Schemas', () => {
|
|
|
309
347
|
it('should reject missing password', () => {
|
|
310
348
|
const invalidDto = {
|
|
311
349
|
emailOrUsername: 'john.doe@example.com',
|
|
350
|
+
recaptchaToken: 'test-recaptcha-token-123',
|
|
312
351
|
};
|
|
313
352
|
const result = LoginDtoSchema.safeParse(invalidDto);
|
|
314
353
|
expect(result.success).toBe(false);
|
|
@@ -321,6 +360,7 @@ describe('AuthDto Schemas', () => {
|
|
|
321
360
|
const dtoWithEmptyPassword = {
|
|
322
361
|
emailOrUsername: 'john.doe@example.com',
|
|
323
362
|
password: '',
|
|
363
|
+
recaptchaToken: 'test-recaptcha-token-123',
|
|
324
364
|
};
|
|
325
365
|
const result = LoginDtoSchema.safeParse(dtoWithEmptyPassword);
|
|
326
366
|
expect(result.success).toBe(true);
|
|
@@ -332,6 +372,7 @@ describe('AuthDto Schemas', () => {
|
|
|
332
372
|
const specialEmailDto = {
|
|
333
373
|
emailOrUsername: 'josé.óconnor+test@example.com',
|
|
334
374
|
password: 'password123',
|
|
375
|
+
recaptchaToken: 'test-recaptcha-token-123',
|
|
335
376
|
};
|
|
336
377
|
const result = LoginDtoSchema.safeParse(specialEmailDto);
|
|
337
378
|
expect(result.success).toBe(true);
|
|
@@ -339,6 +380,27 @@ describe('AuthDto Schemas', () => {
|
|
|
339
380
|
expect(result.data.emailOrUsername).toBe('josé.óconnor+test@example.com');
|
|
340
381
|
}
|
|
341
382
|
});
|
|
383
|
+
it('should reject missing recaptchaToken', () => {
|
|
384
|
+
const invalidDto = {
|
|
385
|
+
emailOrUsername: 'john.doe@example.com',
|
|
386
|
+
password: 'password123',
|
|
387
|
+
};
|
|
388
|
+
const result = LoginDtoSchema.safeParse(invalidDto);
|
|
389
|
+
expect(result.success).toBe(false);
|
|
390
|
+
if (!result.success) {
|
|
391
|
+
expect(result.error.issues[0].path).toEqual(['recaptchaToken']);
|
|
392
|
+
expect(result.error.issues[0].code).toBe('invalid_type');
|
|
393
|
+
}
|
|
394
|
+
});
|
|
395
|
+
it('should reject empty recaptchaToken', () => {
|
|
396
|
+
const invalidDto = Object.assign(Object.assign({}, validLoginDto), { recaptchaToken: '' });
|
|
397
|
+
const result = LoginDtoSchema.safeParse(invalidDto);
|
|
398
|
+
expect(result.success).toBe(false);
|
|
399
|
+
if (!result.success) {
|
|
400
|
+
expect(result.error.issues[0].path).toEqual(['recaptchaToken']);
|
|
401
|
+
expect(result.error.issues[0].message).toBe('reCAPTCHA token is required');
|
|
402
|
+
}
|
|
403
|
+
});
|
|
342
404
|
});
|
|
343
405
|
describe('LoginResponseSchema', () => {
|
|
344
406
|
const validLoginResponse = {
|