@workos-inc/node 3.3.0 → 3.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/users/fixtures/list-users.json +0 -1
- package/lib/users/fixtures/user.json +1 -2
- package/lib/users/interfaces/delete-user-options.interface.d.ts +3 -0
- package/lib/users/interfaces/index.d.ts +3 -4
- package/lib/users/interfaces/index.js +3 -4
- package/lib/users/interfaces/list-users-options.interface.d.ts +0 -1
- package/lib/users/interfaces/send-verification-email-options.d.ts +3 -0
- package/lib/users/interfaces/update-user-options.interface.d.ts +2 -2
- package/lib/users/interfaces/user.interface.d.ts +4 -25
- package/lib/users/interfaces/verify-email-code-options.interface.d.ts +7 -0
- package/lib/users/serializers/index.d.ts +0 -3
- package/lib/users/serializers/index.js +0 -3
- package/lib/users/serializers/update-user-options.serializer.js +1 -1
- package/lib/users/serializers/user.serializer.js +10 -20
- package/lib/users/users.d.ts +9 -7
- package/lib/users/users.js +12 -27
- package/lib/users/users.spec.js +54 -71
- package/lib/workos.js +1 -1
- package/package.json +1 -1
- package/lib/users/exceptions/index.d.ts +0 -4
- package/lib/users/exceptions/index.js +0 -10
- package/lib/users/interfaces/create-email-verification-challenge-options.interface.d.ts +0 -16
- package/lib/users/interfaces/revoke-all-sessions-for-user-options.interface.d.ts +0 -3
- package/lib/users/interfaces/revoke-session-options.interface.d.ts +0 -15
- package/lib/users/interfaces/verify-session.interface.d.ts +0 -18
- package/lib/users/interfaces/verify-session.interface.js +0 -2
- package/lib/users/serializers/create-email-verification-challenge.serializer.d.ts +0 -2
- package/lib/users/serializers/create-email-verification-challenge.serializer.js +0 -9
- package/lib/users/serializers/revoke-session-options.serializer.d.ts +0 -2
- package/lib/users/serializers/revoke-session-options.serializer.js +0 -14
- package/lib/users/serializers/verify-session.serializer.d.ts +0 -3
- package/lib/users/serializers/verify-session.serializer.js +0 -15
- /package/lib/users/interfaces/{create-email-verification-challenge-options.interface.js → delete-user-options.interface.js} +0 -0
- /package/lib/users/interfaces/{revoke-all-sessions-for-user-options.interface.js → send-verification-email-options.js} +0 -0
- /package/lib/users/interfaces/{revoke-session-options.interface.js → verify-email-code-options.interface.js} +0 -0
|
@@ -4,18 +4,17 @@ export * from './authenticate-user-with-password-options.interface';
|
|
|
4
4
|
export * from './authenticate-user-with-token-options.interface';
|
|
5
5
|
export * from './authentication-response.interface';
|
|
6
6
|
export * from './complete-password-reset-options.interface';
|
|
7
|
-
export * from './create-email-verification-challenge-options.interface';
|
|
8
7
|
export * from './create-password-reset-challenge-options.interface';
|
|
9
8
|
export * from './create-user-options.interface';
|
|
9
|
+
export * from './delete-user-options.interface';
|
|
10
10
|
export * from './enroll-user-in-mfa-factor.interface';
|
|
11
11
|
export * from './list-users-options.interface';
|
|
12
12
|
export * from './magic-auth-challenge.interface';
|
|
13
13
|
export * from './remove-user-from-organization-options.interface';
|
|
14
|
-
export * from './revoke-all-sessions-for-user-options.interface';
|
|
15
|
-
export * from './revoke-session-options.interface';
|
|
16
14
|
export * from './send-magic-auth-code-options.interface';
|
|
15
|
+
export * from './send-verification-email-options';
|
|
17
16
|
export * from './session.interface';
|
|
18
17
|
export * from './update-user-options.interface';
|
|
19
18
|
export * from './update-user-password-options.interface';
|
|
20
19
|
export * from './user.interface';
|
|
21
|
-
export * from './verify-
|
|
20
|
+
export * from './verify-email-code-options.interface';
|
|
@@ -20,18 +20,17 @@ __exportStar(require("./authenticate-user-with-password-options.interface"), exp
|
|
|
20
20
|
__exportStar(require("./authenticate-user-with-token-options.interface"), exports);
|
|
21
21
|
__exportStar(require("./authentication-response.interface"), exports);
|
|
22
22
|
__exportStar(require("./complete-password-reset-options.interface"), exports);
|
|
23
|
-
__exportStar(require("./create-email-verification-challenge-options.interface"), exports);
|
|
24
23
|
__exportStar(require("./create-password-reset-challenge-options.interface"), exports);
|
|
25
24
|
__exportStar(require("./create-user-options.interface"), exports);
|
|
25
|
+
__exportStar(require("./delete-user-options.interface"), exports);
|
|
26
26
|
__exportStar(require("./enroll-user-in-mfa-factor.interface"), exports);
|
|
27
27
|
__exportStar(require("./list-users-options.interface"), exports);
|
|
28
28
|
__exportStar(require("./magic-auth-challenge.interface"), exports);
|
|
29
29
|
__exportStar(require("./remove-user-from-organization-options.interface"), exports);
|
|
30
|
-
__exportStar(require("./revoke-all-sessions-for-user-options.interface"), exports);
|
|
31
|
-
__exportStar(require("./revoke-session-options.interface"), exports);
|
|
32
30
|
__exportStar(require("./send-magic-auth-code-options.interface"), exports);
|
|
31
|
+
__exportStar(require("./send-verification-email-options"), exports);
|
|
33
32
|
__exportStar(require("./session.interface"), exports);
|
|
34
33
|
__exportStar(require("./update-user-options.interface"), exports);
|
|
35
34
|
__exportStar(require("./update-user-password-options.interface"), exports);
|
|
36
35
|
__exportStar(require("./user.interface"), exports);
|
|
37
|
-
__exportStar(require("./verify-
|
|
36
|
+
__exportStar(require("./verify-email-code-options.interface"), exports);
|
|
@@ -2,10 +2,10 @@ export interface UpdateUserOptions {
|
|
|
2
2
|
userId: string;
|
|
3
3
|
firstName?: string;
|
|
4
4
|
lastName?: string;
|
|
5
|
-
|
|
5
|
+
emailVerified?: boolean;
|
|
6
6
|
}
|
|
7
7
|
export interface SerializedUpdateUserOptions {
|
|
8
8
|
first_name?: string;
|
|
9
9
|
last_name?: string;
|
|
10
|
-
|
|
10
|
+
email_verified?: boolean;
|
|
11
11
|
}
|
|
@@ -1,41 +1,20 @@
|
|
|
1
|
-
export
|
|
2
|
-
export type UserResponse = ManagedUserResponse | UnmanagedUserResponse;
|
|
3
|
-
interface ManagedUser extends BaseUser {
|
|
4
|
-
userType: 'managed';
|
|
5
|
-
ssoProfileId: string | null;
|
|
6
|
-
}
|
|
7
|
-
interface ManagedUserResponse extends BaseUserResponse {
|
|
8
|
-
user_type: 'managed';
|
|
9
|
-
sso_profile_id: string | null;
|
|
10
|
-
}
|
|
11
|
-
interface UnmanagedUser extends BaseUser {
|
|
12
|
-
userType: 'unmanaged';
|
|
13
|
-
emailVerifiedAt: string | null;
|
|
14
|
-
googleOauthProfileId: string | null;
|
|
15
|
-
microsoftOauthProfileId: string | null;
|
|
16
|
-
}
|
|
17
|
-
interface UnmanagedUserResponse extends BaseUserResponse {
|
|
18
|
-
user_type: 'unmanaged';
|
|
19
|
-
email_verified_at: string | null;
|
|
20
|
-
google_oauth_profile_id: string | null;
|
|
21
|
-
microsoft_oauth_profile_id: string | null;
|
|
22
|
-
}
|
|
23
|
-
export interface BaseUser {
|
|
1
|
+
export interface User {
|
|
24
2
|
object: 'user';
|
|
25
3
|
id: string;
|
|
26
4
|
email: string;
|
|
5
|
+
emailVerified: boolean;
|
|
27
6
|
firstName: string | null;
|
|
28
7
|
lastName: string | null;
|
|
29
8
|
createdAt: string;
|
|
30
9
|
updatedAt: string;
|
|
31
10
|
}
|
|
32
|
-
interface
|
|
11
|
+
export interface UserResponse {
|
|
33
12
|
object: 'user';
|
|
34
13
|
id: string;
|
|
35
14
|
email: string;
|
|
15
|
+
email_verified: boolean;
|
|
36
16
|
first_name: string | null;
|
|
37
17
|
last_name: string | null;
|
|
38
18
|
created_at: string;
|
|
39
19
|
updated_at: string;
|
|
40
20
|
}
|
|
41
|
-
export {};
|
|
@@ -3,13 +3,10 @@ export * from './authenticate-user-with-magic-auth-options.serializer';
|
|
|
3
3
|
export * from './authenticate-user-with-password-options.serializer';
|
|
4
4
|
export * from './authentication-response.serializer';
|
|
5
5
|
export * from './complete-password-reset-options.serializer';
|
|
6
|
-
export * from './create-email-verification-challenge.serializer';
|
|
7
6
|
export * from './create-password-reset-challenge.serializer';
|
|
8
7
|
export * from './create-user-options.serializer';
|
|
9
|
-
export * from './revoke-session-options.serializer';
|
|
10
8
|
export * from './send-magic-auth-code-options.serializer';
|
|
11
9
|
export * from './session.serializer';
|
|
12
10
|
export * from './update-user-options.serializer';
|
|
13
11
|
export * from './update-user-password-options.serializer';
|
|
14
12
|
export * from './user.serializer';
|
|
15
|
-
export * from './verify-session.serializer';
|
|
@@ -19,13 +19,10 @@ __exportStar(require("./authenticate-user-with-magic-auth-options.serializer"),
|
|
|
19
19
|
__exportStar(require("./authenticate-user-with-password-options.serializer"), exports);
|
|
20
20
|
__exportStar(require("./authentication-response.serializer"), exports);
|
|
21
21
|
__exportStar(require("./complete-password-reset-options.serializer"), exports);
|
|
22
|
-
__exportStar(require("./create-email-verification-challenge.serializer"), exports);
|
|
23
22
|
__exportStar(require("./create-password-reset-challenge.serializer"), exports);
|
|
24
23
|
__exportStar(require("./create-user-options.serializer"), exports);
|
|
25
|
-
__exportStar(require("./revoke-session-options.serializer"), exports);
|
|
26
24
|
__exportStar(require("./send-magic-auth-code-options.serializer"), exports);
|
|
27
25
|
__exportStar(require("./session.serializer"), exports);
|
|
28
26
|
__exportStar(require("./update-user-options.serializer"), exports);
|
|
29
27
|
__exportStar(require("./update-user-password-options.serializer"), exports);
|
|
30
28
|
__exportStar(require("./user.serializer"), exports);
|
|
31
|
-
__exportStar(require("./verify-session.serializer"), exports);
|
|
@@ -4,6 +4,6 @@ exports.serializeUpdateUserOptions = void 0;
|
|
|
4
4
|
const serializeUpdateUserOptions = (options) => ({
|
|
5
5
|
first_name: options.firstName,
|
|
6
6
|
last_name: options.lastName,
|
|
7
|
-
|
|
7
|
+
email_verified: options.emailVerified,
|
|
8
8
|
});
|
|
9
9
|
exports.serializeUpdateUserOptions = serializeUpdateUserOptions;
|
|
@@ -1,24 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.deserializeUser = void 0;
|
|
4
|
-
const
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
};
|
|
15
|
-
switch (user.user_type) {
|
|
16
|
-
case 'managed':
|
|
17
|
-
return Object.assign(Object.assign({}, baseUser), { userType: user.user_type, ssoProfileId: user.sso_profile_id });
|
|
18
|
-
case 'unmanaged':
|
|
19
|
-
return Object.assign(Object.assign({}, baseUser), { userType: user.user_type, emailVerifiedAt: user.email_verified_at, googleOauthProfileId: user.google_oauth_profile_id, microsoftOauthProfileId: user.microsoft_oauth_profile_id });
|
|
20
|
-
default:
|
|
21
|
-
throw new exceptions_1.UnexpectedUserTypeException(user);
|
|
22
|
-
}
|
|
23
|
-
};
|
|
4
|
+
const deserializeUser = (user) => ({
|
|
5
|
+
object: user.object,
|
|
6
|
+
id: user.id,
|
|
7
|
+
email: user.email,
|
|
8
|
+
emailVerified: user.email_verified,
|
|
9
|
+
firstName: user.first_name,
|
|
10
|
+
lastName: user.last_name,
|
|
11
|
+
createdAt: user.created_at,
|
|
12
|
+
updatedAt: user.updated_at,
|
|
13
|
+
});
|
|
24
14
|
exports.deserializeUser = deserializeUser;
|
package/lib/users/users.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { WorkOS } from '../workos';
|
|
2
2
|
import { AutoPaginatable } from '../common/utils/pagination';
|
|
3
|
-
import { AddUserToOrganizationOptions, AuthenticateUserWithMagicAuthOptions, AuthenticateUserWithPasswordOptions,
|
|
3
|
+
import { AddUserToOrganizationOptions, AuthenticateUserWithCodeOptions, AuthenticateUserWithMagicAuthOptions, AuthenticateUserWithPasswordOptions, AuthenticationResponse, CompletePasswordResetOptions, CreatePasswordResetChallengeOptions, CreatePasswordResetChallengeResponse, CreateUserOptions, DeleteUserOptions, EnrollUserInMfaFactorOptions, ListUsersOptions, RemoveUserFromOrganizationOptions, SendMagicAuthCodeOptions, SendVerificationEmailOptions, UpdateUserOptions, UpdateUserPasswordOptions, User, VerifyEmailCodeOptions } from './interfaces';
|
|
4
4
|
import { Challenge, Factor } from '../mfa/interfaces';
|
|
5
5
|
export declare class Users {
|
|
6
6
|
private readonly workos;
|
|
@@ -11,12 +11,13 @@ export declare class Users {
|
|
|
11
11
|
authenticateUserWithMagicAuth(payload: AuthenticateUserWithMagicAuthOptions): Promise<AuthenticationResponse>;
|
|
12
12
|
authenticateUserWithPassword(payload: AuthenticateUserWithPasswordOptions): Promise<AuthenticationResponse>;
|
|
13
13
|
authenticateUserWithCode(payload: AuthenticateUserWithCodeOptions): Promise<AuthenticationResponse>;
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
14
|
+
sendVerificationEmail({ userId, }: SendVerificationEmailOptions): Promise<{
|
|
15
|
+
user: User;
|
|
16
|
+
}>;
|
|
17
|
+
sendMagicAuthCode(options: SendMagicAuthCodeOptions): Promise<{
|
|
18
|
+
user: User;
|
|
19
|
+
}>;
|
|
20
|
+
verifyEmailCode({ code, userId, }: VerifyEmailCodeOptions): Promise<User>;
|
|
20
21
|
createPasswordResetChallenge(payload: CreatePasswordResetChallengeOptions): Promise<CreatePasswordResetChallengeResponse>;
|
|
21
22
|
completePasswordReset(payload: CompletePasswordResetOptions): Promise<User>;
|
|
22
23
|
addUserToOrganization({ userId, organizationId, }: AddUserToOrganizationOptions): Promise<User>;
|
|
@@ -27,4 +28,5 @@ export declare class Users {
|
|
|
27
28
|
authenticationFactor: Factor;
|
|
28
29
|
authenticationChallenge: Challenge;
|
|
29
30
|
}>;
|
|
31
|
+
deleteUser(payload: DeleteUserOptions): Promise<void>;
|
|
30
32
|
}
|
package/lib/users/users.js
CHANGED
|
@@ -54,42 +54,22 @@ class Users {
|
|
|
54
54
|
return (0, serializers_1.deserializeAuthenticationResponse)(data);
|
|
55
55
|
});
|
|
56
56
|
}
|
|
57
|
-
|
|
57
|
+
sendVerificationEmail({ userId, }) {
|
|
58
58
|
return __awaiter(this, void 0, void 0, function* () {
|
|
59
|
-
const { data } = yield this.workos.post(
|
|
60
|
-
return (0, serializers_1.
|
|
61
|
-
});
|
|
62
|
-
}
|
|
63
|
-
revokeSession(payload) {
|
|
64
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
65
|
-
const { data } = yield this.workos.post('/users/sessions/revocations', (0, serializers_1.serializeRevokeSessionOptions)(payload));
|
|
66
|
-
return data;
|
|
67
|
-
});
|
|
68
|
-
}
|
|
69
|
-
revokeAllSessionsForUser({ userId, }) {
|
|
70
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
71
|
-
const { data } = yield this.workos.delete(`/users/${userId}/sessions`);
|
|
72
|
-
return data;
|
|
73
|
-
});
|
|
74
|
-
}
|
|
75
|
-
createEmailVerificationChallenge({ userId, verificationUrl, }) {
|
|
76
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
77
|
-
const { data } = yield this.workos.post(`/users/${userId}/email_verification_challenge`, {
|
|
78
|
-
verification_url: verificationUrl,
|
|
79
|
-
});
|
|
80
|
-
return (0, serializers_1.deserializeCreateEmailVerificationChallengeResponse)(data);
|
|
59
|
+
const { data } = yield this.workos.post(`/users/${userId}/send_verification_email`, {});
|
|
60
|
+
return { user: (0, serializers_1.deserializeUser)(data.user) };
|
|
81
61
|
});
|
|
82
62
|
}
|
|
83
63
|
sendMagicAuthCode(options) {
|
|
84
64
|
return __awaiter(this, void 0, void 0, function* () {
|
|
85
65
|
const { data } = yield this.workos.post('/users/magic_auth/send', (0, serializers_1.serializeSendMagicAuthCodeOptions)(options));
|
|
86
|
-
return data;
|
|
66
|
+
return { user: (0, serializers_1.deserializeUser)(data.user) };
|
|
87
67
|
});
|
|
88
68
|
}
|
|
89
|
-
|
|
69
|
+
verifyEmailCode({ code, userId, }) {
|
|
90
70
|
return __awaiter(this, void 0, void 0, function* () {
|
|
91
|
-
const { data } = yield this.workos.post(
|
|
92
|
-
|
|
71
|
+
const { data } = yield this.workos.post(`/users/${userId}/verify_email_code`, {
|
|
72
|
+
code,
|
|
93
73
|
});
|
|
94
74
|
return (0, serializers_1.deserializeUser)(data);
|
|
95
75
|
});
|
|
@@ -141,5 +121,10 @@ class Users {
|
|
|
141
121
|
};
|
|
142
122
|
});
|
|
143
123
|
}
|
|
124
|
+
deleteUser(payload) {
|
|
125
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
126
|
+
yield this.workos.delete(`/users/${payload.userId}`);
|
|
127
|
+
});
|
|
128
|
+
}
|
|
144
129
|
}
|
|
145
130
|
exports.Users = Users;
|
package/lib/users/users.spec.js
CHANGED
|
@@ -34,8 +34,7 @@ describe('UserManagement', () => {
|
|
|
34
34
|
email: 'test01@example.com',
|
|
35
35
|
firstName: 'Test 01',
|
|
36
36
|
lastName: 'User',
|
|
37
|
-
|
|
38
|
-
emailVerifiedAt: '2023-07-17T20:07:20.055Z',
|
|
37
|
+
emailVerified: true,
|
|
39
38
|
});
|
|
40
39
|
}));
|
|
41
40
|
});
|
|
@@ -63,14 +62,12 @@ describe('UserManagement', () => {
|
|
|
63
62
|
yield workos.users.listUsers({
|
|
64
63
|
email: 'foo@example.com',
|
|
65
64
|
organization: 'org_someorg',
|
|
66
|
-
type: 'managed',
|
|
67
65
|
after: 'user_01H5JQDV7R7ATEYZDEG0W5PRYS',
|
|
68
66
|
limit: 10,
|
|
69
67
|
});
|
|
70
68
|
expect(mock.history.get[0].params).toEqual({
|
|
71
69
|
email: 'foo@example.com',
|
|
72
70
|
organization: 'org_someorg',
|
|
73
|
-
type: 'managed',
|
|
74
71
|
after: 'user_01H5JQDV7R7ATEYZDEG0W5PRYS',
|
|
75
72
|
limit: 10,
|
|
76
73
|
order: 'desc',
|
|
@@ -93,8 +90,7 @@ describe('UserManagement', () => {
|
|
|
93
90
|
email: 'test01@example.com',
|
|
94
91
|
firstName: 'Test 01',
|
|
95
92
|
lastName: 'User',
|
|
96
|
-
|
|
97
|
-
emailVerifiedAt: '2023-07-17T20:07:20.055Z',
|
|
93
|
+
emailVerified: true,
|
|
98
94
|
createdAt: '2023-07-18T02:07:19.911Z',
|
|
99
95
|
updatedAt: '2023-07-18T02:07:19.911Z',
|
|
100
96
|
});
|
|
@@ -172,77 +168,38 @@ describe('UserManagement', () => {
|
|
|
172
168
|
});
|
|
173
169
|
}));
|
|
174
170
|
});
|
|
175
|
-
describe('
|
|
176
|
-
it('sends a request to verify the session', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
177
|
-
mock.onPost('/users/sessions/verify').reply(200, {
|
|
178
|
-
user: user_json_1.default,
|
|
179
|
-
session: session_json_1.default,
|
|
180
|
-
});
|
|
181
|
-
const resp = yield workos.users.verifySession({
|
|
182
|
-
clientId: 'proj_something',
|
|
183
|
-
token: 'really-long-token',
|
|
184
|
-
});
|
|
185
|
-
expect(mock.history.post[0].url).toEqual('/users/sessions/verify');
|
|
186
|
-
expect(resp).toMatchObject({
|
|
187
|
-
user: {
|
|
188
|
-
email: 'test01@example.com',
|
|
189
|
-
},
|
|
190
|
-
session: {
|
|
191
|
-
id: 'session_01H5K05VP5CPCXJA5Z7G191GS4',
|
|
192
|
-
token: 'really-long-token',
|
|
193
|
-
},
|
|
194
|
-
});
|
|
195
|
-
}));
|
|
196
|
-
});
|
|
197
|
-
describe('revokeSession', () => {
|
|
198
|
-
it('can revoke with the session_id', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
199
|
-
mock.onPost('/users/sessions/revocations').reply(200, true);
|
|
200
|
-
const revoked = yield workos.users.revokeSession({
|
|
201
|
-
sessionId: 'session_01H5K05VP5CPCXJA5Z7G191GS4',
|
|
202
|
-
});
|
|
203
|
-
expect(mock.history.post[0].url).toEqual('/users/sessions/revocations');
|
|
204
|
-
expect(revoked).toEqual(true);
|
|
205
|
-
}));
|
|
206
|
-
it('can revoke with the session_token', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
207
|
-
mock.onPost('/users/sessions/revocations').reply(200, true);
|
|
208
|
-
const revoked = yield workos.users.revokeSession({
|
|
209
|
-
sessionToken: 'really-long-token',
|
|
210
|
-
});
|
|
211
|
-
expect(mock.history.post[0].url).toEqual('/users/sessions/revocations');
|
|
212
|
-
expect(revoked).toEqual(true);
|
|
213
|
-
}));
|
|
214
|
-
});
|
|
215
|
-
describe('revokeAllSessionsForUser', () => {
|
|
216
|
-
it('sends a revokeAllSessionsForUser request', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
217
|
-
mock.onDelete(`/users/${userId}/sessions`).reply(200, true);
|
|
218
|
-
const revoked = yield workos.users.revokeAllSessionsForUser({ userId });
|
|
219
|
-
expect(mock.history.delete[0].url).toEqual(`/users/${userId}/sessions`);
|
|
220
|
-
expect(revoked).toEqual(true);
|
|
221
|
-
}));
|
|
222
|
-
});
|
|
223
|
-
describe('createEmailVerificationChallenge', () => {
|
|
171
|
+
describe('sendVerificationEmail', () => {
|
|
224
172
|
it('sends a Create Email Verification Challenge request', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
225
|
-
mock
|
|
226
|
-
|
|
227
|
-
user: user_json_1.default
|
|
228
|
-
|
|
229
|
-
const resp = yield workos.users.createEmailVerificationChallenge({
|
|
173
|
+
mock
|
|
174
|
+
.onPost(`/users/${userId}/send_verification_email`)
|
|
175
|
+
.reply(200, { user: user_json_1.default });
|
|
176
|
+
const resp = yield workos.users.sendVerificationEmail({
|
|
230
177
|
userId,
|
|
231
|
-
verificationUrl: 'https://example.com/verify-email',
|
|
232
178
|
});
|
|
233
|
-
expect(mock.history.post[0].url).toEqual(`/users/${userId}/
|
|
179
|
+
expect(mock.history.post[0].url).toEqual(`/users/${userId}/send_verification_email`);
|
|
234
180
|
expect(resp).toMatchObject({
|
|
235
|
-
token: 'email-verification-challenge',
|
|
236
181
|
user: {
|
|
182
|
+
createdAt: '2023-07-18T02:07:19.911Z',
|
|
237
183
|
email: 'test01@example.com',
|
|
184
|
+
emailVerified: true,
|
|
185
|
+
firstName: 'Test 01',
|
|
186
|
+
id: 'user_01H5JQDV7R7ATEYZDEG0W5PRYS',
|
|
187
|
+
lastName: 'User',
|
|
188
|
+
object: 'user',
|
|
189
|
+
updatedAt: '2023-07-18T02:07:19.911Z',
|
|
238
190
|
},
|
|
239
191
|
});
|
|
240
192
|
}));
|
|
241
|
-
describe('
|
|
193
|
+
describe('verifyEmailCode', () => {
|
|
242
194
|
it('sends a Complete Email Verification request', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
243
|
-
mock
|
|
244
|
-
|
|
245
|
-
|
|
195
|
+
mock
|
|
196
|
+
.onPost(`/users/user_123/verify_email_code`)
|
|
197
|
+
.reply(200, user_json_1.default);
|
|
198
|
+
const resp = yield workos.users.verifyEmailCode({
|
|
199
|
+
userId: 'user_123',
|
|
200
|
+
code: '123456',
|
|
201
|
+
});
|
|
202
|
+
expect(mock.history.post[0].url).toEqual(`/users/user_123/verify_email_code`);
|
|
246
203
|
expect(resp).toMatchObject({
|
|
247
204
|
email: 'test01@example.com',
|
|
248
205
|
});
|
|
@@ -256,14 +213,30 @@ describe('UserManagement', () => {
|
|
|
256
213
|
email_address: 'bob.loblaw@example.com',
|
|
257
214
|
})
|
|
258
215
|
.reply(200, {
|
|
259
|
-
|
|
216
|
+
user: {
|
|
217
|
+
object: 'user',
|
|
218
|
+
email: 'test01@example.com',
|
|
219
|
+
first_name: 'Test 01',
|
|
220
|
+
last_name: 'User',
|
|
221
|
+
email_verified: true,
|
|
222
|
+
created_at: '2023-07-18T02:07:19.911Z',
|
|
223
|
+
updated_at: '2023-07-18T02:07:19.911Z',
|
|
224
|
+
},
|
|
260
225
|
});
|
|
261
226
|
const response = yield workos.users.sendMagicAuthCode({
|
|
262
227
|
emailAddress: 'bob.loblaw@example.com',
|
|
263
228
|
});
|
|
264
229
|
expect(mock.history.post[0].url).toEqual('/users/magic_auth/send');
|
|
265
230
|
expect(response).toMatchObject({
|
|
266
|
-
|
|
231
|
+
user: {
|
|
232
|
+
object: 'user',
|
|
233
|
+
email: 'test01@example.com',
|
|
234
|
+
firstName: 'Test 01',
|
|
235
|
+
lastName: 'User',
|
|
236
|
+
emailVerified: true,
|
|
237
|
+
createdAt: '2023-07-18T02:07:19.911Z',
|
|
238
|
+
updatedAt: '2023-07-18T02:07:19.911Z',
|
|
239
|
+
},
|
|
267
240
|
});
|
|
268
241
|
}));
|
|
269
242
|
});
|
|
@@ -335,13 +308,13 @@ describe('UserManagement', () => {
|
|
|
335
308
|
userId,
|
|
336
309
|
firstName: 'Dane',
|
|
337
310
|
lastName: 'Williams',
|
|
338
|
-
|
|
311
|
+
emailVerified: true,
|
|
339
312
|
});
|
|
340
313
|
expect(mock.history.put[0].url).toEqual(`/users/${userId}`);
|
|
341
314
|
expect(JSON.parse(mock.history.put[0].data)).toEqual({
|
|
342
315
|
first_name: 'Dane',
|
|
343
316
|
last_name: 'Williams',
|
|
344
|
-
|
|
317
|
+
email_verified: true,
|
|
345
318
|
});
|
|
346
319
|
expect(resp).toMatchObject({
|
|
347
320
|
email: 'test01@example.com',
|
|
@@ -438,4 +411,14 @@ describe('UserManagement', () => {
|
|
|
438
411
|
});
|
|
439
412
|
}));
|
|
440
413
|
});
|
|
414
|
+
describe('deleteUser', () => {
|
|
415
|
+
it('sends a deleteUser request', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
416
|
+
mock.onDelete(`/users/${userId}`).reply(200);
|
|
417
|
+
const resp = yield workos.users.deleteUser({
|
|
418
|
+
userId,
|
|
419
|
+
});
|
|
420
|
+
expect(mock.history.delete[0].url).toEqual(`/users/${userId}`);
|
|
421
|
+
expect(resp).toBeUndefined();
|
|
422
|
+
}));
|
|
423
|
+
});
|
|
441
424
|
});
|
package/lib/workos.js
CHANGED
|
@@ -27,7 +27,7 @@ const mfa_1 = require("./mfa/mfa");
|
|
|
27
27
|
const audit_logs_1 = require("./audit-logs/audit-logs");
|
|
28
28
|
const users_1 = require("./users/users");
|
|
29
29
|
const bad_request_exception_1 = require("./common/exceptions/bad-request.exception");
|
|
30
|
-
const VERSION = '3.
|
|
30
|
+
const VERSION = '3.5.0';
|
|
31
31
|
const DEFAULT_HOSTNAME = 'api.workos.com';
|
|
32
32
|
class WorkOS {
|
|
33
33
|
constructor(key, options = {}) {
|
package/package.json
CHANGED
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.UnexpectedUserTypeException = void 0;
|
|
4
|
-
class UnexpectedUserTypeException extends Error {
|
|
5
|
-
constructor(user) {
|
|
6
|
-
super();
|
|
7
|
-
this.message = `Unsupported user type: ${user.user_type} received from API.`;
|
|
8
|
-
}
|
|
9
|
-
}
|
|
10
|
-
exports.UnexpectedUserTypeException = UnexpectedUserTypeException;
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { User, UserResponse } from './user.interface';
|
|
2
|
-
export interface CreateEmailVerificationChallengeOptions {
|
|
3
|
-
userId: string;
|
|
4
|
-
verificationUrl: string;
|
|
5
|
-
}
|
|
6
|
-
export interface SerializedCreateEmailVerificationChallengeOptions {
|
|
7
|
-
verification_url: string;
|
|
8
|
-
}
|
|
9
|
-
export interface CreateEmailVerificationChallengeResponse {
|
|
10
|
-
token: string;
|
|
11
|
-
user: User;
|
|
12
|
-
}
|
|
13
|
-
export interface CreateEmailVerificationChallengeResponseResponse {
|
|
14
|
-
token: string;
|
|
15
|
-
user: UserResponse;
|
|
16
|
-
}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
export type RevokeSessionOptions = SessionId | SessionToken;
|
|
2
|
-
export type SerializedRevokeSessionOptions = SerializedSessionId | SerializedSessionToken;
|
|
3
|
-
interface SessionId {
|
|
4
|
-
sessionId: string;
|
|
5
|
-
}
|
|
6
|
-
interface SerializedSessionId {
|
|
7
|
-
session_id: string;
|
|
8
|
-
}
|
|
9
|
-
interface SessionToken {
|
|
10
|
-
sessionToken: string;
|
|
11
|
-
}
|
|
12
|
-
interface SerializedSessionToken {
|
|
13
|
-
session_token: string;
|
|
14
|
-
}
|
|
15
|
-
export {};
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { User, UserResponse } from './user.interface';
|
|
2
|
-
import { Session, SessionResponse } from './session.interface';
|
|
3
|
-
export interface VerifySessionOptions {
|
|
4
|
-
token: string;
|
|
5
|
-
clientId: string;
|
|
6
|
-
}
|
|
7
|
-
export interface SerializedVerifySessionOptions {
|
|
8
|
-
token: string;
|
|
9
|
-
client_id: string;
|
|
10
|
-
}
|
|
11
|
-
export interface VerifySessionResponse {
|
|
12
|
-
session: Session;
|
|
13
|
-
user: User;
|
|
14
|
-
}
|
|
15
|
-
export interface VerifySessionResponseResponse {
|
|
16
|
-
session: SessionResponse;
|
|
17
|
-
user: UserResponse;
|
|
18
|
-
}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import { CreateEmailVerificationChallengeResponse, CreateEmailVerificationChallengeResponseResponse } from '../interfaces';
|
|
2
|
-
export declare const deserializeCreateEmailVerificationChallengeResponse: (createEmailVerificationChallengeResponse: CreateEmailVerificationChallengeResponseResponse) => CreateEmailVerificationChallengeResponse;
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.deserializeCreateEmailVerificationChallengeResponse = void 0;
|
|
4
|
-
const user_serializer_1 = require("./user.serializer");
|
|
5
|
-
const deserializeCreateEmailVerificationChallengeResponse = (createEmailVerificationChallengeResponse) => ({
|
|
6
|
-
token: createEmailVerificationChallengeResponse.token,
|
|
7
|
-
user: (0, user_serializer_1.deserializeUser)(createEmailVerificationChallengeResponse.user),
|
|
8
|
-
});
|
|
9
|
-
exports.deserializeCreateEmailVerificationChallengeResponse = deserializeCreateEmailVerificationChallengeResponse;
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.serializeRevokeSessionOptions = void 0;
|
|
4
|
-
const serializeRevokeSessionOptions = (options) => {
|
|
5
|
-
if ('sessionId' in options) {
|
|
6
|
-
return {
|
|
7
|
-
session_id: options.sessionId,
|
|
8
|
-
};
|
|
9
|
-
}
|
|
10
|
-
return {
|
|
11
|
-
session_token: options.sessionToken,
|
|
12
|
-
};
|
|
13
|
-
};
|
|
14
|
-
exports.serializeRevokeSessionOptions = serializeRevokeSessionOptions;
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
import { SerializedVerifySessionOptions, VerifySessionOptions, VerifySessionResponse, VerifySessionResponseResponse } from '../interfaces';
|
|
2
|
-
export declare const deserializeVerifySessionResponse: (verifySessionResponse: VerifySessionResponseResponse) => VerifySessionResponse;
|
|
3
|
-
export declare const serializeVerifySessionOptions: (options: VerifySessionOptions) => SerializedVerifySessionOptions;
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.serializeVerifySessionOptions = exports.deserializeVerifySessionResponse = void 0;
|
|
4
|
-
const session_serializer_1 = require("./session.serializer");
|
|
5
|
-
const user_serializer_1 = require("./user.serializer");
|
|
6
|
-
const deserializeVerifySessionResponse = (verifySessionResponse) => ({
|
|
7
|
-
session: (0, session_serializer_1.deserializeSession)(verifySessionResponse.session),
|
|
8
|
-
user: (0, user_serializer_1.deserializeUser)(verifySessionResponse.user),
|
|
9
|
-
});
|
|
10
|
-
exports.deserializeVerifySessionResponse = deserializeVerifySessionResponse;
|
|
11
|
-
const serializeVerifySessionOptions = (options) => ({
|
|
12
|
-
token: options.token,
|
|
13
|
-
client_id: options.clientId,
|
|
14
|
-
});
|
|
15
|
-
exports.serializeVerifySessionOptions = serializeVerifySessionOptions;
|
|
File without changes
|
|
File without changes
|
|
File without changes
|