Skip to content

Conversation

mikehardy
Copy link
Collaborator

@mikehardy mikehardy commented Sep 1, 2025

Description

It has long irritated me that we could not test SMS MFA on iOS, and I was never certain it worked.

Now we have the ability with local/manual tests to auth against the cloud which allows for MFA testing.

Reviewer note: look at each commit separately, they each have one single idea for easy review

I extended the local TOTP test app to be a general MFA test app with TOTP and/or SMS, and verified that it does work - iOS SMS MFA works against the cloud.

That proved our ios sms mfa issue was emulator-specific, and I was able to quickly localize and patch the error so we can re-enable the e2e test that automatically verifies phone MFA

While doing this I noticed there weren't TOTP exports for modular (and the types weren't unit tested...), and I also thought adding a pointer to the MFA example could help people in docs.

Related issues

Release Summary

fix release, based on the types fix.

Checklist

  • I read the Contributor Guide and followed the process outlined there for submitting PRs.
    • Yes
  • My change supports the following platforms;
    • Android
    • iOS
    • Other (macOS, web)
  • My change includes tests;
    • e2e tests added or updated in packages/\*\*/e2e
    • jest tests added or updated in packages/\*\*/__tests__
  • I have updated TypeScript types that are affected by my change.
  • This is a breaking change;
    • Yes
    • No

Test Plan

Everything here is backed by tests, and the goal was actually to improve testing of iOS SMS auth to verify it even worked


Think react-native-firebase is great? Please consider supporting the project with any of the below:

Copy link

vercel bot commented Sep 1, 2025

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Preview Comments Updated (UTC)
react-native-firebase Ready Ready Preview Comment Sep 2, 2025 8:43pm

@mikehardy mikehardy changed the title test(auth): enable ios sms mfa (w/emulator patch), add sms mfa to demo fix(auth): export totp modular types / enable ios sms mfa (w/emulator patch) / add sms mfa to demo Sep 1, 2025
@mikehardy
Copy link
Collaborator Author

Honestly not sure why TotpSecret class is not defined in the types after my change, that's the jest failure.

Would love a quick set of 👀 if someone has an idea there. I tried changing it from class to interface but still fails 🤔


  ● Auth › modular › `TotpSecret` class is properly exposed to end user

    expect(received).toBeDefined()

    Received: undefined

      512 |
      513 |     it('`TotpSecret` class is properly exposed to end user', function () {
    > 514 |       expect(TotpSecret).toBeDefined();
          |                          ^
      515 |     });
      516 |
      517 |     it('`TotpMultiFactorGenerator` class is properly exposed to end user', function () {

      at Object.<anonymous> (packages/auth/__tests__/auth.test.ts:514:26)

mikehardy and others added 4 commits September 2, 2025 15:37
----

Co-Authored-By: Russell Wheatley <russellwheatley85@gmail.com>
could be useful to implementors
on iOS they attempt to verify a masked number for 2FA not an unmasked one
- works fine against cloud auth, so it is an emulator-specific issue
- in emulator you can fix it with a patch that looks for unobfuscated *or* obfuscated verification

See firebase/firebase-tools#9062
this helped verify an MFA+SMS verification issue on iOS + emulator

MFA works now with email+password primary and either SMS or TOTP or both now
@mikehardy mikehardy force-pushed the @mikehardy/auth-mfa-ios-e2e-enable branch from 0c8f2ef to 1d168e6 Compare September 2, 2025 20:39
@mikehardy mikehardy merged commit 87a6884 into main Sep 3, 2025
21 checks passed
@mikehardy mikehardy deleted the @mikehardy/auth-mfa-ios-e2e-enable branch September 3, 2025 03:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants