@@ -20,6 +20,7 @@ import { SignUpAuthScreen } from "./sign-up-auth-screen";
2020import { createMockUI } from "../../tests/utils" ;
2121import { registerLocale } from "@firebase-ui/translations" ;
2222import { FirebaseUIProvider } from "@firebase-ui/react" ;
23+ import { MultiFactorResolver } from "firebase/auth" ;
2324
2425vi . mock ( "./sign-up-auth-form" , ( ) => ( {
2526 SignUpAuthForm : ( { onSignUp, onBackToSignInClick } : any ) => (
@@ -31,6 +32,10 @@ vi.mock("./sign-up-auth-form", () => ({
3132 ) ,
3233} ) ) ;
3334
35+ vi . mock ( "./multi-factor-auth-assertion-form" , ( ) => ( {
36+ MultiFactorAuthAssertionForm : ( ) => < div data-testid = "mfa-assertion-form" > MFA Assertion Form</ div > ,
37+ } ) ) ;
38+
3439describe ( "<SignUpAuthScreen />" , ( ) => {
3540 beforeEach ( ( ) => {
3641 vi . clearAllMocks ( ) ;
@@ -144,4 +149,89 @@ describe("<SignUpAuthScreen />", () => {
144149 expect ( screen . getByTestId ( "sign-up-auth-form" ) ) . toBeInTheDocument ( ) ;
145150 expect ( screen . queryByText ( "or" ) ) . not . toBeInTheDocument ( ) ;
146151 } ) ;
152+
153+ it ( "should render MultiFactorAuthAssertionForm when multiFactorResolver is present" , ( ) => {
154+ const mockResolver = {
155+ auth : { } as any ,
156+ session : null ,
157+ hints : [ ] ,
158+ } ;
159+ const mockUI = createMockUI ( {
160+ locale : registerLocale ( "test" , {
161+ labels : {
162+ signUp : "Register" ,
163+ } ,
164+ prompts : {
165+ enterDetailsToCreate : "Enter your details to create an account" ,
166+ } ,
167+ } ) ,
168+ } ) ;
169+ mockUI . get ( ) . setMultiFactorResolver ( mockResolver as unknown as MultiFactorResolver ) ;
170+
171+ render (
172+ < FirebaseUIProvider ui = { mockUI } >
173+ < SignUpAuthScreen />
174+ </ FirebaseUIProvider >
175+ ) ;
176+
177+ expect ( screen . getByTestId ( "mfa-assertion-form" ) ) . toBeInTheDocument ( ) ;
178+ expect ( screen . queryByTestId ( "sign-up-auth-form" ) ) . not . toBeInTheDocument ( ) ;
179+ } ) ;
180+
181+ it ( "should not render SignUpAuthForm when MFA resolver exists" , ( ) => {
182+ const mockResolver = {
183+ auth : { } as any ,
184+ session : null ,
185+ hints : [ ] ,
186+ } ;
187+ const mockUI = createMockUI ( {
188+ locale : registerLocale ( "test" , {
189+ labels : {
190+ signUp : "Register" ,
191+ } ,
192+ prompts : {
193+ enterDetailsToCreate : "Enter your details to create an account" ,
194+ } ,
195+ messages : {
196+ dividerOr : "or" ,
197+ } ,
198+ } ) ,
199+ } ) ;
200+ mockUI . get ( ) . setMultiFactorResolver ( mockResolver as unknown as MultiFactorResolver ) ;
201+
202+ render (
203+ < FirebaseUIProvider ui = { mockUI } >
204+ < SignUpAuthScreen >
205+ < div data-testid = "child-component" > Child Component</ div >
206+ </ SignUpAuthScreen >
207+ </ FirebaseUIProvider >
208+ ) ;
209+
210+ expect ( screen . queryByTestId ( "sign-up-auth-form" ) ) . not . toBeInTheDocument ( ) ;
211+ expect ( screen . getByTestId ( "mfa-assertion-form" ) ) . toBeInTheDocument ( ) ;
212+ expect ( screen . queryByText ( "or" ) ) . not . toBeInTheDocument ( ) ;
213+ expect ( screen . queryByTestId ( "child-component" ) ) . not . toBeInTheDocument ( ) ;
214+ } ) ;
215+
216+ it ( "should render SignUpAuthForm when MFA resolver is not present" , ( ) => {
217+ const mockUI = createMockUI ( {
218+ locale : registerLocale ( "test" , {
219+ labels : {
220+ signUp : "Register" ,
221+ } ,
222+ prompts : {
223+ enterDetailsToCreate : "Enter your details to create an account" ,
224+ } ,
225+ } ) ,
226+ } ) ;
227+
228+ render (
229+ < FirebaseUIProvider ui = { mockUI } >
230+ < SignUpAuthScreen />
231+ </ FirebaseUIProvider >
232+ ) ;
233+
234+ expect ( screen . getByTestId ( "sign-up-auth-form" ) ) . toBeInTheDocument ( ) ;
235+ expect ( screen . queryByTestId ( "mfa-assertion-form" ) ) . not . toBeInTheDocument ( ) ;
236+ } ) ;
147237} ) ;
0 commit comments