Create the staging test login in the policyengine-dev Auth0 tenant and switch staging to it
Los mantenedores suelen responder en 3 días
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Aptitud para principiantes
- 18/100
- Tipo de issue
- Nueva funcionalidad
- Claridad
- Bien especificado
- Estado de actividad
- Activo
- Stack tecnológico
- github-actions, python
Línea de trabajo
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.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
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.
- Lenguaje dominante
- Python
- Estrellas
- 18
- Forks
- 33
- Merge medio
- 2 d 18 h
- PR fusionados (30 d)
- 36
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Tiene una plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de PolicyEngine/policyengine-api
-
Dificultad 1/5 1-3 horas Aptitud para principiantes 88/100
PolicyEngine/policyengine-api#3911 ·
Los mantenedores suelen responder en 3 días
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 82/100
PolicyEngine/policyengine-api#3910 ·
Los mantenedores suelen responder en 3 días
-
Remove the v1 user routes and keep complete simulation and report results finalPosiblemente ocupada @MaxGhenis la tomó hace 1 día. Abierto
Dificultad 4/5 3-5 días Aptitud para principiantes 45/100
PolicyEngine/policyengine-api#4028 ·
Los mantenedores suelen responder en 3 días
-
Store the metadata v3 reads in the v2 catalog, from PolicyEngine.py's public recordsPosiblemente ocupada Un pull request vinculado a esta issue está abierto o ya se fusionó. Abierto
Dificultad 4/5 3-5 días Aptitud para principiantes 48/100
PolicyEngine/policyengine-api#4022 ·
Los mantenedores suelen responder en 3 días
-
Publish v2 catalog regions from the Public API's own region reference filesPosiblemente ocupada Un pull request vinculado a esta issue está abierto o ya se fusionó. Abierto
Dificultad 5/5 Más de una semana Aptitud para principiantes 38/100
PolicyEngine/policyengine-api#4019 ·
Los mantenedores suelen responder en 3 días
Todos los issues de PolicyEngine/policyengine-api
Issues similares
-
tests: pin that the atomic writers in utils/paths.py stage the temporary file in the target's directoryPosiblemente ocupada Un pull request vinculado a esta issue está abierto o ya se fusionó. Abiertodifficulty:2 enhancement good first issue
Dificultad 1/5 1-3 horas Aptitud para principiantes 92/100
MakazhanAlpamys/Soup#2178 ·
Los mantenedores suelen responder en 1 día
-
Slang input: int8_t4_packed and uint8_t4_packed are copied into CrossGLPosiblemente ocupada @ninglinLiu la tomó hoy. Abiertoarea:frontend backend:slang bug direction:input
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 85/100
Los mantenedores suelen responder en 13 días
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 85/100
Kozea/Radicale#2301 · 2 comentarios ·
Los mantenedores suelen responder en 1 día
-
bug ci good first issue
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
Los mantenedores suelen responder en 1 día