Skip to content

refactor(console): de-mock Conta/Segurança/Auditoria + migra specs (limpeza de mocks 5.6a) - #110

Merged
danzeroum merged 1 commit into
masterfrom
claude/criptotrade-onboarding-06pd5p
Jul 20, 2026
Merged

refactor(console): de-mock Conta/Segurança/Auditoria + migra specs (limpeza de mocks 5.6a)#110
danzeroum merged 1 commit into
masterfrom
claude/criptotrade-onboarding-06pd5p

Conversation

@danzeroum

Copy link
Copy Markdown
Owner

Limpeza de mocks — Fatia 5.6a (Conta · Segurança · Auditoria)

Primeira metade da 5.6 (split aprovado). Remove as branches de mock de produção de 3 telas self-service/audit e migra account/security/audit specs para o fixture. Diff 100% em docs/design/pages/, zero backend. 5.6b (Onboarding/Agentes, com o acoplamento de core) vem a seguir.

Telas de-mockadas

screen_account · screen_security · screen_audit. De-mock mecânicoZERO vazamentos CT.* (todos mock-gated). CT_AUTH/CT_PREFS são stores reais (preservados: totpOn de CT_AUTH, CT_PREFS.apply no save de prefs).

Gating preservado (route-level, fora das telas)

account/security = USER_ONLY_ROUTES (demo oculto); audit = ROUTE_PERMS='view_audit' (demo/visualizador oculto). Os if(mock){addToast('Modo demo…')} eram short-circuit de write do mock, não gating — deletam limpo.

Fixture (e2e/fixtures/)

  • ACCOUNT_PROFILE (email demo@… p/ o campo disabled), PREFERENCES (number_locale:'auto' → preview en-US), PATCH /v1/account/preferences canned.
  • SECURITY_SESSIONS (2; s1 current:true → "Atual"; UAs → "Chrome · Linux"/"Safari · iOS"), SECURITY_LOGINS (3, 1 success:false; envelope {data:[…]} p/ getLoginHistory unwrap:false).
  • AUDIT_EVENTS (8; id 7 config_changed com before/after max_daily_loss_pct 5→4). GET /v1/audit filtra por action (total via fallback env.data.length, já que unwrap:false); GET /v1/audit/{id} = detalhe (pattern). Handler query-aware, não mutação stateful.

Recompute de aceite (premissa mock → fixture, declarado)

account.spec afirmava o header .header "$67.667" (do velho CT.symbol.price ~67667); pós-fixture o preço vem de ticker() (BTC 64810) → atualizado p/ "$64.810". Mesmo padrão das mudanças de contagem de NAV das fatias anteriores.

Specs migrados

account (5) · security (4) · audit (5) → installMockApi (cenários authMode/role).

Acoplamento: nenhum

Nenhum spec não-migrado navega para #account/#security/#audit afirmando conteúdo; console conta só labels de nav (perm-gated, preservado).

Validação local

  • 14 specs migrados verdes (account 5 + security 4 + audit 5).
  • Suíte completa 74 verdes, exit 0 (--retries=1). O teste demo/403 do audit apareceu flaky sob carga paralela — 3/3 isolado, corrida de boot conhecida do demo, não regressão.
  • node build.mjs OK.

🤖 Generated with Claude Code


Generated by Claude Code

…impeza de mocks 5.6a)

Sétima fatia (strangler), primeira metade da 5.6. Remove as branches de mock de
PRODUÇÃO de 3 telas self-service/audit e migra account/security/audit specs para o
fixture. Diff 100% em docs/design/pages/, zero backend. (5.6b — Onboarding/Agentes,
com o acoplamento de core — vem a seguir.)

Telas de-mockadas: screen_account, screen_security, screen_audit.
De-mock MECÂNICO — ZERO vazamentos CT.* (todos mock-gated). CT_AUTH/CT_PREFS são
stores reais (preservados; ex.: totpOn de CT_AUTH, CT_PREFS.apply no save de prefs).

Gating preservado (route-level, fora das telas): account/security = USER_ONLY_ROUTES
(demo OCULTO); audit = ROUTE_PERMS='view_audit' (demo/visualizador OCULTO). Os
if(mock){addToast('Modo demo…')} eram short-circuit de WRITE do mock, não gating —
deletam limpo.

Fixture (e2e/fixtures/):
- ACCOUNT_PROFILE (email demo@… p/ o campo disabled), PREFERENCES (number_locale
  'auto' → preview en-US), PATCH /v1/account/preferences canned.
- SECURITY_SESSIONS (2; s1 current:true → "Atual"; UAs → "Chrome · Linux"/"Safari · iOS"),
  SECURITY_LOGINS (3, 1 success:false; envelope {data:[…]} p/ getLoginHistory unwrap:false).
- AUDIT_EVENTS (8; id 7 config_changed com before/after max_daily_loss_pct 5→4).
  GET /v1/audit filtra por action (recompute do total via fallback env.data.length,
  já que unwrap:false); GET /v1/audit/{id} = detalhe (pattern). Handler query-aware,
  não mutação stateful.

Recompute de aceite (premissa mock → fixture, declarado): account.spec afirmava o
header ".header $67.667" (do velho CT.symbol.price ~67667); pós-fixture o preço vem
de ticker() (BTC 64810) → atualizado p/ "$64.810". Mesmo padrão das mudanças de
contagem de NAV das fatias anteriores.

Specs migrados via installMockApi (cenários authMode/role): account (5), security (4),
audit (5).

Acoplamento: nenhum spec não-migrado navega para #account/#security/#audit afirmando
conteúdo; console conta só labels de nav (perm-gated, preservado).

Auditoria de mocks: 3 telas sem USE_MOCK_DATA/CT.* (grep limpo). Restam: Onboarding+
Agentes (5.6b) e o core (5.7).

Validação: 14 specs migrados verdes (account 5 + security 4 + audit 5); suíte completa
74 verdes exit 0 (retries=1; o teste demo/403 do audit apareceu flaky sob carga
paralela — 3/3 isolado, corrida de boot conhecida, não regressão); node build.mjs OK.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UZ3vLNTHKekjQVtjFVRi5D
@danzeroum
danzeroum merged commit 1c6ee04 into master Jul 20, 2026
12 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants