@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.
Files changed (39) hide show
  1. package/dist/cjs/index.d.ts +1 -0
  2. package/dist/cjs/index.js +1 -0
  3. package/dist/cjs/index.js.map +1 -1
  4. package/dist/cjs/model/account-invitation.dto.d.ts +18 -0
  5. package/dist/cjs/model/account-invitation.dto.js +20 -0
  6. package/dist/cjs/model/account-invitation.dto.js.map +1 -0
  7. package/dist/cjs/model/auth.dto.d.ts +2 -0
  8. package/dist/cjs/model/auth.dto.js +6 -0
  9. package/dist/cjs/model/auth.dto.js.map +1 -1
  10. package/dist/cjs/model/user.dto.js +4 -1
  11. package/dist/cjs/model/user.dto.js.map +1 -1
  12. package/dist/cjs/tests/account-invitation.dto.spec.d.ts +1 -0
  13. package/dist/cjs/tests/account-invitation.dto.spec.js +262 -0
  14. package/dist/cjs/tests/account-invitation.dto.spec.js.map +1 -0
  15. package/dist/cjs/tests/auth.dto.spec.js +63 -1
  16. package/dist/cjs/tests/auth.dto.spec.js.map +1 -1
  17. package/dist/cjs/tests/user.dto.spec.js +47 -0
  18. package/dist/cjs/tests/user.dto.spec.js.map +1 -1
  19. package/dist/cjs/tsconfig-cjs.tsbuildinfo +1 -1
  20. package/dist/esm/index.d.ts +1 -0
  21. package/dist/esm/index.js +1 -0
  22. package/dist/esm/index.js.map +1 -1
  23. package/dist/esm/model/account-invitation.dto.d.ts +18 -0
  24. package/dist/esm/model/account-invitation.dto.js +17 -0
  25. package/dist/esm/model/account-invitation.dto.js.map +1 -0
  26. package/dist/esm/model/auth.dto.d.ts +2 -0
  27. package/dist/esm/model/auth.dto.js +6 -0
  28. package/dist/esm/model/auth.dto.js.map +1 -1
  29. package/dist/esm/model/user.dto.js +4 -1
  30. package/dist/esm/model/user.dto.js.map +1 -1
  31. package/dist/esm/tests/account-invitation.dto.spec.d.ts +1 -0
  32. package/dist/esm/tests/account-invitation.dto.spec.js +260 -0
  33. package/dist/esm/tests/account-invitation.dto.spec.js.map +1 -0
  34. package/dist/esm/tests/auth.dto.spec.js +63 -1
  35. package/dist/esm/tests/auth.dto.spec.js.map +1 -1
  36. package/dist/esm/tests/user.dto.spec.js +47 -0
  37. package/dist/esm/tests/user.dto.spec.js.map +1 -1
  38. package/dist/esm/tsconfig.tsbuildinfo +1 -1
  39. package/package.json +1 -1
@@ -1,4 +1,5 @@
1
1
  export * from './model/account.dto';
2
+ export * from './model/account-invitation.dto';
2
3
  export * from './model/assignment.dto';
3
4
  export * from './model/auth.dto';
4
5
  export * from './model/user.dto';
package/dist/esm/index.js CHANGED
@@ -1,4 +1,5 @@
1
1
  export * from './model/account.dto';
2
+ export * from './model/account-invitation.dto';
2
3
  export * from './model/assignment.dto';
3
4
  export * from './model/auth.dto';
4
5
  export * from './model/user.dto';
@@ -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":"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"}
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.string().min(3, 'Username is required'),
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,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,sBAAsB,CAAC;IACnD,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"}
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":"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"}
@@ -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 = Object.assign(Object.assign({}, validLoginDto), { emailOrUsername: 'invalid-email' });
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 = {