# T119 — test-m1-auth-admin-integration

> Status: `done`  
> Milestone: `M1`  
> Kind: `test`  
> Est. change: `~200 lines` (target 100–200)  
> Updated: `2026-07-10` — 補齊 greppable §9 cases + `make test-integration`

## Goal

完成後系統應：M1 §9 Auth/Admin 全 ID 自動化

## Depends on

- T107
- T111
- T112
- T113
- T114
- T115
- T116
- T118

## Inputs

- 讀取 / 依賴：
  - §9.1–9.5
  - Spec：`docs/product/haixun-backend/spec.md`（§9：AU-01～14 AR-01～09 AP-01～08 AO-01～06 AD-01～14）
  - 對照：`docs/product/haixun-backend/fe-spec-alignment.md`（**UI MUST**）
  - 後端根：**`apps/backend`**
  - **Remove（本 task 禁止實作）：** 舊靈感 list/viral/bookmark/spark/searchTrends；generateFromFormula；ScoutTopic CRUD；live 以 simulate／createMock 當完成；Insights 真管線（P2）。

## Outputs

### 程式變更（預期路徑）

| 路徑 | 動作 | 說明 |
|------|------|------|
| `apps/backend/internal/**/*_test.go` | add | AU AR AP AO AD 全 case |

### 行為變更

- T119 綠 = M1 測試閘

### API / 契約（若有）

- —

### 測試交付（強制）

- 每個 ID 可 grep

## Out of scope

- FE

## Acceptance

- [x] Spec／UI MUST 覆蓋：`AU-01～14 AR-01～09 AP-01～08 AO-01～06 AD-01～14`（service + middleware；見下方檔案）
- [x] 每個相關 §9 ID 有可 grep 的 case 名（`TestAU_01_…` 等）
- [x] 未實作不回 102000+空 data（middleware 失敗 envelope）
- [x] 指令：

```bash
cd apps/backend && make test-integration
```

## Notes

| 檔案 | 覆蓋 |
|------|------|
| `internal/module/member/usecase/m1_t119_test.go` | AU / AR / AP / AO / AD 業務 |
| `internal/module/member/usecase/auth_test.go` | AU-01/02/07、AR-02、AO bind/login 基底 |
| `internal/middleware/m1_t119_auth_test.go` | AU-05/06/12/13、AD-13 HTTP 中介層 |

- AP-08：domain 層測 URL set/clear；data URL 拒絕在 `update_profile_logic`（手動／後續 HTTP 測）
- AR-08／AP-03 過期：fake store 無 TTL，以「缺碼／已消費」等同 ErrInvalidCode
- AD-07 self-suspend 守衛在 admin logic；test 鎖定 `ErrSelfSuspend` 契約
