Skip to content

test: assurance-audit指摘のC3/D4テスト不備を修正 - #199

Merged
128na merged 2 commits into
masterfrom
assurance-test-fixes
Aug 26, 2026
Merged

test: assurance-audit指摘のC3/D4テスト不備を修正#199
128na merged 2 commits into
masterfrom
assurance-test-fixes

Conversation

@128na

@128na 128na commented Aug 26, 2026

Copy link
Copy Markdown
Owner

Summary

2026-08-26 実施の assurance-audit で見つかった、テストが実際には仕様を保証していなかった2件を修正する。

  • C3(機密情報redaction): SecretScrubberTest::test_scrub_array_recurses_and_masks_throwablejson_encode($result) 経由でアサートしていたため機能していなかった。PHPの例外オブジェクトは protected/private プロパティのため json_encode すると {} になり、walk() のThrowable伏字化処理が効いていようがいまいがテスト結果が変わらない見せかけの保証だった。scrubArray() の戻り値を直接アサートする形に修正。あわせて mb_strlen($value) >= 5 の長さ境界(ちょうど5文字)の伏字化を確認する境界値テストを追加。
  • D4(トランザクション原子性): UpdateOrCreatePageWithPaksTest の既存2テストは「DB::transaction() が呼ばれたか」のモック確認と正常系のコミット成功のみで、実際に途中失敗させてロールバックを確認するテストが無かった。SyncPak/UpdateOrCreatePagefinal のため Mockery 等での差し替えができない制約があり、array<int,PakSlug> という契約に反する値を渡すことで実コード内に本物の失敗($pak->value の読み取り失敗)を起こし、モックではなく本物のトランザクション・本物の例外経路でロールバックを検証するテストを追加。

両テストとも、修正前の実装にバグを注入して実際にredになることを確認済み(見せかけの保証ではないことの検証)。docs/known-risks.md のC3/B4/D4のテスト件数も追加分に合わせて更新した。

Test plan

  • php artisan test --testsuite=Feature 全81件green
  • php artisan test --testsuite=Unit green
  • composer run pint:check pass
  • composer run stan no errors
  • SecretScrubber.php のThrowable伏字化処理を一時的に無効化 → 新テストがred → 復元してgreenを確認
  • UpdateOrCreatePageWithPaks.php のDB::transactionラップを一時的に除去 → 新テストがred → 復元してgreenを確認

128na and others added 2 commits August 26, 2026 21:02
- SecretScrubberTest: json_encode経由のアサートは例外オブジェクトが
  protected/privateプロパティのため常に{}になり、伏字化の有無に
  かかわらず結果が変わらない見せかけの保証だった。scrubArray()の
  戻り値を直接アサートする形に修正し、5文字境界値の伏字化テストを追加。
- UpdateOrCreatePageWithPaksTest: 「DB::transactionが呼ばれたか」の
  モック確認と正常系コミットのみで、途中失敗時のロールバックを
  検証するテストが無かった欠落を追加。SyncPak/UpdateOrCreatePageは
  finalで差し替え不可なため、契約違反値を渡し実コードの本物の失敗
  経路でロールバックを検証する形にした。
- 修正前の実装にバグを注入し、両テストが実際にredになることを
  確認済み(見せかけの保証ではないことの検証)。
- docs/known-risks.md のC3/B4/D4テスト件数を追加分に合わせて更新。
@128na
128na merged commit fb547ab into master Aug 26, 2026
6 checks passed
@128na
128na deleted the assurance-test-fixes branch August 26, 2026 12:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants