@@ -992,7 +992,67 @@ describe('Clerk singleton', () => {
992992 await sut . handleRedirectCallback ( ) ;
993993
994994 await waitFor ( ( ) => {
995- expect ( mockSignUpCreate ) . toHaveBeenCalledWith ( { transfer : true } ) ;
995+ expect ( mockSignUpCreate ) . toHaveBeenCalledWith ( { transfer : true , unsafeMetadata : undefined } ) ;
996+ expect ( mockSetActive ) . toHaveBeenCalled ( ) ;
997+ } ) ;
998+ } ) ;
999+
1000+ it ( 'passes unsafeMetadata to signUp.create during OAuth transfer flow' , async ( ) => {
1001+ mockEnvironmentFetch . mockReturnValue (
1002+ Promise . resolve ( {
1003+ authConfig : { } ,
1004+ userSettings : mockUserSettings ,
1005+ displayConfig : mockDisplayConfig ,
1006+ isSingleSession : ( ) => false ,
1007+ isProduction : ( ) => false ,
1008+ isDevelopmentOrStaging : ( ) => true ,
1009+ onWindowLocationHost : ( ) => false ,
1010+ } ) ,
1011+ ) ;
1012+
1013+ mockClientFetch . mockReturnValue (
1014+ Promise . resolve ( {
1015+ signedInSessions : [ ] ,
1016+ signIn : new SignIn ( {
1017+ status : 'needs_identifier' ,
1018+ first_factor_verification : {
1019+ status : 'transferable' ,
1020+ strategy : 'oauth_google' ,
1021+ external_verification_redirect_url : '' ,
1022+ error : {
1023+ code : 'external_account_not_found' ,
1024+ long_message : 'The External Account was not found.' ,
1025+ message : 'Invalid external account' ,
1026+ } ,
1027+ } ,
1028+ second_factor_verification : null ,
1029+ identifier : '' ,
1030+ user_data : null ,
1031+ created_session_id : null ,
1032+ created_user_id : null ,
1033+ } as any as SignInJSON ) ,
1034+ signUp : new SignUp ( null ) ,
1035+ } ) ,
1036+ ) ;
1037+
1038+ const mockSetActive = vi . fn ( ) ;
1039+ const mockSignUpCreate = vi
1040+ . fn ( )
1041+ . mockReturnValue ( Promise . resolve ( { status : 'complete' , createdSessionId : '123' } ) ) ;
1042+
1043+ const sut = new Clerk ( productionPublishableKey ) ;
1044+ await sut . load ( mockedLoadOptions ) ;
1045+ if ( ! sut . client ) {
1046+ fail ( 'we should always have a client' ) ;
1047+ }
1048+ sut . client . signUp . create = mockSignUpCreate ;
1049+ sut . setActive = mockSetActive ;
1050+
1051+ const unsafeMetadata = { foo : 'bar' , nested : { value : 123 } } ;
1052+ await sut . handleRedirectCallback ( { unsafeMetadata } ) ;
1053+
1054+ await waitFor ( ( ) => {
1055+ expect ( mockSignUpCreate ) . toHaveBeenCalledWith ( { transfer : true , unsafeMetadata } ) ;
9961056 expect ( mockSetActive ) . toHaveBeenCalled ( ) ;
9971057 } ) ;
9981058 } ) ;
0 commit comments