Skip to content

Commit d97c934

Browse files
authored
feat(e2e): Add ensureBapiUserExists method (#5647)
1 parent 45486ac commit d97c934

2 files changed

Lines changed: 14 additions & 5 deletions

File tree

integration/testUtils/usersService.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,10 @@ export type FakeOrganization = {
5353
export type UserService = {
5454
createFakeUser: (options?: FakeUserOptions) => FakeUser;
5555
createBapiUser: (fakeUser: FakeUser) => Promise<User>;
56+
/**
57+
* Creates a BAPI user if it doesn't exist, otherwise returns the existing user.
58+
*/
59+
getOrCreateUser: (fakeUser: FakeUser) => Promise<User>;
5660
deleteIfExists: (opts: { id?: string; email?: string }) => Promise<void>;
5761
createFakeOrganization: (userId: string) => Promise<FakeOrganization>;
5862
getUser: (opts: { id?: string; email?: string }) => Promise<User | undefined>;
@@ -102,6 +106,13 @@ export const createUserService = (clerkClient: ClerkClient) => {
102106
skipPasswordRequirement: fakeUser.password === undefined,
103107
});
104108
},
109+
getOrCreateUser: async fakeUser => {
110+
const existingUser = await self.getUser({ email: fakeUser.email });
111+
if (existingUser) {
112+
return existingUser;
113+
}
114+
return await self.createBapiUser(fakeUser);
115+
},
105116
deleteIfExists: async (opts: { id?: string; email?: string }) => {
106117
let id = opts.id;
107118

integration/tests/oauth-flows.test.ts

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -117,11 +117,9 @@ testAgainstRunningApps({ withEnv: [appConfigs.envs.withEmailCodes] })('oauth flo
117117
test('sign in modal to sign up modal to transfer respects original forceRedirectUrl', async ({ page, context }) => {
118118
const u = createTestUtils({ app, page, context });
119119

120-
try {
121-
await u.services.users.createBapiUser(fakeUser);
122-
} catch {
123-
// User already exists, so we don't need to create it
124-
}
120+
// The user already exists on the OAuth provider instance, but we want to make sure that the user is created on the
121+
// app instance as well so that their sign up is transferred to a sign in.
122+
await u.services.users.getOrCreateUser(fakeUser);
125123

126124
await u.page.goToRelative('/buttons');
127125
await u.page.waitForClerkJsLoaded();

0 commit comments

Comments
 (0)