@@ -1094,7 +1094,67 @@ describe('Clerk singleton', () => {
10941094 await sut . handleRedirectCallback ( ) ;
10951095
10961096 await waitFor ( ( ) => {
1097- expect ( mockSignUpCreate ) . toHaveBeenCalledWith ( { transfer : true } ) ;
1097+ expect ( mockSignUpCreate ) . toHaveBeenCalledWith ( { transfer : true , unsafeMetadata : undefined } ) ;
1098+ expect ( mockSetActive ) . toHaveBeenCalled ( ) ;
1099+ } ) ;
1100+ } ) ;
1101+
1102+ it ( 'passes unsafeMetadata to signUp.create during OAuth transfer flow' , async ( ) => {
1103+ mockEnvironmentFetch . mockReturnValue (
1104+ Promise . resolve ( {
1105+ authConfig : { } ,
1106+ userSettings : mockUserSettings ,
1107+ displayConfig : mockDisplayConfig ,
1108+ isSingleSession : ( ) => false ,
1109+ isProduction : ( ) => false ,
1110+ isDevelopmentOrStaging : ( ) => true ,
1111+ onWindowLocationHost : ( ) => false ,
1112+ } ) ,
1113+ ) ;
1114+
1115+ mockClientFetch . mockReturnValue (
1116+ Promise . resolve ( {
1117+ signedInSessions : [ ] ,
1118+ signIn : new SignIn ( {
1119+ status : 'needs_identifier' ,
1120+ first_factor_verification : {
1121+ status : 'transferable' ,
1122+ strategy : 'oauth_google' ,
1123+ external_verification_redirect_url : '' ,
1124+ error : {
1125+ code : 'external_account_not_found' ,
1126+ long_message : 'The External Account was not found.' ,
1127+ message : 'Invalid external account' ,
1128+ } ,
1129+ } ,
1130+ second_factor_verification : null ,
1131+ identifier : '' ,
1132+ user_data : null ,
1133+ created_session_id : null ,
1134+ created_user_id : null ,
1135+ } as any as SignInJSON ) ,
1136+ signUp : new SignUp ( null ) ,
1137+ } ) ,
1138+ ) ;
1139+
1140+ const mockSetActive = vi . fn ( ) ;
1141+ const mockSignUpCreate = vi
1142+ . fn ( )
1143+ . mockReturnValue ( Promise . resolve ( { status : 'complete' , createdSessionId : '123' } ) ) ;
1144+
1145+ const sut = new Clerk ( productionPublishableKey ) ;
1146+ await sut . load ( mockedLoadOptions ) ;
1147+ if ( ! sut . client ) {
1148+ fail ( 'we should always have a client' ) ;
1149+ }
1150+ sut . client . signUp . create = mockSignUpCreate ;
1151+ sut . setActive = mockSetActive ;
1152+
1153+ const unsafeMetadata = { foo : 'bar' , nested : { value : 123 } } ;
1154+ await sut . handleRedirectCallback ( { unsafeMetadata } ) ;
1155+
1156+ await waitFor ( ( ) => {
1157+ expect ( mockSignUpCreate ) . toHaveBeenCalledWith ( { transfer : true , unsafeMetadata } ) ;
10981158 expect ( mockSetActive ) . toHaveBeenCalled ( ) ;
10991159 } ) ;
11001160 } ) ;
0 commit comments