File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -53,6 +53,10 @@ export type FakeOrganization = {
5353export 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
Original file line number Diff line number Diff 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 ( ) ;
You can’t perform that action at this time.
0 commit comments