Pakete, Repositories und App-Kategorien suchen

Paketdetailsv0.16.0

firebase_auth_mocks

Fakes für Firebase Auth. Verwenden Sie dieses Paket zusammen mit `google_sign_in_mocks`, um Einheitstests zu schreiben, die Firebase Authentication betreffen.

AndroidiOSWebmacOSWindows
30-Tage-Downloads
146.000
Likes
105
Pub-Punkte
140

Paket installieren

flutter pub add firebase_auth_mocks

Paketübersicht

Aus öffentlichen Paketdaten erstellte Orientierung.

Ein Testpaket, das Mock-Implementierungen für Firebase Authentication bereitstellt und Entwicklern ermöglicht, Authentifizierungsabläufe zu simulieren, ohne eine Verbindung zum echten Firebase-Backend herzustellen. Es arbeitet zusammen mit `google_sign_in_mocks`, um die Einheitstests von authentifizierungsbezogenen Logiken in Flutter-Apps zu erleichtern. Ideal für Tests von Anmeldung, Abmeldung und Benutzerstatusänderungen in einer kontrollierten Umgebung. Das Paket unterstützt alle wichtigen Plattformen wie Android, iOS, Web, macOS und Windows und sorgt für konsistentes Testverhalten über verschiedene Umgebungen hinweg.

Anwendungsfälle

  • Einheitstests für Authentifizierungsabläufe
  • Benutzeranmeldung und -abmeldung simulieren
  • Testen des App-Verhaltens unter verschiedenen Auth-Zuständen
  • Überprüfung von Benutzeroberflächenaktualisierungen basierend auf der Benutzerauthentifizierung
  • Entwicklung von Offline-Test-Szenarien

Hauptmerkmale

  • Mock-FirebaseAuth-Instanz
  • Integration mit google_sign_in_mocks
  • plattformunabhängiges Testen
  • Unterstützt alle Flutter-Plattformen
  • Einfache Einrichtung für Testumgebungen

Geeignet für

  • Flutter-Entwickler, die Tests schreiben
  • Teams, die TDD oder BDD praktizieren
  • Apps, die stark auf Firebase Auth angewiesen sind
  • Testgetriebene Entwicklung Arbeitsabläufe
  • CI/CD-Pipelines, die zuverlässige Tests erfordern

Hinweise

  • Nicht für den Produktiveinsatz
  • Erfordert das Begleitpaket google_sign_in_mocks
  • Das Mock-Verhalten kann möglicherweise keine Randfälle der realen Welt widerspiegeln
  • Beschränkt auf Simulation des Basis-Authentifizierungsstatus
  • Unterstützt keine Echtzeit-Authentifizierungs-Hörer

Original-README

Originaler README-Schnappschuss aus dem verknüpften Quell-Repository. Aktuelle Inhalte finden Sie im Repository.

Firebase Auth Mocks

pub package Unit Tests Buy Me A Coffee

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: 'bob@somedomain.com',
      displayName: 'Bob',
    );
    final auth = MockFirebaseAuth(mockUser: user);
    final result = await auth.signInWithCredential(credential);
    final user = await result.user;
    print(user.displayName);
}

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
    • 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, 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.
    • authStateChanges, userChanges, idTokenChanges stream listeners
  • 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 reauthenticateWithCredential, updatePassword, delete, sendEmailVerification, verifyPhoneNumber, linkWithCredential, linkWithProvider, unlink, User.reload, User.verifyBeforeUpdateEmail.

Throwing exceptions

Regardless of the parameters
whenCalling(Invocation.method(#signInWithCredential, null))
  .on(auth)
  .thenThrow(FirebaseAuthException(code: 'bla'));
expect(
  () => auth.signInWithCredential(FakeAuthCredential()),
  throwsA(isA<FirebaseAuthException>()),
);
Depending on positional parameters
Equality
final auth = MockFirebaseAuth();
whenCalling(Invocation.method(#verifyPhoneNumber, '12-345-6789'))
    .on(auth)
    .thenThrow(FirebaseAuthException(code: 'invalid-action-code'));
expect(() => auth.verifyPhoneNumber('12-345-6789'),
    throwsA(isA<FirebaseAuthException>()));
expect(() => auth.verifyPhoneNumber('00-222-4444'),
    returnsNormally);
Using any other matcher

Supports all of the matchers from the Dart matchers library.

final auth = MockFirebaseAuth();
whenCalling(Invocation.method(
        #confirmPasswordReset, null, {#code: contains('code')}))
    .on(auth)
    .thenThrow(FirebaseAuthException(code: 'invalid-action-code'));
expect(
  () => auth.confirmPasswordReset(
    code: 'code',
    newPassword: 'password',
  ),
  throwsA(isA<FirebaseAuthException>()),
);
expect(
  () => auth.confirmPasswordReset(
    code: '1234',
    newPassword: 'password',
  ),
  returnsNormally,
);
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);

Compatibility table

firebase_auth firebase_auth_mocks
6.0.0 0.15.0
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.

Kategorien

Abhängigkeiten

Abhängigkeiten 8 Einträge

Quell-Repository

Projekte, die dieses Paket verwenden