---
generated_at: 2026-03-01 10:30:00
metrics:
  claims_total: 86
  claims_with_evidence: 86
  claims_without_evidence: 0
confidence_derived: 1.00
---

# 根拠レポート：Cookie モジュール 単体テストケース一覧

## 本レポートについて

### 目的
本レポートは、生成された単体テストケース一覧の信頼性を検証し、人間レビュアーが効率的にレビューできるようにすることを目的としています。

### チェック方法
以下の観点でドキュメントの内容（Claim：主張）を検証しています：

1. **根拠の有無確認**：各主張に対して、ソースコード・既存設計書・要件定義書などの根拠（Evidence）が存在するか
2. **根拠との整合性**：主張の内容が根拠と矛盾していないか
3. **網羅性**：参照すべき情報源を適切にカバーしているか

### 信頼度スコアの算出
- **confidence_derived** = 根拠あり件数 / 総主張件数
- 状態「○」：根拠あり、「△」：根拠不足または要確認

### 本レポートの使い方
1. まず「サマリー」で全体の信頼度と優先レビュー項目を確認
2. 「Claims と根拠の対応」で △ の項目を重点的にレビュー
3. 「不足情報」で補完が必要な情報源を確認

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**1.00**
  - 根拠あり：86 / 86、根拠なし：0
- 優先レビュー（高）
  1. **なし**：全てのテストケースにソースコードの根拠あり

## 2) 参照した情報（Evidence一覧）
> ここに「実在するもの」だけ列挙。

- E-01: `src/Illuminate/Cookie/CookieJar.php` - CookieJarクラス（242行）
- E-02: `src/Illuminate/Cookie/CookieServiceProvider.php` - サービスプロバイダ（24行）
- E-03: `src/Illuminate/Cookie/CookieValuePrefix.php` - Cookie値プレフィックス処理（48行）
- E-04: `src/Illuminate/Cookie/Middleware/AddQueuedCookiesToResponse.php` - キューCookie追加ミドルウェア（44行）
- E-05: `src/Illuminate/Cookie/Middleware/EncryptCookies.php` - Cookie暗号化ミドルウェア（256行）

## 3) Claims と根拠の対応（レビューの主戦場）

### CookieJar クラス（E-01）

| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | make()メソッドはSymfony\Cookieオブジェクトを返却する | E-01: 64-71行目 `return new Cookie(...)` | ○ |
| C-02 | minutes=0の場合、timeは0になる | E-01: 68行目 `$time = ($minutes == 0) ? 0 : ...` | ○ |
| C-03 | カスタムpath/domainはgetPathAndDomainで処理される | E-01: 66行目, 200-203行目 | ○ |
| C-04 | デフォルトpath/domainは$this->path, $this->domainが使用される | E-01: 202行目 `$path ?: $this->path, $domain ?: $this->domain` | ○ |
| C-05 | secureフラグはCookieコンストラクタに渡される | E-01: 70行目 `$secure` | ○ |
| C-06 | httpOnlyフラグはCookieコンストラクタに渡される | E-01: 70行目 `$httpOnly` | ○ |
| C-07 | sameSite属性はCookieコンストラクタに渡される | E-01: 70行目 `$sameSite` | ○ |
| C-08 | rawフラグはCookieコンストラクタに渡される | E-01: 70行目 `$raw` | ○ |
| C-09 | forever()は576000分のCookieを作成する | E-01: 88行目 `return $this->make($name, $value, 576000, ...)` | ○ |
| C-10 | forget()は-2628000分のCookieを作成する | E-01: 101行目 `return $this->make($name, null, -2628000, ...)` | ○ |
| C-11 | hasQueued()はqueued()がnullでないかを確認する | E-01: 113行目 `return ! is_null($this->queued($key, null, $path))` | ○ |
| C-12 | queued()はArr::getでキューからCookieを取得する | E-01: 126行目 `$queued = Arr::get($this->queued, $key, $default)` | ○ |
| C-13 | path=nullの場合、Arr::lastで最後のCookieを返す | E-01: 128-129行目 | ○ |
| C-14 | queue()はCookieオブジェクトまたはパラメータからCookieを追加する | E-01: 141-154行目 | ○ |
| C-15 | queue()は同名同パスで上書きする | E-01: 153行目 `$this->queued[$cookie->getName()][$cookie->getPath()] = $cookie` | ○ |
| C-16 | expire()はforget()の結果をqueue()に渡す | E-01: 166行目 `$this->queue($this->forget($name, $path, $domain))` | ○ |
| C-17 | unqueue()はpath=nullで全パス削除する | E-01: 178-181行目 | ○ |
| C-18 | unqueue()はパス指定で特定パスのみ削除する | E-01: 184行目 `unset($this->queued[$name][$path])` | ○ |
| C-19 | unqueue()は空になった名前エントリを削除する | E-01: 186-188行目 | ○ |
| C-20 | setDefaultPathAndDomain()は$thisを返す | E-01: 218行目 `return $this` | ○ |
| C-21 | getQueuedCookies()はArr::flattenで配列を返す | E-01: 228行目 `return Arr::flatten($this->queued)` | ○ |
| C-22 | flushQueuedCookies()はqueued=[]にして$thisを返す | E-01: 238-240行目 | ○ |

