背景
PR #247(issue #246 の修正)で、OpenApiResponseValidator::validate() に、strict-required walker へボディを渡す前に PresentJsonNull マーカーを実 null へ unwrap する1行を追加した:
$responseBody instanceof PresentJsonNull ? null : $responseBody,
pr-test レビューで、この unwrap 経路を直接固定するテストが無いと指摘された(severity 6)。
現状
アダプタ経由のテストはマーカーを OpenApiResponseValidator → ResponseBodyValidator へ通過させるが、いずれも validation failure を assert しており、success パス上の strict-required 記録(maybeRecordStrictRequired() / StrictRequiredBodyWalker::collectPointers())がマーカーをどう扱うかは検証していない。
問題
unwrap の ternary を削除しても、walker はマーカー enum を非 object / 非 array として無害に処理する可能性が高く、回帰がテストで捕捉されない。literal-null ボディが nullable schema に対して success する経路で、strict-required tracker がマーカー object ではなく実 null を観測することが pin されていない。
やること
OpenApiResponseValidator に対し、PresentJsonNull マーカーを含む literal-null レスポンスボディを OAS 3.1 nullable schema(type: ["object","null"] 等、validation が success する)で検証し、注入した StrictRequiredTracker がマーカーではなく null を観測する(あるいは object ポインタを記録しない)ことを assert する回帰テストを追加する。
- 既存の strict-required 系テスト(
tests/Unit/Validation/Strict/ 等)のパターンに合わせる。
ゴール
OpenApiResponseValidator::validate() の instanceof PresentJsonNull unwrap を削除すると失敗する回帰テストが green。
関連
背景
PR #247(issue #246 の修正)で、
OpenApiResponseValidator::validate()に、strict-required walker へボディを渡す前にPresentJsonNullマーカーを実nullへ unwrap する1行を追加した:pr-test レビューで、この unwrap 経路を直接固定するテストが無いと指摘された(severity 6)。
現状
アダプタ経由のテストはマーカーを
OpenApiResponseValidator→ResponseBodyValidatorへ通過させるが、いずれも validation failure を assert しており、success パス上の strict-required 記録(maybeRecordStrictRequired()/StrictRequiredBodyWalker::collectPointers())がマーカーをどう扱うかは検証していない。問題
unwrap の ternary を削除しても、walker はマーカー enum を非 object / 非 array として無害に処理する可能性が高く、回帰がテストで捕捉されない。literal-null ボディが nullable schema に対して success する経路で、strict-required tracker がマーカー object ではなく実
nullを観測することが pin されていない。やること
OpenApiResponseValidatorに対し、PresentJsonNullマーカーを含む literal-null レスポンスボディを OAS 3.1 nullable schema(type: ["object","null"]等、validation が success する)で検証し、注入したStrictRequiredTrackerがマーカーではなくnullを観測する(あるいは object ポインタを記録しない)ことを assert する回帰テストを追加する。tests/Unit/Validation/Strict/等)のパターンに合わせる。ゴール
OpenApiResponseValidator::validate()のinstanceof PresentJsonNullunwrap を削除すると失敗する回帰テストが green。関連