d3ro-voice/docs/v3/e2e/RED_E2E_500_CONTENT_REPORT.md
2026-08-29 18:33:45 +09:00

3.8 KiB

D3RO Voice Red E2E 500+ — AI 콘텐츠 신고

기준일: 2026-08-25

이 suite는 실패를 기대하는 Red-path E2E다. 테스트가 RED여야 한다는 뜻이 아니라, 잘못된 요청·권한 우회·소유권 위반·중복·rate limit·관리자 전이를 실제 local Supabase Gateway → Edge Function → PostgreSQL 경로에서 거부하는지를 검증한다. 모든 scenario는 GREEN이어야 한다.

실행 경계

  • 실행기: server/supabase/tests/content-report-red.e2e.mjs
  • 명령: npm run test:e2e:red
  • 대상: http://127.0.0.1:55321인 disposable local Supabase만 허용
  • production/preview URL, production key, 원격 계정에는 fail-closed한다.
  • 매 실행마다 임시 사용자 4개를 만들고, 생성된 report를 service role로 먼저 정리한 뒤 auth user를 삭제한다. 원문 snapshot·token·email·service key는 출력하지 않는다.
  • PostgREST/RPC에는 sb_secret_ local key를 사용한다. 현 local GoTrue admin 삭제는 legacy service_role JWT가 필요한 CLI 호환 경계라 fixture cleanup에만 사용하며, remote 환경에는 실행 자체를 허용하지 않는다.

정확한 scenario 수: 650

family 실제 E2E oracle
허용되지 않은 HTTP method 4 405 method_not_allowed, Cache-Control: no-store
잘못된/없는 content type 6 415 content_type_must_be_json
인증 우회 3 401
idempotency key 없음·위조 96 400 fail-closed
root body 누락·추가 key 64 strict exact-key 400 invalid_request
kind 위조 64 ai_output 이외 차단
source type·generation ID 위조 96 allowlist·UUID·shape 차단
신고 사유 위조 96 reason allowlist 차단
snapshot 공백·초과·타입 위조 96 1~4000 code point 경계 차단
comment 공백·초과·타입 위조 96 optional 1~500 code point 경계 차단
유효 source 3종 3 Talk/Commands/Actions receipt → 201
멱등성·source ownership·ledger ACL 7 replay/conflict/duplicate/cross-user/purpose mismatch/unknown/direct table 차단
rate limit 11 10번째까지 201, 11번째 429
moderation ACL·전이 8 일반 사용자 차단, manager queue/review/replay/conflict/dismiss/terminal lock

합계는 650이다. 실행기는 suite 시작 전에 stateless 621개, 종료 전에 전체 650개를 강제 검증하므로 누군가 case를 줄이면 테스트가 fail한다.

포함하지 않는 증거

이 suite는 Edge/DB Red E2E다. Play가 서명한 실기기에서의 Talk·Commands·Actions 신고 sheet, 실제 provider response header, production moderation 운영, 광고·결제·FCM E2E는 대체하지 않는다. 그 경계는 Play 출시 체크리스트에 별도로 남아 있다.