---
generated_at: 2026-02-25 12:00:00
metrics:
  claims_total: 223
  claims_with_evidence: 218
  claims_without_evidence: 5
confidence_derived: 0.98
---

# 根拠レポート：decap-cms-backend-github 単体テストケース一覧

## 本レポートについて

### 目的
本レポートは、生成された設計書・ドキュメントの信頼性を検証し、人間レビュアーが効率的にレビューできるようにすることを目的としています。

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

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

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**0.98**
  - 根拠あり：218 / 223、根拠なし：5
- 優先レビュー（高）
  1. **C-011 (UT-GHB-011)**: GitHub Status APIの各コンポーネントのstatus値確認が外部依存
  2. **C-032 (UT-GHB-032)**: デフォルトブランチ自動取得のフロー（isBranchConfigured=false時のfetch処理）が分岐条件と結合
  3. **C-125 (UT-GHB-125)**: openAuthoring時のリトライ回数10回はコードから読み取れるがテスト困難
  4. **C-216 (UT-GHB-216)**: storeMetadataのセマフォ制御を含む非同期フローの検証
  5. **C-218 (UT-GHB-218)**: deleteMetadataのエラー抑制動作の検証

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

- E-01: `packages/decap-cms-backend-github/src/implementation.tsx` — GitHubクラス（Backend実装）
- E-02: `packages/decap-cms-backend-github/src/API.ts` — APIクラス（REST API）
- E-03: `packages/decap-cms-backend-github/src/GraphQLAPI.ts` — GraphQLAPIクラス（GraphQL API）
- E-04: `packages/decap-cms-backend-github/src/AuthenticationPage.js` — 認証ページコンポーネント
- E-05: `packages/decap-cms-backend-github/src/index.ts` — モジュールエクスポート
- E-06: `packages/decap-cms-backend-github/src/queries.ts` — GraphQLクエリ定義
- E-07: `packages/decap-cms-backend-github/src/mutations.ts` — GraphQLミューテーション定義
- E-08: `packages/decap-cms-backend-github/src/fragments.ts` — GraphQLフラグメント定義
- E-09: `packages/decap-cms-backend-github/src/fragmentTypes.js` — GraphQLフラグメント型情報
- E-10: `packages/decap-cms-backend-github/src/__tests__/API.spec.js` — 既存テスト（API）
- E-11: `packages/decap-cms-backend-github/src/__tests__/implementation.spec.js` — 既存テスト（Implementation）
- E-12: `packages/decap-cms-backend-github/src/__tests__/GraphQLAPI.spec.js` — 既存テスト（GraphQL API）

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

