Files
CFDivePlatform/openspec/changes/auth-tests/proposal.md
T
a620906209 6f446f601f test(auth): 新增三角色登入/註冊/登出、P2 帳號鎖定、OAuth state 驗證測試
新增 34 個 Feature 測試(AuthLoginTest 19、AuthLockoutTest 11、
AuthOAuthTest 4)涵蓋 member/provider/admin 的註冊、登入、登出與跨角色
隔離;P2 帳號鎖定的 Fixed Window 計數、companion cache key 與 email
正規化;以及 P2 OAuth state 的 CSRF 驗證與一次性消耗。

同時新增 .gitea/workflows/test.yml 在 push/PR 時於 CI 自動執行測試
(含 GD 等擴充套件安裝),並補上對應的 OpenSpec 變更文件
(proposal/design/spec/tasks,34 項驗收情境與測試 1:1 對應)。

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-08 04:01:33 +08:00

1.2 KiB
Raw Blame History

Why

Auth 模組(登入/註冊/登出、P2 帳號鎖定、P2 OAuth state 驗證)已實作並上線,但目前完全沒有測試覆蓋登入主流程與安全邏輯,任何回歸都會靜默失效。

What Changes

  • 新增 tests/Feature/AuthLoginTest.php:覆蓋 member / provider / admin 三角色的登入、註冊、登出、非活躍帳號拒絕、角色隔離等場景
  • 新增 tests/Feature/AuthLockoutTest.php:覆蓋 P2 帳號鎖定的全部 scenarioFixed Window 計數、第 5 次觸發、鎖定期間拒絕、成功後清除、Email 正規化、role 隔離)
  • 新增 tests/Feature/AuthOAuthTest.php:覆蓋 P2 OAuth state 驗證(state 不符回 /login?error=oauth_failed、state 正確完成登入)

Capabilities

New Capabilities

  • auth-test-coverage:定義 Auth 模組所有必要測試場景的規格,作為實作三支測試檔案的依據

Modified Capabilities

(無,所有需求已定義於既有 spec;本 change 只新增驗證覆蓋)

Impact

  • 僅新增測試檔案,不修改任何 production 程式碼
  • 依賴:phpunit.xml 已設定 DB_CONNECTION=sqliteDB_DATABASE=:memory:,可直接使用
  • 影響範圍:tests/Feature/(新增三個檔案)