Skip to content

chore(auth): adiciona helper de token para smoke local - #128

Merged
alessandrolsdev merged 3 commits into
mainfrom
docs/local-operator-token-smoke
Apr 9, 2026
Merged

chore(auth): adiciona helper de token para smoke local#128
alessandrolsdev merged 3 commits into
mainfrom
docs/local-operator-token-smoke

Conversation

@alessandrolsdev

Copy link
Copy Markdown
Owner

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

  • Adicionei scripts/generate-local-operator-token.mjs para gerar um token local HS256 a partir de OPERATOR_AUTH_* já carregadas pelo backend.
  • Adicionei cobertura dedicada para o helper em scripts/generate-local-operator-token.test.mjs.
  • Expus comandos de DX local em package.json com token:local e test:token:local.
  • Atualizei docs/plans/local-product-smoke-validation.md com 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

  • Executar npm run test:token:local.
  • Recriar o backend com:
    • OPERATOR_AUTH_ENABLED=true
    • OPERATOR_AUTH_MODE=shared-secret
    • OPERATOR_AUTH_ISSUER=forgeops-local
    • OPERATOR_AUTH_AUDIENCE=forgeops-operator
    • OPERATOR_AUTH_SHARED_SECRET=<valor local>
  • Gerar o token dentro do backend com node /workspace/scripts/generate-local-operator-token.mjs.
  • Chamar GET /api/v1/repositories/discovery com o bearer token gerado.
  • Chamar POST /api/v1/repositories com um repositório retornado pela discovery.
  • Chamar GET /api/v1/repositories/{id}/workflows com o mesmo token.
  • Validar o proxy estável com forgeops.local e api.forgeops.local em :8082.

Riscos e impactos

  • O helper só suporta o modo shared-secret, o que é intencional para manter o escopo de DX local pequeno.
  • Em banco reutilizado, POST /api/v1/repositories pode retornar 409 repository_already_exists; isso continua sendo um sinal válido de que a autorização passou e o fluxo chegou à camada de negócio.
  • A PR não resolve o ruído de memória do frontend em desenvolvimento; apenas confirma que o proxy estável e o backend protegido seguem utilizáveis no estado atual.

Evidências

  • GET /api/v1/repositories/discovery retornou 200 com token gerado pelo helper.
  • POST /api/v1/repositories retornou 409 repository_already_exists no banco reutilizado, confirmando que o bloqueio de autorização foi superado.
  • GET /api/v1/repositories/{id}/workflows retornou 200 com 6 workflows.
  • GET / e GET /repositories via forgeops.local:8082 retornaram 200.
  • GET /api/v1/health via api.forgeops.local:8082 retornou 200.

Checklist

  • Alteração limitada ao objetivo da PR
  • Sem mudanças desconexas
  • Impactos principais descritos
  • Validação documentada
  • Riscos identificados

Closes #127

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
@alessandrolsdev alessandrolsdev added the docs Documentation work label Apr 8, 2026 — with ChatGPT Codex Connector
@alessandrolsdev

alessandrolsdev commented Apr 8, 2026

Copy link
Copy Markdown
Owner Author

@codex review

Revisao automatica complementar concluida via openrouter para o commit 649e951.

Revisao Codex

Semachados 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.

@alessandrolsdev alessandrolsdev added backend Backend area priority:p1 High priority labels Apr 8, 2026 — with ChatGPT Codex Connector
@alessandrolsdev alessandrolsdev self-assigned this Apr 8, 2026

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 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".

Comment thread scripts/generate-local-operator-token.mjs Outdated
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
@alessandrolsdev
alessandrolsdev merged commit acd5a5c into main Apr 9, 2026
5 of 6 checks passed
@alessandrolsdev
alessandrolsdev deleted the docs/local-operator-token-smoke branch April 28, 2026 01:31
alessandrolsdev added a commit that referenced this pull request Jul 15, 2026
…n-smoke

chore(auth): adiciona helper de token para smoke local
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

backend Backend area docs Documentation work priority:p1 High priority

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Document local operator token claims for protected product smoke

1 participant