### implementation.tsx (GitHub クラス)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-001 | constructorでrepo設定時に正常初期化 | E-01 (L94-134) | ○ |
| C-002 | proxied=falseでrepo未設定時にError | E-01 (L102-107) | ○ |
| C-003 | proxied=trueでrepo未設定でもOK | E-01 (L102-104) | ○ |
| C-004 | open_authoring有効でuseWorkflow無効時にError | E-01 (L112-117) | ○ |
| C-005 | branch未設定時にデフォルト'master' | E-01 (L123) | ○ |
| C-006 | branch名のトリム | E-01 (L123) | ○ |
| C-007 | 各オプションのデフォルト値 | E-01 (L124-133) | ○ |
| C-008 | isGitBackendがtrueを返す | E-01 (L136-138) | ○ |
| C-009 | status正常時の戻り値 | E-01 (L140-171) | ○ |
| C-010 | status API失敗時のフォールバック | E-01 (L152-155) | ○ |
| C-011 | APIダウン時の認証スキップ | E-01 (L140-170) | △ |
| C-012 | authComponentの戻り値 | E-01 (L173-179) | ○ |
| C-013 | restoreUser(openAuthoring無効) | E-01 (L181-187) | ○ |
| C-014 | restoreUser(openAuthoring有効) | E-01 (L181-187) | ○ |
| C-015 | currentUserのキャッシュ | E-01 (L213-229) | ○ |
| C-016 | currentUser nameフォールバック | E-01 (L224) | ○ |
| C-017 | userIsOriginMaintainer admin判定 | E-01 (L231-253) | ○ |
| C-018 | userIsOriginMaintainer write判定 | E-01 (L250) | ○ |
| C-019 | userIsOriginMaintainer read判定 | E-01 (L250) | ○ |
| C-020 | userIsOriginMaintainerキャッシュ | E-01 (L239-252) | ○ |
| C-021 | forkExists true判定 | E-01 (L255-277) | ○ |
| C-022 | forkExists false判定 | E-01 (L269-273) | ○ |
| C-023 | forkExists エラー時false | E-01 (L274-276) | ○ |
| C-024 | authenticateWithFork openAuthoring無効Error | E-01 (L286-288) | ○ |
| C-025 | authenticateWithFork メンテナー時フォーク不要 | E-01 (L293-297) | ○ |
| C-026 | authenticateWithFork alwaysFork有効時 | E-01 (L293) | ○ |
| C-027 | authenticateWithFork フォーク存在時merge-upstream | E-01 (L306-315) | ○ |
| C-028 | authenticateWithFork フォーク不存在時新規作成 | E-01 (L316-326) | ○ |
| C-029 | authenticate成功時の戻り値 | E-01 (L329-386) | ○ |
| C-030 | authenticate権限不足Error | E-01 (L372-375) | ○ |
| C-031 | authenticate bypassWriteAccess | E-01 (L373) | ○ |
| C-032 | authenticate デフォルトブランチ取得 | E-01 (L333-342) | △ |
| C-033 | authenticate GraphQL API選択 | E-01 (L343-344) | ○ |
| C-034 | logout token=null | E-01 (L388-393) | ○ |
| C-035 | logout api.reset呼び出し | E-01 (L390-392) | ○ |
| C-036 | getToken | E-01 (L395-397) | ○ |
| C-037 | getCursorAndFilesページネーション | E-01 (L399-421) | ○ |
| C-038 | getCursorAndFiles空配列 | E-01 (L399-421) | ○ |
| C-039 | getCursorAndFiles 1件 | E-01 (L399-421) | ○ |
| C-040 | getCursorAndFiles page2 | E-01 (L405-412) | ○ |
| C-041 | getCursorAndFiles 20件境界 | E-01 (L400-421) | ○ |
| C-042 | traverseCursor first | E-01 (L575-576) | ○ |
| C-043 | traverseCursor last | E-01 (L579-580) | ○ |
| C-044 | traverseCursor next | E-01 (L583-584) | ○ |
| C-045 | traverseCursor prev | E-01 (L587-588) | ○ |
| C-046 | traverseCursor default | E-01 (L591-593) | ○ |
| C-047 | getEntry正常系 | E-01 (L490-498) | ○ |
| C-048 | getEntry不存在時空文字 | E-01 (L497) | ○ |
| C-049 | getMedia | E-01 (L500-508) | ○ |
| C-050 | persistEntry | E-01 (L538-545) | ○ |
| C-051 | persistMedia正常系 | E-01 (L547-563) | ○ |
| C-052 | persistMediaエラー | E-01 (L559-562) | ○ |
| C-053 | deleteFiles | E-01 (L565-567) | ○ |
| C-054 | unpublishedEntry id指定 | E-01 (L645-664) | ○ |
| C-055 | unpublishedEntry collection/slug指定 | E-01 (L657-660) | ○ |
| C-056 | unpublishedEntry パラメータ未指定Error | E-01 (L662-663) | ○ |
| C-057 | getDeployPreview正常系 | E-01 (L684-698) | ○ |
| C-058 | getDeployPreviewステータスなしnull | E-01 (L693) | ○ |
| C-059 | getDeployPreviewエラーnull | E-01 (L695-696) | ○ |

