mirror of
https://github.com/justinrainbow/json-schema.git
synced 2025-05-01 20:09:46 +02:00
209 lines
5.9 KiB
PHP
209 lines
5.9 KiB
PHP
<?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\Constraints;
|
|
|
|
/**
|
|
* Class OfPropertiesTest
|
|
*/
|
|
class OfPropertiesTest extends BaseTestCase
|
|
{
|
|
|
|
public function getValidTests()
|
|
{
|
|
return array(
|
|
array(
|
|
'{"prop1": "abc"}',
|
|
'{
|
|
"type": "object",
|
|
"properties": {
|
|
"prop1": {"type": "string"},
|
|
"prop2": {
|
|
"oneOf": [
|
|
{"type": "number"},
|
|
{"type": "string"}
|
|
]
|
|
}
|
|
},
|
|
"required": ["prop1"]
|
|
}'
|
|
),
|
|
array(
|
|
'{"prop1": "abc", "prop2": 23}',
|
|
'{
|
|
"type": "object",
|
|
"properties": {
|
|
"prop1": {"type": "string"},
|
|
"prop2": {
|
|
"oneOf": [
|
|
{"type": "number"},
|
|
{"type": "string"}
|
|
]
|
|
}
|
|
},
|
|
"required": ["prop1"]
|
|
}'
|
|
),
|
|
);
|
|
}
|
|
|
|
public function getInvalidTests()
|
|
{
|
|
return array(
|
|
array(
|
|
'{"prop1": "abc", "prop2": []}',
|
|
'{
|
|
"type": "object",
|
|
"properties": {
|
|
"prop1": {"type": "string"},
|
|
"prop2": {
|
|
"oneOf": [
|
|
{"type": "number"},
|
|
{"type": "string"}
|
|
]
|
|
}
|
|
},
|
|
"required": ["prop1"]
|
|
}',
|
|
null,
|
|
array(
|
|
array(
|
|
"property" => "prop2",
|
|
"message" => "Array value found, but a string is required",
|
|
"constraint" => "type",
|
|
),
|
|
array(
|
|
"property" => "prop2",
|
|
"message" => "Array value found, but a number is required",
|
|
"constraint" => "type",
|
|
),
|
|
array(
|
|
"property" => "prop2",
|
|
"message" => "Failed to match exactly one schema",
|
|
"constraint" => "oneOf",
|
|
),
|
|
),
|
|
),
|
|
array(
|
|
'{"prop1": [1,2]}',
|
|
'{
|
|
"type": "object",
|
|
"properties": {
|
|
"prop1": {
|
|
"oneOf": [
|
|
{
|
|
"type": "string",
|
|
"pattern": "^[a-z]*$"
|
|
},
|
|
{
|
|
"type": "string",
|
|
"pattern": "^[A-Z]*$"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
}'
|
|
),
|
|
array(
|
|
'{"prop1": [1,2]}',
|
|
'{
|
|
"type": "object",
|
|
"properties": {
|
|
"prop1": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string",
|
|
"pattern": "^[A-Z]*$"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
}'
|
|
),
|
|
array(
|
|
'{"prop1": [1,2]}',
|
|
'{
|
|
"type": "object",
|
|
"properties": {
|
|
"prop1": {
|
|
"anyOf": [
|
|
{
|
|
"type": "number"
|
|
},
|
|
{
|
|
"type": "string",
|
|
"pattern": "^[A-Z]*$"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
}'
|
|
),
|
|
array(
|
|
'{"prop1": [1,2]}',
|
|
'{
|
|
"type": "object",
|
|
"properties": {
|
|
"prop1": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "string",
|
|
"pattern": "^[A-Z]*$"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
}'
|
|
),
|
|
array(
|
|
'{"prop1": [1,2]}',
|
|
'{
|
|
"type": "object",
|
|
"properties": {
|
|
"prop1": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string",
|
|
"pattern": "^[a-z]*$"
|
|
},
|
|
{
|
|
"type": "string",
|
|
"pattern": "^[A-Z]*$"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
}'
|
|
),
|
|
array(
|
|
'{"prop1": [1,2]}',
|
|
'{
|
|
"type": "object",
|
|
"properties": {
|
|
"prop1": {
|
|
"anyOf": [
|
|
{
|
|
"type": "number"
|
|
},
|
|
{
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "string"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
}'
|
|
)
|
|
);
|
|
}
|
|
}
|