<?php declare(strict_types=1); namespace League\OpenAPIValidation\Tests\FromCommunity; use GuzzleHttp\Psr7\ServerRequest; use League\OpenAPIValidation\PSR7\ValidatorBuilder; use PHPUnit\Framework\TestCase; use function GuzzleHttp\Psr7\stream_for; use function json_encode; final class Issue12Test extends TestCase { /** * @see https://github.com/lezhnev74/openapi-psr7-validator/issues/12 * * @param mixed[]|null $example * * @dataProvider getNullableTypeExamples */ public function testIssue12(?array $example) : void { $yaml = /** @lang yaml */ <<<YAML openapi: 3.0.0 info: title: Product import API version: '1.0' servers: - url: 'http://localhost:8000/api/v1' paths: /products.create: post: requestBody: required: true content: application/json: schema: properties: test: nullable: true type: array items: type: integer minItems: 1 responses: '200': description: OK content: application/json: schema: properties: result: type: string YAML; $validator = (new ValidatorBuilder())->fromYaml($yaml)->getServerRequestValidator(); $psrRequest = (new ServerRequest('post', 'http://localhost:8000/api/v1/products.create')) ->withHeader('Content-Type', 'application/json') ->withBody(stream_for(json_encode(['test' => $example]))); $validator->validate($psrRequest); $this->addToAssertionCount(1); } /** * @return mixed[] */ public function getNullableTypeExamples() : array { return [ 'nullable null' => [null], 'nullable array' => [[123]], ]; } }