目的
webhook 受け口の HMAC-SHA256 署名検証 verifyGitHubSignature(送信元が本物の GitHub であること+本文改竄なしを同時保証する trust boundary)をテストでカバーする。#225 で「余力で」とされ未実施だった分。認証・trust boundary は subtractive の例外(明示的に守る領域)のためテスト価値が高い。
前提
- 現状
verifyGitHubSignature は worker/src/index.ts の module-private 関数。
index.ts は agent / oauth / store 等のフルグラフを import するため、関数を直接 import すると不要な依存を引き込み、軽量 unit test に載せにくい。
- 関数自体は
crypto.subtle(Web Crypto)のみ使用=純ロジック。
方針・制約
テスト内容
- 正しい署名(同一 secret + 同一 body で生成)→
true
- 本文改竄(署名生成後に body を変える)→
false
- 別 secret で検証 →
false
- 署名フォーマット不一致(空文字 /
sha256= prefix 無し / 長さ違い)→ false
影響スコープ
signature.ts 抽出+test 追加のみ。ユーザー/システム観測可能なランタイム変更なし → patch。
target files
worker/src/signature.ts(新規)
worker/src/index.ts(関数抽出に伴う import 差し替え)
worker/test/signature.test.ts(新規)
関連
目的
webhook 受け口の HMAC-SHA256 署名検証
verifyGitHubSignature(送信元が本物の GitHub であること+本文改竄なしを同時保証する trust boundary)をテストでカバーする。#225 で「余力で」とされ未実施だった分。認証・trust boundary は subtractive の例外(明示的に守る領域)のためテスト価値が高い。前提
verifyGitHubSignatureはworker/src/index.tsの module-private 関数。index.tsは agent / oauth / store 等のフルグラフを import するため、関数を直接 import すると不要な依存を引き込み、軽量 unit test に載せにくい。crypto.subtle(Web Crypto)のみ使用=純ロジック。方針・制約
verifyGitHubSignatureをworker/src/signature.tsに抽出し、index.tsは import に差し替える。挙動は不変(関数を移動するだけ)。tsx --testの純 unit test(crypto.subtleは Node 20+ に存在、Miniflare 不要、test(worker,shared): add unit tests for core logic (summarize, rate-limit, github-ip) #223 / test(worker,shared): unit tests for summarize, rate-limit, github-ip core logic (patch) #224 と同路線)。既存test/*.test.tsglob が自動で拾う。テスト内容
truefalsefalsesha256=prefix 無し / 長さ違い)→false影響スコープ
signature.ts抽出+test 追加のみ。ユーザー/システム観測可能なランタイム変更なし → patch。target files
worker/src/signature.ts(新規)worker/src/index.ts(関数抽出に伴う import 差し替え)worker/test/signature.test.ts(新規)関連