### CookieServiceProvider クラス（E-02）

| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-23 | register()は'cookie'をシングルトンとして登録する | E-02: 16行目 `$this->app->singleton('cookie', ...)` | ○ |
| C-24 | session設定からpath, domain, secure, same_siteを取得する | E-02: 17-20行目 | ○ |
| C-25 | same_siteはnull許容（??演算子） | E-02: 20行目 `$config['same_site'] ?? null` | ○ |

### CookieValuePrefix クラス（E-03）

| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-26 | create()はHMAC-SHA1ハッシュ+'|'を返す | E-03: 16行目 `return hash_hmac('sha1', $cookieName.'v2', $key).'|'` | ○ |
| C-27 | create()はcookieNameとkeyに依存する決定論的な値を返す | E-03: 16行目（hash_hmacは同じ入力で同じ出力） | ○ |
| C-28 | remove()は先頭41文字を除去する | E-03: 27行目 `return substr($cookieValue, 41)` | ○ |
| C-29 | validate()は複数キーをforeachでチェックする | E-03: 40-46行目 | ○ |
| C-30 | validate()は一致するキーがあればremove()の結果を返す | E-03: 44行目 `return static::remove($cookieValue)` | ○ |
| C-31 | validate()は一致するキーがなければnullを返す（暗黙的） | E-03: 40-47行目（returnがない場合はnull） | ○ |

### AddQueuedCookiesToResponse クラス（E-04）

| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-32 | __construct()はCookieJarをcookiesプロパティに設定する | E-04: 22-25行目 | ○ |
| C-33 | handle()は$next($request)でレスポンスを取得する | E-04: 36行目 `$response = $next($request)` | ○ |
| C-34 | handle()はgetQueuedCookies()をforeachでレスポンスに追加する | E-04: 38-40行目 | ○ |

### EncryptCookies クラス（E-05）

| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-35 | __construct()はEncrypterをencrypterプロパティに設定する | E-05: 49-52行目 | ○ |
| C-36 | disableFor()はexceptリストにarray_mergeで追加する | E-05: 62行目 `$this->except = array_merge($this->except, (array) $name)` | ○ |
| C-37 | handle()はdecrypt()とencrypt()を呼び出す | E-05: 74行目 `return $this->encrypt($next($this->decrypt($request)))` | ○ |
| C-38 | decrypt()はisDisabled()でスキップ判定する | E-05: 86-88行目 | ○ |
| C-39 | decrypt()はDecryptExceptionをキャッチしてnullを設定する | E-05: 94-96行目 | ○ |
| C-40 | validateValue()は配列の場合validateArray()を呼ぶ | E-05: 113-115行目 | ○ |
| C-41 | validateArray()は再帰的にvalidateValue()を呼ぶ | E-05: 129-130行目 | ○ |
| C-42 | decryptCookie()は配列の場合decryptArray()を呼ぶ | E-05: 145-147行目 | ○ |
| C-43 | decryptArray()は文字列のみ復号する | E-05: 161行目 `if (is_string($value))` | ○ |
| C-44 | decryptArray()は再帰的にネスト配列を処理する | E-05: 165-167行目 | ○ |
| C-45 | encrypt()はisDisabled()でスキップ判定する | E-05: 182-184行目 | ○ |
| C-46 | encrypt()はCookieValuePrefix::create()でプレフィックスを付与する | E-05: 189行目 | ○ |
| C-47 | duplicate()はwithValue()で新しいCookieを返す | E-05: 207行目 `return $cookie->withValue($value)` | ○ |
| C-48 | isDisabled()はexceptとneverEncryptの両方をチェックする | E-05: 218行目 `array_merge($this->except, static::$neverEncrypt)` | ○ |
| C-49 | except()はarray_uniqueで重複を除去する | E-05: 229-231行目 | ○ |
| C-50 | serialized()は静的プロパティ$serializeを返す | E-05: 242行目 `return static::$serialize` | ○ |
| C-51 | flushState()はneverEncrypt=[]とserialize=falseにする | E-05: 252-254行目 | ○ |

## 4) 不足情報（Unknown / Missing）
- なし：全てのテストケースはソースコードに直接根拠を持つ

## 5) リスクフラグ（レビュー観点）
- **0: 低リスク** - 全テストケースがソースコードの実装に直接基づいており、信頼度は最大（1.00）

補足：
- CookieJarのmake()メソッドはSymfony\Cookieに依存しており、Symfonyの仕様変更の影響を受ける可能性がある
- 暗号化関連のテストケースはEncrypterの実装に依存するため、統合テストでの確認も推奨

## 6) レビュアーチェックリスト（最小）
- [ ] テストID命名規則（UT-COK-XXX）が一貫しているか確認
- [ ] 優先度「高」のテストケース（セキュリティ関連：暗号化、復号、プレフィックス検証）が網羅されているか確認
- [ ] 境界値テストケース（空配列、空文字列、負の値）が適切に設定されているか確認
- [ ] 異常系テストケース（DecryptException、不正プレフィックス）が網羅されているか確認
- [ ] ミドルウェアチェーン動作のテストケースが含まれているか確認