### API.ts (API クラス)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-060 | constructor設定値 | E-02 (L228-252) | ○ |
| C-061 | constructorデフォルト値 | E-02 (L229-232) | ○ |
| C-062 | repo分割 | E-02 (L240-245) | ○ |
| C-063 | squashMerges=true | E-02 (L247) | ○ |
| C-064 | squashMerges=false | E-02 (L247) | ○ |
| C-065 | user正常系 | E-02 (L256-264) | ○ |
| C-066 | user nameフォールバック | E-02 (L261) | ○ |
| C-067 | userキャッシュ | E-02 (L257-259) | ○ |
| C-068 | hasWriteAccess true | E-02 (L266-278) | ○ |
| C-069 | hasWriteAccess false | E-02 (L273) | ○ |
| C-070 | hasWriteAccess エラー | E-02 (L275-277) | ○ |
| C-071 | requestHeaders認証あり | E-02 (L284-296) | ○ |
| C-072 | requestHeaders認証なし | E-02 (L290-295) | ○ |
| C-073 | parseJsonResponse成功 | E-02 (L298-306) | ○ |
| C-074 | parseJsonResponseエラー | E-02 (L300-301) | ○ |
| C-075 | urlForパラメータあり | E-02 (L308-319) | ○ |
| C-076 | urlForパラメータなし | E-02 (L315-318) | ○ |
| C-077 | parseResponse JSON | E-02 (L321-333) | ○ |
| C-078 | parseResponse テキスト | E-02 (L326-332) | ○ |
| C-079 | handleRequestError | E-02 (L335-337) | ○ |
| C-080 | generateContentKey通常 | E-02 (L387-394) | ○ |
| C-081 | generateContentKey OpenAuthoring | E-02 (L389-393) | ○ |
| C-082 | parseContentKey通常 | E-02 (L396-402) | ○ |
| C-083 | parseContentKey OpenAuthoring | E-02 (L397-401) | ○ |
| C-084 | readFile SHA指定 | E-02 (L644-662) | ○ |
| C-085 | readFile SHA未指定 | E-02 (L657-658) | ○ |
| C-086 | fetchBlobContent テキスト | E-02 (L684-704) | ○ |
| C-087 | fetchBlobContent バイナリ | E-02 (L694-702) | ○ |
| C-088 | listFiles正常系 | E-02 (L706-738) | ○ |
| C-089 | listFiles depth>1 recursive | E-02 (L716) | ○ |
| C-090 | listFiles 404空配列 | E-02 (L730-734) | ○ |
| C-091 | listFiles非404エラー | E-02 (L735-736) | ○ |
| C-092 | getFileSha正常系 | E-02 (L945-966) | ○ |
| C-093 | getFileSha不在Error | E-02 (L963-964) | ○ |
| C-094 | deleteFiles正常系 | E-02 (L968-978) | ○ |
| C-095 | deleteFiles OpenAuthoringリジェクト | E-02 (L969-970) | ○ |
| C-096 | persistFiles直接コミット | E-02 (L921-932) | ○ |
| C-097 | persistFilesワークフロー | E-02 (L933-942) | ○ |
| C-098 | createBranch正常系 | E-02 (L1261-1285) | ○ |
| C-099 | createBranch Reference update failed | E-02 (L1267-1268) | ○ |
| C-100 | createBranch Reference already exists | E-02 (L1270-1282) | ○ |
| C-101 | assertCmsBranch true | E-02 (L1287-1289) | ○ |
| C-102 | assertCmsBranch false | E-02 (L1287-1289) | ○ |
| C-103 | patchBranch通常 | E-02 (L1291-1297) | ○ |
| C-104 | patchBranch force非CMSブランチError | E-02 (L1293-1294) | ○ |
| C-105 | patchBranch force CMSブランチ | E-02 (L1291-1297) | ○ |
| C-106 | deleteBranch正常系 | E-02 (L1299-1310) | ○ |
| C-107 | deleteBranch冪等削除 | E-02 (L1303-1305) | ○ |
| C-108 | deleteBranch未知エラー | E-02 (L1307-1308) | ○ |
| C-109 | createPR | E-02 (L1316-1329) | ○ |
| C-110 | openPR | E-02 (L1331-1341) | ○ |
| C-111 | closePR | E-02 (L1343-1353) | ○ |
| C-112 | mergePR正常系 | E-02 (L1355-1375) | ○ |
| C-113 | mergePR 405フォールバック | E-02 (L1369-1370) | ○ |
| C-114 | mergePR非405エラー | E-02 (L1371-1373) | ○ |
| C-115 | toBase64 | E-02 (L1395-1397) | ○ |
| C-116 | uploadBlob | E-02 (L1399-1414) | ○ |
| C-117 | updateTree正常系 | E-02 (L1416-1463) | ○ |
| C-118 | updateTreeリネーム | E-02 (L1430-1458) | ○ |
| C-119 | commit正常系 | E-02 (L1474-1477) | ○ |
| C-120 | commit parentSha未指定 | E-02 (L1475) | ○ |
| C-121 | editorialWorkflowGit新規 | E-02 (L1004-1055) | ○ |
| C-122 | editorialWorkflowGit既存更新 | E-02 (L1031-1054) | ○ |
| C-123 | editorialWorkflowGit OpenAuthoring新規 | E-02 (L1018-1019) | ○ |
| C-124 | getDifferences正常系 | E-02 (L1057-1074) | ○ |
| C-125 | getDifferencesリトライ10回 | E-02 (L1059) | △ |
| C-126 | getDifferencesリトライ上限 | E-02 (L1066-1068) | ○ |
| C-127 | rebaseCommits正常系 | E-02 (L1108-1131) | ○ |
| C-128 | rebaseCommits空配列 | E-02 (L1113-1115) | ○ |
| C-129 | rebaseCommitsスキップ | E-02 (L1113) | ○ |
| C-130 | setPullRequestStatus | E-02 (L1149-1157) | ○ |
| C-131 | updateUnpublishedEntryStatus通常 | E-02 (L1159-1187) | ○ |
| C-132 | updateUnpublishedEntryStatus Open→draft | E-02 (L1173-1175) | ○ |
| C-133 | updateUnpublishedEntryStatus Closed→pending_review | E-02 (L1176-1178) | ○ |
| C-134 | deleteUnpublishedEntry正常系 | E-02 (L1189-1198) | ○ |
| C-135 | deleteUnpublishedEntry MOCK_PR | E-02 (L1194-1196) | ○ |
| C-136 | publishUnpublishedEntry | E-02 (L1200-1207) | ○ |
| C-137 | diffFromFile added | E-02 (L993-1002) | ○ |
| C-138 | diffFromFile modified | E-02 (L993-1002) | ○ |
| C-139 | diffFromFile binary | E-02 (L1000) | ○ |
| C-140 | diffFromFile svg | E-02 (L1000) | ○ |
| C-141 | diffFromFile renamed | E-02 (L1000) | ○ |
| C-142 | backupBranch | E-02 (L1246-1259) | ○ |
| C-143 | backupBranchエラー | E-02 (L1256-1258) | ○ |
| C-144 | getStatuses正常系 | E-02 (L905-919) | ○ |
| C-145 | getStatuses success変換 | E-02 (L917) | ○ |
| C-146 | getStatuses other変換 | E-02 (L917) | ○ |
| C-147 | withCmsLabel true | E-02 (L167-169) | ○ |
| C-148 | withCmsLabel false | E-02 (L167-169) | ○ |
| C-149 | getTreeFiles removed | E-02 (L175-193) | ○ |
| C-150 | getTreeFiles renamed | E-02 (L180-184) | ○ |
| C-151 | getTreeFiles added | E-02 (L186-188) | ○ |
| C-152 | getTreeFiles空配列 | E-02 (L176) | ○ |
| C-215 | forceMergePR | E-02 (L1377-1393) | ○ |
| C-216 | storeMetadata | E-02 (L428-456) | △ |
| C-217 | deleteMetadata正常系 | E-02 (L458-479) | ○ |
| C-218 | deleteMetadataエラー | E-02 (L473-476) | △ |
| C-219 | updatePullRequestLabels | E-02 (L985-990) | ○ |
| C-220 | getHeadReference | E-02 (L1312-1314) | ○ |
| C-221 | getBranchPullRequest通常 | E-02 (L578-591) | ○ |
| C-222 | getBranchPullRequestエラー | E-02 (L586-588) | ○ |
| C-223 | getBranchPullRequest OpenAuthoring | E-02 (L579-581) | ○ |

