-
Notifications
You must be signed in to change notification settings - Fork 356
/
Copy pathRefTest.php
79 lines (71 loc) · 2.36 KB
/
RefTest.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
<?php
/*
* This file is part of the JsonSchema package.
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace JsonSchema\Tests;
use JsonSchema\Validator;
use PHPUnit\Framework\TestCase;
class RefTest extends TestCase
{
public function dataRefIgnoresSiblings()
{
return array(
// #0 check that $ref is resolved and the instance is validated against
// the referenced schema
array(
'{
"definitions":{"test": {"type": "integer"}},
"properties": {
"propertyOne": {"$ref": "#/definitions/test"}
}
}',
'{"propertyOne": "not an integer"}',
false
),
// #1 check that sibling properties of $ref are ignored during validation
array(
'{
"definitions":{
"test": {"type": "integer"}
},
"properties": {
"propertyOne": {
"$ref": "#/definitions/test",
"maximum": 5
}
}
}',
'{"propertyOne": 10}',
true
),
// #2 infinite-loop / unresolveable circular reference
array(
'{
"definitions": {
"test1": {"$ref": "#/definitions/test2"},
"test2": {"$ref": "#/definitions/test1"}
},
"properties": {"propertyOne": {"$ref": "#/definitions/test1"}}
}',
'{"propertyOne": 5}',
true,
'\JsonSchema\Exception\UnresolvableJsonPointerException'
)
);
}
/** @dataProvider dataRefIgnoresSiblings */
public function testRefIgnoresSiblings($schema, $document, $isValid, $exception = null)
{
$document = json_decode($document);
$schema = json_decode($schema);
$v = new Validator();
if ($exception) {
$this->expectException($exception);
}
$v->validate($document, $schema);
$this->assertEquals($isValid, $v->isValid());
}
}