# Member Center Test Site `src/MemberCenter.TestSite` 是手動 happy-path 測試用網站,用來先驗證外部網站整合會員中心的最小流程。 ## 啟動 ```bash dotnet run --project src/MemberCenter.TestSite ``` 預設 HTTP URL: ```text http://localhost:5243 ``` ## 必要設定 在 `src/MemberCenter.TestSite/appsettings.Development.json` 或環境變數設定: ```json { "MemberCenter": { "ApiBaseUrl": "http://localhost:7850", "WebBaseUrl": "http://localhost:5080", "WebLoginClientId": "", "ServiceClientId": "", "ServiceClientSecret": "" } } ``` 不要將 OAuth client secret 寫入或提交到 `appsettings.json`。建議使用環境變數 `MemberCenter__ServiceClientSecret`,或僅在測試表單暫時輸入;設定於 server-side 的 secret 不會回填至 HTML。 Repo 曾包含的 TestSite service client secret 必須在對應環境撤銷/rotate;只從 Git 移除不會使舊 secret 失效。 `web_login` OAuth client: - `usage=web_login` - `client_type=public` - redirect URI: `http://localhost:5243/auth/callback` - post logout redirect URI: `http://localhost:5243/` - scopes: `openid email profile profile:basic.read profile:basic.write profile:addresses.read profile:addresses.write profile:subscriptions.read profile:subscriptions.write` service OAuth client: - 建議使用 `tenant_api` 或 `platform_service` - `client_type=confidential` - scopes 至少包含 `profile:basic.read profile:addresses.read` 若 Member Center API 與 Web login 不同 origin,Member Center 需設定: ```text Auth__WebLoginUrl= Auth__AllowedLoginReturnUrlPrefixes= Auth__CookieDomain= ``` Development 的 Member Center cookie 允許 localhost HTTP redirect login;Stage/Production 仍必須使用 HTTPS。 Web CSP `form-action` 會允許上述 login return origin 與 `web_login` client redirect origins,避免 login form POST 後的 302 chain 被瀏覽器擋下。 ## 第一批 Happy Path 測試站目前包含: 1. Redirect login 拿 token 2. Redirect logout 清除 Member Center Web session 並回到 TestSite 3. `GET /user/profile` 4. `POST /user/profile` 5. `GET /user/addresses` 6. `POST /user/addresses` 7. `GET /user/subscriptions` 8. `POST /user/subscriptions/{id}/unsubscribe` 測試站只做 happy path,不取代完整自動化測試。