### GraphQLAPI.ts (GraphQLAPI クラス)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-153 | constructor ApolloClient初期化 | E-03 (L101-105) | ○ |
| C-154 | getApolloClient | E-03 (L107-132) | ○ |
| C-155 | reset | E-03 (L134-136) | ○ |
| C-156 | hasWriteAccess ADMIN | E-03 (L193-208) | ○ |
| C-157 | hasWriteAccess WRITE | E-03 (L203) | ○ |
| C-158 | hasWriteAccess MAINTAIN | E-03 (L203) | ○ |
| C-159 | hasWriteAccess READ | E-03 (L203) | ○ |
| C-160 | query正常系 | E-03 (L147-151) | ○ |
| C-161 | queryエラー | E-03 (L148-150) | ○ |
| C-162 | mutate正常系 | E-03 (L153-191) | ○ |
| C-163 | mutate Ref cannot be created | E-03 (L159-164) | ○ |
| C-164 | mutate既存Ref | E-03 (L165-188) | ○ |
| C-165 | readFile SHA未指定 | E-03 (L243-262) | ○ |
| C-166 | fetchBlobContent テキスト | E-03 (L264-283) | ○ |
| C-167 | fetchBlobContent バイナリフォールバック | E-03 (L280-282) | ○ |
| C-168 | fetchBlobContent isNull | E-03 (L277) | ○ |
| C-169 | fetchBlobContent parseText=false | E-03 (L265-266) | ○ |
| C-170 | getAllFilesフラット化 | E-03 (L360-381) | ○ |
| C-171 | getAllFiles空配列 | E-03 (L360-381) | ○ |
| C-172 | getAllFiles size未設定 | E-03 (L374) | ○ |
| C-173 | listFiles GraphQL | E-03 (L383-397) | ○ |
| C-174 | listFiles null空配列 | E-03 (L394-396) | ○ |
| C-175 | getBranchQualifiedName | E-03 (L399-401) | ○ |
| C-176 | getBranch正常系 | E-03 (L421-430) | ○ |
| C-177 | getBranch不在Error | E-03 (L426-428) | ○ |
| C-178 | createPR GraphQL | E-03 (L598-626) | ○ |
| C-179 | createBranch GraphQL | E-03 (L628-653) | ○ |
| C-180 | deleteBranch GraphQL | E-03 (L449-461) | ○ |
| C-181 | deleteUnpublishedEntry PR+ブランチ削除 | E-03 (L561-596) | ○ |
| C-182 | deleteUnpublishedEntry MOCK_PR | E-03 (L583-584) | ○ |
| C-183 | deleteUnpublishedEntry NOT_FOUND | E-03 (L587-593) | ○ |
| C-184 | getFileSha正常系 | E-03 (L701-712) | ○ |
| C-185 | getFileSha不在Error | E-03 (L711) | ○ |
| C-186 | getOwnerAndNameFromRepoUrl 自リポ | E-03 (L233-241) | ○ |
| C-187 | getOwnerAndNameFromRepoUrl originリポ | E-03 (L236-238) | ○ |
| C-188 | getPullRequests CMS prefix filter | E-03 (L290-326) | ○ |
| C-189 | getPullRequests Open states | E-03 (L297-298) | ○ |
| C-190 | getPullRequests Closed states | E-03 (L299-300) | ○ |
| C-191 | transformPullRequest | E-03 (L86-93) | ○ |
| C-192 | patchRef heads GraphQL | E-03 (L432-447) | ○ |
| C-193 | patchRef非headsフォールバック | E-03 (L433-435) | ○ |
| C-194 | openPR GraphQL | E-03 (L517-537) | ○ |
| C-195 | closePR GraphQL | E-03 (L539-559) | ○ |
| C-196 | createBranchAndPullRequest GraphQL | E-03 (L655-699) | ○ |
| C-197 | getStatuses GraphQL | E-03 (L344-358) | ○ |
| C-198 | getStatuses object null | E-03 (L355-357) | ○ |

