Last updated:
0 purchases
firebase auth mocks
Firebase Auth Mocks #
Mocks for Firebase Auth. Use this package with google_sign_in_mocks to write unit tests involving Firebase Authentication.
Usage #
A simple usage example. Add firebase_auth_mocks and google_sign_in_mocks to dev dependencies.
import 'package:firebase_auth_mocks/firebase_auth_mocks.dart';
import 'package:google_sign_in_mocks/google_sign_in_mocks.dart';
main() {
// Mock sign in with Google.
final googleSignIn = MockGoogleSignIn();
final signinAccount = await googleSignIn.signIn();
final googleAuth = await signinAccount.authentication;
final AuthCredential credential = GoogleAuthProvider.getCredential(
accessToken: googleAuth.accessToken,
idToken: googleAuth.idToken,
);
// Sign in.
final user = MockUser(
isAnonymous: false,
uid: 'someuid',
email: '[email protected]',
displayName: 'Bob',
);
final auth = MockFirebaseAuth(mockUser: user);
final result = await auth.signInWithCredential(credential);
final user = await result.user;
print(user.displayName);
}
copied to clipboard
Features #
MockFirebaseAuth supports:
instantiating in a signed-in state or not: MockFirebaseAuth(signedIn: true/false).
firing events on sign-in to authStateChanges and userChanges.
signInWithCredential, signInWithEmailAndPassword, signInWithCustomToken,
signInAnonymously, createUserWithEmailAndPassword, signInWithPopup and signInWithProvider signs in.
sendSignInLinkToEmail, confirmPasswordReset and verifyPasswordResetCode.
verifyPhoneNumber resolves codeSent.
signOut
sendPasswordResetEmail
fetchSignInMethodsForEmail
currentUser
the ability to throw exceptions using whenCalling(...).on(...).thenThrow(...). See usage details below. Currently these methods are supported: signInWithCredential, signInWithPopup, signInWithProvider, signInWithEmailAndPassword, createUserWithEmailAndPassword, signInWithCustomToken, signInAnonymously, signOut, fetchSignInMethodsForEmail, sendPasswordResetEmail, sendSignInLinkToEmail, confirmPasswordReset, verifyPasswordResetCode. If you need another method supported, feel free to file a ticket, or better propose a PR.
pass auth information (uid, custom claims...) to Fake Cloud Firestore for security rules via authForFakeFirestore. See the docs at fake_cloud_firestore for usage.
UserCredential contains the provided User with the information of your choice.
User supports:
updateDisplayName
reauthenticateWithCredential
updatePassword
delete
sendEmailVerification
getIdToken and getIdTokenResult
the ability to throw exceptions on reload, reauthenticateWithCredential, updatePassword, delete, sendEmailVerification, linkWithCredential, linkWithProvider, unlink.
Throwing exceptions #
Regardless of the parameters #
whenCalling(Invocation.method(#signInWithCredential, null))
.on(auth)
.thenThrow(FirebaseAuthException(code: 'bla'));
expect(
() => auth.signInWithCredential(FakeAuthCredential()),
throwsA(isA<FirebaseAuthException>()),
);
copied to clipboard
Depending on positional parameters #
Equality
final auth = MockFirebaseAuth();
whenCalling(Invocation.method(
#fetchSignInMethodsForEmail, ['[email protected]']))
.on(auth)
.thenThrow(FirebaseAuthException(code: 'bla'));
expect(() => auth.fetchSignInMethodsForEmail('[email protected]'),
throwsA(isA<FirebaseAuthException>()));
expect(() => auth.fetchSignInMethodsForEmail('[email protected]'),
returnsNormally);
copied to clipboard
Using any other matcher
Supports all of the matchers from the Dart matchers library.
final auth = MockFirebaseAuth();
whenCalling(Invocation.method(
#fetchSignInMethodsForEmail, [endsWith('@somewhere.com')]))
.on(auth)
.thenThrow(FirebaseAuthException(code: 'bla'));
expect(() => auth.fetchSignInMethodsForEmail('[email protected]'),
throwsA(isA<FirebaseAuthException>()));
expect(() => auth.fetchSignInMethodsForEmail('[email protected]'),
returnsNormally);
copied to clipboard
Depending on named parameters #
You can match some or all named parameters. If you omit a named parameter, the library matches it against anything.
In this example, it will throw an exception if the code contains the String 'code', no matter the value of newPassword.
whenCalling(Invocation.method(
#confirmPasswordReset, null, {#code: contains('code')}))
.on(auth)
.thenThrow(FirebaseAuthException(code: 'invalid-action-code'));
expect(
() async => await auth.confirmPasswordReset(
code: 'code',
newPassword: 'password',
),
throwsA(isA<FirebaseAuthException>()),
);
expect(
() => auth.confirmPasswordReset(
code: '10293',
newPassword: 'password',
),
returnsNormally);
copied to clipboard
Compatibility table #
firebase_auth
firebase_auth_mocks
5.0.0
0.14.0
4.0.0
0.9.0
3.5.0
0.8.7
Features and bugs #
Please file feature requests and bugs at the issue tracker.
For personal and professional use. You cannot resell or redistribute these repositories in their original state.
There are no reviews.