Skip to content

tech-debt(test) — OpenApiResponseValidator の PresentJsonNull unwrap 経路に回帰テストが無い #249

@wadakatu

Description

@wadakatu

背景

PR #247(issue #246 の修正)で、OpenApiResponseValidator::validate() に、strict-required walker へボディを渡す前に PresentJsonNull マーカーを実 null へ unwrap する1行を追加した:

$responseBody instanceof PresentJsonNull ? null : $responseBody,

pr-test レビューで、この unwrap 経路を直接固定するテストが無いと指摘された(severity 6)。

現状

アダプタ経由のテストはマーカーを OpenApiResponseValidatorResponseBodyValidator へ通過させるが、いずれも 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。

関連

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions