Skip to content

Commit ba3a905

Browse files
authored
Merge pull request #523 from olegshtch/extendible-schema-test-suite
Add test suite to test dynamic reference and anchor link and their independency of order
2 parents fe405a1 + 458e7ac commit ba3a905

File tree

3 files changed

+308
-0
lines changed

3 files changed

+308
-0
lines changed

remotes/extendible-dynamic-ref.json

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
{
2+
"description": "extendible array",
3+
"$id": "http://localhost:1234/extendible-dynamic-ref.json",
4+
"type": "object",
5+
"properties": {
6+
"elements": {
7+
"type": "array",
8+
"items": {
9+
"$dynamicRef": "#elements"
10+
}
11+
}
12+
},
13+
"required": ["elements"],
14+
"additionalProperties": false,
15+
"$defs": {
16+
"elements": {
17+
"$dynamicAnchor": "elements"
18+
}
19+
}
20+
}

tests/draft-next/dynamicRef.json

Lines changed: 144 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -471,5 +471,149 @@
471471
"valid": true
472472
}
473473
]
474+
},
475+
{
476+
"description": "tests for implementation dynamic anchor and reference link",
477+
"schema": {
478+
"$id": "http://localhost:1234/strict-extendible.json",
479+
"$ref": "extendible-dynamic-ref.json",
480+
"$defs": {
481+
"elements": {
482+
"$dynamicAnchor": "elements",
483+
"properties": {
484+
"a": true
485+
},
486+
"required": ["a"],
487+
"additionalProperties": false
488+
}
489+
}
490+
},
491+
"tests": [
492+
{
493+
"description": "incorrect parent schema",
494+
"data": {
495+
"a": true
496+
},
497+
"valid": false
498+
},
499+
{
500+
"description": "incorrect extended schema",
501+
"data": {
502+
"elements": [
503+
{ "b": 1 }
504+
]
505+
},
506+
"valid": false
507+
},
508+
{
509+
"description": "correct extended schema",
510+
"data": {
511+
"elements": [
512+
{ "a": 1 }
513+
]
514+
},
515+
"valid": true
516+
}
517+
]
518+
},
519+
{
520+
"description": "Tests for implementation dynamic anchor and reference link. Reference should be independent of any possible ordering.",
521+
"schema": {
522+
"$id": "http://localhost:1234/strict-extendible-allof-defs-first.json",
523+
"allOf": [
524+
{
525+
"$ref": "extendible-dynamic-ref.json"
526+
},
527+
{
528+
"$defs": {
529+
"elements": {
530+
"$dynamicAnchor": "elements",
531+
"properties": {
532+
"a": true
533+
},
534+
"required": ["a"],
535+
"additionalProperties": false
536+
}
537+
}
538+
}
539+
]
540+
},
541+
"tests": [
542+
{
543+
"description": "incorrect parent schema",
544+
"data": {
545+
"a": true
546+
},
547+
"valid": false
548+
},
549+
{
550+
"description": "incorrect extended schema",
551+
"data": {
552+
"elements": [
553+
{ "b": 1 }
554+
]
555+
},
556+
"valid": false
557+
},
558+
{
559+
"description": "correct extended schema",
560+
"data": {
561+
"elements": [
562+
{ "a": 1 }
563+
]
564+
},
565+
"valid": true
566+
}
567+
]
568+
},
569+
{
570+
"description": "Tests for implementation dynamic anchor and reference link. Reference should be independent of any possible ordering.",
571+
"schema": {
572+
"$id": "http://localhost:1234/strict-extendible-allof-ref-first.json",
573+
"allOf": [
574+
{
575+
"$defs": {
576+
"elements": {
577+
"$dynamicAnchor": "elements",
578+
"properties": {
579+
"a": true
580+
},
581+
"required": ["a"],
582+
"additionalProperties": false
583+
}
584+
}
585+
},
586+
{
587+
"$ref": "extendible-dynamic-ref.json"
588+
}
589+
]
590+
},
591+
"tests": [
592+
{
593+
"description": "incorrect parent schema",
594+
"data": {
595+
"a": true
596+
},
597+
"valid": false
598+
},
599+
{
600+
"description": "incorrect extended schema",
601+
"data": {
602+
"elements": [
603+
{ "b": 1 }
604+
]
605+
},
606+
"valid": false
607+
},
608+
{
609+
"description": "correct extended schema",
610+
"data": {
611+
"elements": [
612+
{ "a": 1 }
613+
]
614+
},
615+
"valid": true
616+
}
617+
]
474618
}
475619
]

