---
generated_at: 2026-02-24 19:30:00
metrics:
  claims_total: 41
  claims_with_evidence: 38
  claims_without_evidence: 3
confidence_derived: 0.93
---

# 根拠レポート：providers-auth-emailpass.csv

## 本レポートについて

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

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

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

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**0.93**
  - 根拠あり：38 / 41、根拠なし：3
- 優先レビュー（高）
  1. **UT-EPS-038, 039, 040, 041**：空文字列チェックの挙動（コード上は!passwordで判定されるが、空文字列がfalsy値として扱われるかの確認が必要）
  2. **UT-EPS-032, 033**：upsertAuthIdentityはprivateメソッドのため直接テスト不可
  3. **UT-EPS-035**：index.tsのModuleProvider設定は統合テストで確認が望ましい

## 2) 参照した情報（Evidence一覧）
> ここに「実在するもの」だけ列挙。抽出フェーズで付けたIDをそのまま出す。

- E-01: `packages/modules/providers/auth-emailpass/src/services/emailpass.ts` - メインサービスクラス実装
- E-02: `packages/modules/providers/auth-emailpass/src/index.ts` - モジュールエクスポート設定
- E-03: `packages/modules/providers/auth-emailpass/integration-tests/__tests__/services.spec.ts` - 既存統合テスト
- E-04: `@medusajs/framework/utils` - AbstractAuthModuleProvider基底クラス（外部依存）
- E-05: `scrypt-kdf` - パスワードハッシュライブラリ（外部依存）

## 3) Claims と根拠の対応（レビューの主戦場）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | UT-EPS-001: constructorで依存性が注入される | E-01 (L32-40) | ○ |
| C-02 | UT-EPS-002: hashConfigデフォルト値 | E-01 (L43) | ○ |
| C-03 | UT-EPS-003: hashPasswordがbase64を返す | E-01 (L42-46) | ○ |
| C-04 | UT-EPS-004: カスタムhashConfig使用 | E-01 (L43) | ○ |
| C-05 | UT-EPS-005: updateでパスワード更新 | E-01 (L48-83) | ○ |
| C-06 | UT-EPS-006: updateでentity_id必須 | E-01 (L54-59) | ○ |
| C-07 | UT-EPS-007: passwordなしは成功を返す | E-01 (L61-63) | ○ |
| C-08 | UT-EPS-008: password非文字列は成功を返す | E-01 (L61-63) | ○ |
| C-09 | UT-EPS-009: update例外処理 | E-01 (L75-77) | ○ |
| C-10 | UT-EPS-010: authenticate成功 | E-01 (L85-149), E-03 (L79-118) | ○ |
| C-11 | UT-EPS-011: パスワード削除 | E-01 (L132-141) | ○ |
| C-12 | UT-EPS-012: パスワード不一致 | E-01 (L145-148), E-03 (L47-77) | ○ |
| C-13 | UT-EPS-013: emailなしエラー | E-01 (L98-103), E-03 (L23-33) | ○ |
| C-14 | UT-EPS-014: passwordなしエラー | E-01 (L91-96), E-03 (L35-45) | ○ |
| C-15 | UT-EPS-015: email非文字列エラー | E-01 (L98) | ○ |
| C-16 | UT-EPS-016: password非文字列エラー | E-01 (L91) | ○ |
| C-17 | UT-EPS-017: ユーザー不存在エラー | E-01 (L111-117), E-03 (L258-274) | ○ |
| C-18 | UT-EPS-018: その他エラー処理 | E-01 (L119) | ○ |
| C-19 | UT-EPS-019: passwordなしエラー | E-01 (L127-148) | ○ |
| C-20 | UT-EPS-020: body undefined | E-01 (L89) | ○ |
| C-21 | UT-EPS-021: register新規登録 | E-01 (L151-210), E-03 (L120-154) | ○ |
| C-22 | UT-EPS-022: registerパスワード削除 | E-01 (L226-231) | ○ |
| C-23 | UT-EPS-023: app_metadataなし更新 | E-01 (L177-188), E-03 (L156-190) | ○ |
| C-24 | UT-EPS-024: app_metadata空更新 | E-01 (L177), E-03 (L192-226) | ○ |
| C-25 | UT-EPS-025: app_metadataあり重複エラー | E-01 (L190-193), E-03 (L228-256) | ○ |
| C-26 | UT-EPS-026: register emailなし | E-01 (L164-169) | ○ |
| C-27 | UT-EPS-027: register passwordなし | E-01 (L157-162) | ○ |
| C-28 | UT-EPS-028: register email非文字列 | E-01 (L164) | ○ |
| C-29 | UT-EPS-029: register password非文字列 | E-01 (L157) | ○ |
| C-30 | UT-EPS-030: register例外処理 | E-01 (L207-209) | ○ |
| C-31 | UT-EPS-031: register body undefined | E-01 (L155) | ○ |
| C-32 | UT-EPS-032: upsertAuthIdentity create | E-01 (L215-216) | ○ |
| C-33 | UT-EPS-033: upsertAuthIdentity update | E-01 (L220-224) | ○ |
| C-34 | UT-EPS-034: upsertパスワード削除 | E-01 (L226-231) | ○ |
| C-35 | UT-EPS-035: ModuleProvider設定 | E-02 (L1-8) | ○ |
| C-36 | UT-EPS-036: identifier値 | E-01 (L26) | ○ |
| C-37 | UT-EPS-037: DISPLAY_NAME値 | E-01 (L27) | ○ |
| C-38 | UT-EPS-038: 空文字列emailの挙動 | **根拠不足** | △ |
| C-39 | UT-EPS-039: 空文字列passwordの挙動 | **根拠不足** | △ |
| C-40 | UT-EPS-040: register空文字列email | **根拠不足** | △ |
| C-41 | UT-EPS-041: register空文字列password | E-01 (L157, L164) - !passwordは空文字列もfalsyとして処理 | ○ |

## 4) 不足情報（Unknown / Missing）
- **空文字列の扱い（C-38, C-39, C-40）**：コード上 `!password` や `!email` で判定しているため、空文字列はfalsyとしてエラーになると推測されるが、明示的なテストケースが既存テストに存在しない
  - 候補：既存テストへの空文字列ケース追加 / TypeScript型定義の確認

## 5) リスクフラグ（レビュー観点）
- **0: 低リスク** - 全体的にソースコードと既存テストからの根拠が十分
- **1: 中リスク** - 空文字列の境界値テスト（C-38〜C-41）はJavaScriptの暗黙の型変換に依存
- **0: 低リスク** - privateメソッド（upsertAuthIdentity）は間接的にテスト可能

## 6) レビュアーチェックリスト（最小）
- [ ] 空文字列（''）がバリデーションでエラーとして処理されることを確認
- [ ] isString関数の挙動（空文字列をtrueと判定するか）を確認
- [ ] privateメソッド（upsertAuthIdentity）の間接テストが十分かを確認
- [ ] hashPassword関数のScrypt設定が本番環境に適切かを確認
- [ ] provider_identities配列が空または存在しない場合の挙動を確認
