tao-test/app/vendor/league/openapi-psr7-validator/tests/Schema/InvalidDataTrackingTest.php

64 lines
1.5 KiB
PHP

<?php
declare(strict_types=1);
namespace League\OpenAPIValidation\Tests\Schema;
use League\OpenAPIValidation\Schema\Exception\TypeMismatch;
use League\OpenAPIValidation\Schema\SchemaValidator;
final class InvalidDataTrackingTest extends SchemaValidatorTest
{
public function testItShowsInvalidDataAddress() : void
{
$spec = <<<SPEC
schema:
type: array
items:
type: string
SPEC;
$schema = $this->loadRawSchema($spec);
$data = ['valid1', 'valid2', .0];
try {
(new SchemaValidator())->validate($data, $schema);
} catch (TypeMismatch $e) {
$this->assertEquals([2], $e->dataBreadCrumb()->buildChain());
$this->assertEquals($data[2], $e->data());
}
}
public function testItShowsInvalidDataAddressNested() : void
{
$spec = <<<SPEC
schema:
type: array
items:
type: array
items:
type: object
properties:
name:
type: string
SPEC;
$schema = $this->loadRawSchema($spec);
$data = [
[
['name' => 'good name'],
],
[
['name' => .0],
],
];
try {
(new SchemaValidator())->validate($data, $schema);
} catch (TypeMismatch $e) {
$this->assertEquals([1, 0, 'name'], $e->dataBreadCrumb()->buildChain());
$this->assertEquals($data[1][0]['name'], $e->data());
}
}
}