tests/draft2020-12/dynamicRef.json

Lines changed: 144 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -471,5 +471,149 @@
471471
"valid": true
472472
}
473473
]
474+
},
475+
{
476+
"description": "tests for implementation dynamic anchor and reference link",
477+
"schema": {
478+
"$id": "http://localhost:1234/strict-extendible.json",
479+
"$ref": "extendible-dynamic-ref.json",
480+
"$defs": {
481+
"elements": {
482+
"$dynamicAnchor": "elements",
483+
"properties": {
484+
"a": true
485+
},
486+
"required": ["a"],
487+
"additionalProperties": false
488+
}
489+
}
490+
},
491+
"tests": [
492+
{
493+
"description": "incorrect parent schema",
494+
"data": {
495+
"a": true
496+
},
497+
"valid": false
498+
},
499+
{
500+
"description": "incorrect extended schema",
501+
"data": {
502+
"elements": [
503+
{ "b": 1 }
504+
]
505+
},
506+
"valid": false
507+
},
508+
{
509+
"description": "correct extended schema",
510+
"data": {
511+
"elements": [
512+
{ "a": 1 }
513+
]
514+
},
515+
"valid": true
516+
}
517+
]
518+
},
519+
{
520+
"description": "Tests for implementation dynamic anchor and reference link. Reference should be independent of any possible ordering.",
521+
"schema": {
522+
"$id": "http://localhost:1234/strict-extendible-allof-defs-first.json",
523+
"allOf": [
524+
{
525+
"$ref": "extendible-dynamic-ref.json"
526+
},
527+
{
528+
"$defs": {
529+
"elements": {
530+
"$dynamicAnchor": "elements",
531+
"properties": {
532+
"a": true
533+
},
534+
"required": ["a"],
535+
"additionalProperties": false
536+
}
537+
}
538+
}
539+
]
540+
},
541+
"tests": [
542+
{
543+
"description": "incorrect parent schema",
544+
"data": {
545+
"a": true
546+
},
547+
"valid": false
548+
},
549+
{
550+
"description": "incorrect extended schema",
551+
"data": {
552+
"elements": [
553+
{ "b": 1 }
554+
]
555+
},
556+
"valid": false
557+
},
558+
{
559+
"description": "correct extended schema",
560+
"data": {
561+
"elements": [
562+
{ "a": 1 }
563+
]
564+
},
565+
"valid": true
566+
}
567+
]
568+
},
569+
{
570+
"description": "Tests for implementation dynamic anchor and reference link. Reference should be independent of any possible ordering.",
571+
"schema": {
572+
"$id": "http://localhost:1234/strict-extendible-allof-ref-first.json",
573+
"allOf": [
574+
{
575+
"$defs": {
576+
"elements": {
577+
"$dynamicAnchor": "elements",
578+
"properties": {
579+
"a": true
580+
},
581+
"required": ["a"],
582+
"additionalProperties": false
583+
}
584+
}
585+
},
586+
{
587+
"$ref": "extendible-dynamic-ref.json"
588+
}
589+
]
590+
},
591+
"tests": [
592+
{
593+
"description": "incorrect parent schema",
594+
"data": {
595+
"a": true
596+
},
597+
"valid": false
598+
},
599+
{
600+
"description": "incorrect extended schema",
601+
"data": {
602+
"elements": [
603+
{ "b": 1 }
604+
]
605+
},
606+
"valid": false
607+
},
608+
{
609+
"description": "correct extended schema",
610+
"data": {
611+
"elements": [
612+
{ "a": 1 }
613+
]
614+
},
615+
"valid": true
616+
}
617+
]
474618
}
475619
]

0 commit comments

Comments
 (0)