summaryrefslogtreecommitdiff
path: root/tests/draft4/required.json
blob: 6ccfdc2d4dfd6a81b2db17baca7bb3f6ff783b84 (plain)
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
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
[
    {
        "description": "required validation",
        "schema": {
            "properties": {
                "foo": {},
                "bar": {}
            },
            "required": ["foo"]
        },
        "tests": [
            {
                "description": "present required property is valid",
                "data": {"foo": 1},
                "valid": true
            },
            {
                "description": "non-present required property is invalid",
                "data": {"bar": 1},
                "valid": false
            },
            {
                "description": "ignores arrays",
                "data": [],
                "valid": true
            },
            {
                "description": "ignores strings",
                "data": "",
                "valid": true
            },
            {
                "description": "ignores other non-objects",
                "data": 12,
                "valid": true
            }
        ]
    },
    {
        "description": "required default validation",
        "schema": {
            "properties": {
                "foo": {}
            }
        },
        "tests": [
            {
                "description": "not required by default",
                "data": {},
                "valid": true
            }
        ]
    },
    {
        "description": "required with escaped characters",
        "schema": {
            "required": [
                "foo\nbar",
                "foo\"bar",
                "foo\\bar",
                "foo\rbar",
                "foo\tbar",
                "foo\fbar"
            ]
        },
        "tests": [
            {
                "description": "object with all properties present is valid",
                "data": {
                    "foo\nbar": 1,
                    "foo\"bar": 1,
                    "foo\\bar": 1,
                    "foo\rbar": 1,
                    "foo\tbar": 1,
                    "foo\fbar": 1
                },
                "valid": true
            },
            {
                "description": "object with some properties missing is invalid",
                "data": {
                    "foo\nbar": "1",
                    "foo\"bar": "1"
                },
                "valid": false
            }
        ]
    },
    {
        "description": "required properties whose names are Javascript object property names",
        "comment": "Ensure JS implementations don't universally consider e.g. __proto__ to always be present in an object.",
        "schema": { "required": ["__proto__", "toString", "constructor"] },
        "tests": [
            {
                "description": "ignores arrays",
                "data": [],
                "valid": true
            },
            {
                "description": "ignores other non-objects",
                "data": 12,
                "valid": true
            },
            {
                "description": "none of the properties mentioned",
                "data": {},
                "valid": false
            },
            {
                "description": "__proto__ present",
                "data": { "__proto__": "foo" },
                "valid": false
            },
            {
                "description": "toString present",
                "data": { "toString": { "length": 37 } },
                "valid": false
            },
            {
                "description": "constructor present",
                "data": { "constructor": { "length": 37 } },
                "valid": false
            },
            {
                "description": "all present",
                "data": { 
                    "__proto__": 12,
                    "toString": { "length": "foo" },
                    "constructor": 37
                },
                "valid": true
            }
        ]
    }
]