Create the staging test login in the policyengine-dev Auth0 tenant and switch staging to it
Les mainteneurs répondent en général sous 3 jours
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 5/5
- Temps estimé
- Plus d'une semaine
- Accessibilité débutants
- 18/100
- Type d'issue
- Fonctionnalité
- Clarté
- Clairement spécifiée
- Activité
- Active
- Stack technique
- github-actions, python
- Domaine
- authentication, backend-api-design, ci-cd
Piste de recherche
Start with .github/workflows/push.yml and .github/scripts/deploy_cloud_run_candidate.sh to trace how staging environment values reach the deployment and integration test. The issue also requires configuring Auth0 tenants and GitHub environment variables and secrets, then running tests/integration/test_live_v2_policies.py after a staging deploy. Done means the staging test passes and a decoded test token has the specified issuer and audience.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
Context
Staging and preview sign-in are moving off the production Auth0 tenant (auth.policyengine.org, policyengine.uk.auth0.com) to a separate test tenant, policyengine-dev.uk.auth0.com. Real users stay in production, and test sign-ins can only reach staging.
The test tenant already has:
- the API entry "PolicyEngine API" with identifier
https://staging-api.policyengine.org/(RS256, refresh tokens allowed, same token lifetimes as production); - the single-page app "PolicyEngine v3 previews" (client ID
yjcEexib2Xt50okAg5fuYuDdNGrOerg6), which allowshttp://localhost:3001andhttps://policyengine-calculator-next-*-policy-engine.vercel.app, with Google and GitHub sign-in.
The staging integration tests in tests/integration/test_live_v2_policies.py sign in as a dedicated test user through Auth0's password-realm grant. push.yml runs them after every staging deploy, before the production deploy. That test login currently exists only in the production tenant. Until it exists in the test tenant, staging can't accept the test tenant's tokens: the tests would get rejected tokens, fail, and stop the production deploy.
1. Create the test login in policyengine-dev
Copy production's setup:
- Database connection
policyengine-staging-ci: keep this exact name soSTAGING_AUTH0_TEST_REALMstays the same. Password authentication only,disable_signup: true, brute-force protection on,passwordPolicy: good. Enable it only for the CI application below. - Application "PolicyEngine API staging CI":
app_type: regular_web,token_endpoint_auth_method: client_secret_post;- grant types:
passwordandhttp://auth0.com/oauth/grant-type/password-realmonly; - description: "Staging only: Public API live-test password grant for its test user (policyengine-staging-ci). Never use outside CI."
- User
[email protected]in that connection, with a new random password andemail_verified: true.
Don't print the client secret or password. Keep them somewhere private until step 2.
2. Switch staging to the test tenant
Change all of these together, in this repository's staging GitHub environment only. The production environment has its own copies of the PUBLIC_API_AUTH_* variables, and they must not change.
| Kind | Name | Current value | New value |
|---|---|---|---|
| Variable | PUBLIC_API_AUTH_ISSUER |
https://auth.policyengine.org/ |
https://policyengine-dev.uk.auth0.com/ |
| Variable | PUBLIC_API_AUTH_AUDIENCE |
https://api.policyengine.org/ |
https://staging-api.policyengine.org/ |
| Variable | STAGING_AUTH0_TEST_DOMAIN |
auth.policyengine.org |
policyengine-dev.uk.auth0.com |
| Variable | STAGING_AUTH0_TEST_AUDIENCE |
https://api.policyengine.org/ |
https://staging-api.policyengine.org/ |
| Variable | STAGING_AUTH0_TEST_REALM |
policyengine-staging-ci |
unchanged |
| Secret | STAGING_AUTH0_TEST_CLIENT_ID |
production CI app | the new CI app's client ID |
| Secret | STAGING_AUTH0_TEST_CLIENT_SECRET |
production CI app | the new CI app's client secret |
| Secret | STAGING_AUTH0_TEST_USERNAME |
[email protected] |
unchanged |
| Secret | STAGING_AUTH0_TEST_PASSWORD |
production test user | the new test user's password |
How these values reach the running code:
PUBLIC_API_AUTH_*are read in the staging deploy job'senv:block inpush.ymlfromvars.*. They're passed to.github/scripts/deploy_cloud_run_candidate.sh, which sets them on the Cloud Run service withgcloud run deploy --set-env-vars. They only take effect on the next staging deploy; changing the GitHub values alone doesn't change the running service.STAGING_AUTH0_TEST_*are read in the env of the "Run staging integration tests" step inpush.yml, fromvars.*andsecrets.*in thestagingenvironment.
The app's preview builds must switch to the test tenant at the same time. Otherwise previews keep sending production tokens, and staging will reject them once it expects the test tenant's.
3. Check
- Run a staging deploy and confirm
test_live_v2_policies.pypasses. - Decode one test token and confirm
issishttps://policyengine-dev.uk.auth0.com/andaudincludeshttps://staging-api.policyengine.org/.
Notes
- The Public API identifies accounts by token issuer and subject together. After the switch, the test user is a new staging account, and staging data saved under the production-tenant test user is no longer linked to it. The tests delete the test user's PolicyEngine account at the start and end of each run, so they don't depend on old data.
- Because of that deletion, staging must not get
AUTH0_MANAGEMENT_*settings for the test tenant. With them, the Public API would also delete the test user from Auth0.
4. Afterwards
- In the production tenant, delete the application "PolicyEngine API staging CI", the
policyengine-staging-cidatabase connection and its test user. Nothing uses them after the switch.
- Langage dominant
- Python
- Étoiles
- 18
- Forks
- 33
- Merge moyen
- 2 j 15 h
- PR mergées (30 j)
- 35
Préparer son environnement
- Aucun Dockerfile ni fichier Docker Compose
- Propose un modèle de pull request
- Lire le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de PolicyEngine/policyengine-api
-
Difficulté 1/5 1-3 heures Accessibilité débutants 88/100
PolicyEngine/policyengine-api#3911 ·
Les mainteneurs répondent en général sous 3 jours
-
Difficulté 1/5 Moins d'une heure Accessibilité débutants 82/100
PolicyEngine/policyengine-api#3910 ·
Les mainteneurs répondent en général sous 3 jours
-
Let a saved reform or household point at a new v2 policy or household without changing its IDPeut-être pris @anth-volk l’a pris aujourd’hui. Ouverte
Difficulté 3/5 1-2 jours Accessibilité débutants 68/100
PolicyEngine/policyengine-api#4004 ·
Les mainteneurs répondent en général sous 3 jours
-
Releases do not check that each environment calls its own simulation servicePeut-être pris @anth-volk l’a pris aujourd’hui. Ouverte
Difficulté 4/5 3-5 jours Accessibilité débutants 46/100
PolicyEngine/policyengine-api#4002 ·
Les mainteneurs répondent en général sous 3 jours
-
Register and check rules for using, installing, testing and relocking from uv.lockPeut-être pris @anth-volk l’a pris aujourd’hui. Ouverte
Difficulté 4/5 3-5 jours Accessibilité débutants 25/100
PolicyEngine/policyengine-api#3996 ·
Les mainteneurs répondent en général sous 3 jours
Toutes les issues de PolicyEngine/policyengine-api
Issues similaires
-
Difficulté 2/5 1-3 heures Accessibilité débutants 82/100
volcengine/OpenViking#6445 ·
Les mainteneurs répondent en général sous 1 jour
-
BUG:Edit Album strips spaces from the password so albums with a leading/trailing space in the password can't be editedPeut-être pris @ManyaJain111 l’a pris aujourd’hui. Ouvertebug enhancement possible-duplicate
Difficulté 2/5 1-3 heures Accessibilité débutants 77/100
AOSSIE-Org/PictoPy#1637 · 4 commentaires ·
Les mainteneurs répondent en général sous 2 jours
-
Difficulté 2/5 1-3 heures Accessibilité débutants 74/100
deepspeedai/DeepSpeed#8884 ·
Les mainteneurs répondent en général sous 3 jours
-
Flaky: test_advisor_live_calibrates_an_unmeasured_circuit ranks engines by a 1.8ms sleep marginOuverte
Difficulté 2/5 1-3 heures Accessibilité débutants 76/100
flagos-ai/FlagQuantum#718 ·
Les mainteneurs répondent en général sous 1 jour
-
bug CI-failure high priority
Difficulté 1/5 Moins d'une heure Accessibilité débutants 86/100
vllm-project/afd-plugin#483 ·
Les mainteneurs répondent en général sous 1 jour