@@ -25,13 +25,90 @@ vi.mock('../../../utils/captcha/CaptchaChallenge', () => ({
2525 } ) ) ,
2626} ) ) ;
2727
28+ // Import the mocked CaptchaChallenge after mocking
29+ import { CaptchaChallenge } from '../../../utils/captcha/CaptchaChallenge' ;
30+
2831describe ( 'SignUp' , ( ) => {
2932 it ( 'can be serialized with JSON.stringify' , ( ) => {
3033 const signUp = new SignUp ( ) ;
3134 const snapshot = JSON . stringify ( signUp ) ;
3235 expect ( snapshot ) . toBeDefined ( ) ;
3336 } ) ;
3437
38+ describe ( 'create' , ( ) => {
39+ beforeEach ( ( ) => {
40+ SignUp . clerk = {
41+ __unstable__environment : {
42+ displayConfig : {
43+ captchaOauthBypass : [ ] ,
44+ } ,
45+ } ,
46+ } as any ;
47+ } ) ;
48+
49+ afterEach ( ( ) => {
50+ vi . clearAllMocks ( ) ;
51+ vi . unstubAllGlobals ( ) ;
52+ SignUp . clerk = { } as any ;
53+ } ) ;
54+
55+ it ( 'skips captcha challenge for oauth transfer when strategy is in captchaOauthBypass' , async ( ) => {
56+ const mockFetch = vi . fn ( ) . mockResolvedValue ( {
57+ client : null ,
58+ response : { id : 'signup_123' , status : 'missing_requirements' } ,
59+ } ) ;
60+ BaseResource . _fetch = mockFetch ;
61+ SignUp . clerk = {
62+ client : {
63+ signIn : {
64+ firstFactorVerification : {
65+ status : 'transferable' ,
66+ strategy : 'oauth_google' ,
67+ } ,
68+ } ,
69+ } ,
70+ __unstable__environment : {
71+ displayConfig : {
72+ captchaOauthBypass : [ 'oauth_google' , 'oauth_apple' ] ,
73+ } ,
74+ } ,
75+ } as any ;
76+
77+ const signUp = new SignUp ( ) ;
78+ await signUp . create ( { transfer : true } ) ;
79+
80+ expect ( CaptchaChallenge ) . not . toHaveBeenCalled ( ) ;
81+ } ) ;
82+
83+ it ( 'does not skip captcha challenge for enterprise_sso transfer' , async ( ) => {
84+ const mockFetch = vi . fn ( ) . mockResolvedValue ( {
85+ client : null ,
86+ response : { id : 'signup_123' , status : 'missing_requirements' } ,
87+ } ) ;
88+ BaseResource . _fetch = mockFetch ;
89+ SignUp . clerk = {
90+ client : {
91+ signIn : {
92+ firstFactorVerification : {
93+ status : 'transferable' ,
94+ strategy : 'enterprise_sso' ,
95+ } ,
96+ } ,
97+ } ,
98+ __unstable__environment : {
99+ displayConfig : {
100+ captchaOauthBypass : [ ] ,
101+ } ,
102+ } ,
103+ } as any ;
104+
105+ const signUp = new SignUp ( ) ;
106+ await signUp . create ( { transfer : true } ) ;
107+
108+ expect ( CaptchaChallenge ) . toHaveBeenCalledWith ( SignUp . clerk ) ;
109+ } ) ;
110+ } ) ;
111+
35112 describe ( 'SignUpFuture' , ( ) => {
36113 it ( 'can be serialized with JSON.stringify' , ( ) => {
37114 const signUp = new SignUp ( ) ;
0 commit comments