[FR] Use firebase emulator for TenantManagementService

Ouverte
#910 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

Évaluation

Difficulté
3/5
Temps estimé
1-2 jours
Accessibilité débutants
38/100
Type d'issue
Fonctionnalité
Clarté
Plutôt claire
Activité
À l'abandon
Stack technique
python
Domaine
authentication

Piste de recherche

Repérez _TenantManagementService et son TENANT_MGT_URL, puis examinez comment FIREBASE_AUTH_EMULATOR_HOST est pris en charge à des fins de comparaison. Vérifiez le comportement existant de la gestion des tenants avec l’émulateur Firebase et assurez-vous que le paramètre proposé FIREBASE_TENANT_EMULATOR_HOST prend en charge les endpoints de tenants émulés sans modifier le comportement en production.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

type: feature request

Is your feature request related to a problem? Please describe.
Currently only the Auth client supports running against the firebase emulator when setting the FIREBASE_AUTH_EMULATOR_HOST environment variable. However when wanting to list for example tenants with TenantManagementService you cannot do that and it forcibly uses TENANT_MGT_URL = 'https://identitytoolkit.googleapis.com/v2'. The emulator itself however emulates some of these endpoints (like /projects/{project_id}/tenants) so some of those are supported.

Describe the solution you'd like
Add support for setting FIREBASE_TENANT_EMULATOR_HOST and use that in _TenantManagementService

Describe alternatives you've considered
Doing direct HTTP REST API calls to the emulator or extending the management service manually like

class EmulatedTenantManagementService(tenant_mgt._TenantManagementService):
    TENANT_MGT_URL = (
        f"http://{firebase_auth_emulator_host}/identitytoolkit.googleapis.com/v2"
    )

    def __init__(self, app: firebase_admin.App):
        super().__init__(app)
        credential = _utils.EmulatorAdminCredentials()
        version_header = f"Python/Admin/{firebase_admin.__version__}"
        base_url = f"{self.TENANT_MGT_URL}/projects/{app.project_id}"
        self.client = _http_client.JsonHttpClient(
            credential=credential,
            base_url=base_url,
            headers={"X-Client-Version": version_header},
        )

app = firebase_admin.get_app()
service = EmulatedTenantManagementService(app)
app._services[tenant_mgt._TENANT_MGT_ATTRIBUTE] = service
Langage dominant
Python
Étoiles
1.2k
Forks
359
Merge moyen
5 j 6 min
PR mergées (30 j)
2

Guide de contribution

Ouvrir le guide de contribution

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de firebase/firebase-admin-python

Toutes les issues de firebase/firebase-admin-python

Issues similaires

Plus d'issues Python

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.