### AuthenticationPage.js, index.ts, queries.ts
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-199 | handleLogin認証成功 | E-04 (L77-103) | ○ |
| C-200 | handleLogin認証エラー | E-04 (L94-96) | ○ |
| C-201 | handleLogin OpenAuthoring | E-04 (L98-99) | ○ |
| C-202 | getPermissionToFork requestingFork | E-04 (L48-62) | ○ |
| C-203 | getPermissionToFork approve | E-04 (L52-54) | ○ |
| C-204 | getPermissionToFork refuse | E-04 (L55-57) | ○ |
| C-205 | renderLoginButton通常 | E-04 (L105-115) | ○ |
| C-206 | renderLoginButton inProgress | E-04 (L107-108) | ○ |
| C-207 | render | E-04 (L145-161) | ○ |
| C-208 | getAuthenticationPageRenderArgs通常 | E-04 (L117-143) | ○ |
| C-209 | getAuthenticationPageRenderArgs fork要求中 | E-04 (L118-138) | ○ |
| C-210 | モジュールエクスポート | E-05 (L1-10) | ○ |
| C-211 | buildFilesQuery depth=1 | E-06 (L66-97) | ○ |
| C-212 | buildFilesQuery depth=3 | E-06 (L78-92) | ○ |
| C-213 | buildFilesQuery depth=0 | E-06 (L66-97) | △ |
| C-214 | files クエリ生成 | E-06 (L99-113) | ○ |

