1[
2    {
3        "description":
4            "additionalProperties being false does not allow other properties",
5        "schema": {
6            "$schema": "https://json-schema.org/draft/2020-12/schema",
7            "properties": {"foo": {}, "bar": {}},
8            "patternProperties": { "^v": {} },
9            "additionalProperties": false
10        },
11        "tests": [
12            {
13                "description": "no additional properties is valid",
14                "data": {"foo": 1},
15                "valid": true
16            },
17            {
18                "description": "an additional property is invalid",
19                "data": {"foo" : 1, "bar" : 2, "quux" : "boom"},
20                "valid": false
21            },
22            {
23                "description": "ignores arrays",
24                "data": [1, 2, 3],
25                "valid": true
26            },
27            {
28                "description": "ignores strings",
29                "data": "foobarbaz",
30                "valid": true
31            },
32            {
33                "description": "ignores other non-objects",
34                "data": 12,
35                "valid": true
36            },
37            {
38                "description": "patternProperties are not additional properties",
39                "data": {"foo":1, "vroom": 2},
40                "valid": true
41            }
42        ]
43    },
44    {
45        "description": "non-ASCII pattern with additionalProperties",
46        "schema": {
47            "$schema": "https://json-schema.org/draft/2020-12/schema",
48            "patternProperties": {"^á": {}},
49            "additionalProperties": false
50        },
51        "tests": [
52            {
53                "description": "matching the pattern is valid",
54                "data": {"ármányos": 2},
55                "valid": true
56            },
57            {
58                "description": "not matching the pattern is invalid",
59                "data": {"élmény": 2},
60                "valid": false
61            }
62        ]
63    },
64    {
65        "description": "additionalProperties with schema",
66        "schema": {
67            "$schema": "https://json-schema.org/draft/2020-12/schema",
68            "properties": {"foo": {}, "bar": {}},
69            "additionalProperties": {"type": "boolean"}
70        },
71        "tests": [
72            {
73                "description": "no additional properties is valid",
74                "data": {"foo": 1},
75                "valid": true
76            },
77            {
78                "description": "an additional valid property is valid",
79                "data": {"foo" : 1, "bar" : 2, "quux" : true},
80                "valid": true
81            },
82            {
83                "description": "an additional invalid property is invalid",
84                "data": {"foo" : 1, "bar" : 2, "quux" : 12},
85                "valid": false
86            }
87        ]
88    },
89    {
90        "description":
91            "additionalProperties can exist by itself",
92        "schema": {
93            "$schema": "https://json-schema.org/draft/2020-12/schema",
94            "additionalProperties": {"type": "boolean"}
95        },
96        "tests": [
97            {
98                "description": "an additional valid property is valid",
99                "data": {"foo" : true},
100                "valid": true
101            },
102            {
103                "description": "an additional invalid property is invalid",
104                "data": {"foo" : 1},
105                "valid": false
106            }
107        ]
108    },
109    {
110        "description": "additionalProperties are allowed by default",
111        "schema": {
112            "$schema": "https://json-schema.org/draft/2020-12/schema",
113            "properties": {"foo": {}, "bar": {}}
114        },
115        "tests": [
116            {
117                "description": "additional properties are allowed",
118                "data": {"foo": 1, "bar": 2, "quux": true},
119                "valid": true
120            }
121        ]
122    },
123    {
124        "description": "additionalProperties does not look in applicators",
125        "schema": {
126            "$schema": "https://json-schema.org/draft/2020-12/schema",
127            "allOf": [
128                {"properties": {"foo": {}}}
129            ],
130            "additionalProperties": {"type": "boolean"}
131        },
132        "tests": [
133            {
134                "description": "properties defined in allOf are not examined",
135                "data": {"foo": 1, "bar": true},
136                "valid": false
137            }
138        ]
139    },
140    {
141        "description": "additionalProperties with null valued instance properties",
142        "schema": {
143            "$schema": "https://json-schema.org/draft/2020-12/schema",
144            "additionalProperties": {
145                "type": "null"
146            }
147        },
148        "tests": [
149            {
150                "description": "allows null values",
151                "data": {"foo": null},
152                "valid": true
153            }
154        ]
155    }
156]
157