chore(auth): adiciona helper de token para smoke local - #128
Conversation
Documenta as capabilities exigidas no fluxo protegido e adiciona um utilitario local para gerar bearer token de teste a partir da configuracao ja carregada pelo backend.\n\nA entrega mantem o escopo em DX local, sem alterar a arquitetura de auth nem o comportamento das rotas protegidas.\n\nCloses #127
Separa a cobertura do helper de token local dos testes de proxy para evitar falha cruzada por dependencia de bash no host.\n\nIsso mantém a validacao da issue previsivel e restrita ao escopo de auth local.\n\nRefs #127
|
@codex review Revisao automatica complementar concluida via openrouter para o commit 649e951. Revisao CodexSemachados materiais. Risco residual: A PR implementa um helper de token local para smoke, mas o suporte a outros modos de autenticação (como OAuth) não foi considerado, limitando a utilização em ambientes reais. Esta revisao e advisory e nao substitui a revisao humana. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 4fe49f2c84
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
Usa fileURLToPath para comparar o caminho real do modulo com process.argv[1], evitando falha quando o script e executado a partir de diretorios com espacos no nome.\n\nAdiciona cobertura que executa uma copia do helper em um caminho com espaco para evitar regressao.\n\nRefs #127
…n-smoke chore(auth): adiciona helper de token para smoke local
Resumo
Documenta o contrato de claims e capabilities exigido pelo backend para o smoke local protegido e adiciona um helper mínimo para gerar o bearer token correto no ambiente de desenvolvimento. A PR também registra a validação do fluxo protegido com esse token sem alterar a arquitetura de autenticação.
O que foi alterado
scripts/generate-local-operator-token.mjspara gerar um token local HS256 a partir deOPERATOR_AUTH_*já carregadas pelo backend.scripts/generate-local-operator-token.test.mjs.package.jsoncomtoken:localetest:token:local.docs/plans/local-product-smoke-validation.mdcom os claims obrigatórios, a matriz de capabilities por rota e o procedimento de uso do token local.Motivação
O produto já estava funcional localmente, mas o smoke protegido dependia de conhecimento implícito sobre
repositories:write. Isso fazia o fluxo parecer quebrado quando, na prática, o bloqueio era apenas o token local incorreto.Como validar
npm run test:token:local.OPERATOR_AUTH_ENABLED=trueOPERATOR_AUTH_MODE=shared-secretOPERATOR_AUTH_ISSUER=forgeops-localOPERATOR_AUTH_AUDIENCE=forgeops-operatorOPERATOR_AUTH_SHARED_SECRET=<valor local>node /workspace/scripts/generate-local-operator-token.mjs.GET /api/v1/repositories/discoverycom o bearer token gerado.POST /api/v1/repositoriescom um repositório retornado pela discovery.GET /api/v1/repositories/{id}/workflowscom o mesmo token.forgeops.localeapi.forgeops.localem:8082.Riscos e impactos
shared-secret, o que é intencional para manter o escopo de DX local pequeno.POST /api/v1/repositoriespode retornar409 repository_already_exists; isso continua sendo um sinal válido de que a autorização passou e o fluxo chegou à camada de negócio.Evidências
GET /api/v1/repositories/discoveryretornou200com token gerado pelo helper.POST /api/v1/repositoriesretornou409 repository_already_existsno banco reutilizado, confirmando que o bloqueio de autorização foi superado.GET /api/v1/repositories/{id}/workflowsretornou200com6workflows.GET /eGET /repositoriesviaforgeops.local:8082retornaram200.GET /api/v1/healthviaapi.forgeops.local:8082retornou200.Checklist
Closes #127