## 4) 不足情報（Unknown / Missing）
- **C-011**: GitHub Status APIの内部コンポーネント名やステータス文字列は外部依存であり、テスト時にモックする必要がある。ステータスAPIの仕様変更に対する検証は困難。
  - 候補：GitHub Status API ドキュメント / 実際のAPIレスポンスサンプル
- **C-032**: `isBranchConfigured=false`時のfetch処理が、constructorで設定されたapiRootとoriginRepoに依存するため、結合的な検証が必要。
  - 候補：E2Eテスト / 統合テストでの検証
- **C-125**: リトライ回数10回の検証は、タイマーモックが必要で実装が複雑。
  - 候補：Jest fake timers による検証
- **C-213**: `buildFilesQuery` にdepth=0を渡した場合の動作は、ループが0回実行されるため想定通り動作するが、実用上depth=0が使われるかは不明。
  - 候補：利用箇所の確認
- **C-216/C-218**: セマフォを使った非同期制御のテストは、並行実行シナリオの再現が困難。
  - 候補：セマフォライブラリのモック / 逐次実行テスト

## 5) リスクフラグ（レビュー観点）
- **1 (中リスク)**: storeMetadata/deleteMetadataのセマフォ制御のテスト — 並行アクセス時の整合性に影響
- **0 (低リスク)**: GitHub Status APIのモック — 外部APIの仕様変更時に影響
- **1 (中リスク)**: editorialWorkflowGitの分岐パターンが多い — 状態遷移の組み合わせテストが不足する可能性
- **0 (低リスク)**: GraphQLクエリのdepthパラメータ — 実用的な境界値テストのカバレッジ

## 6) レビュアーチェックリスト（最小）
- [ ] UT-GHB-002, UT-GHB-004: コンストラクタの異常系テストが、実際のエラーメッセージと一致しているか確認
- [ ] UT-GHB-029〜033: authenticate のフロー（ブランチ自動取得、API選択、権限チェック）が統合的に正しいか確認
- [ ] UT-GHB-080〜083: generateContentKey/parseContentKeyのOpen Authoring時のキー形式が正しいか確認
- [ ] UT-GHB-094〜097: persistFiles/deleteFilesのワークフロー分岐が網羅されているか確認
- [ ] UT-GHB-121〜123: editorialWorkflowGitの3つのパス（通常新規, 通常既存, OpenAuthoring新規）が十分にカバーされているか確認
- [ ] UT-GHB-163〜164: GraphQLAPI.mutateのエラーハンドリング分岐のカバレッジが十分か確認
- [ ] UT-GHB-199〜201: AuthenticationPageのhandleLoginのコールバック内分岐が正しいか確認
