1[ 2 { 3 "description": "Tests that validate custom message functionality where overrides can be provided at schema level for individual keywords", 4 "schema": { 5 "type": "object", 6 "properties": { 7 "foo": { 8 "type": "array", 9 "maxItems": 3, 10 "items" : { 11 "type" : "number" 12 }, 13 "message" : { 14 "maxItems" : "Custom Message: Maximum 3 numbers can be given in 'foo'", 15 "type" : "Custom Message: Only numbers are supported in 'foo'" 16 } 17 }, 18 "bar": { 19 "type": "string" 20 } 21 }, 22 "message": { 23 "type" : "Custom Message: Invalid type provided" 24 } 25 }, 26 "tests": [ 27 { 28 "description": "Basic Success Test 1", 29 "data": { 30 "foo": [], 31 "bar": "Bar 1" 32 }, 33 "valid": true 34 }, 35 { 36 "description": "Basic Success Test 2", 37 "data": { 38 "foo": [1, 2], 39 "bar": "Bar 1" 40 }, 41 "valid": true 42 }, 43 { 44 "description": "Custom error message for keyword failing at top level - type keyword", 45 "data": { 46 "foo": [1, 2, 3], 47 "bar": 123 48 }, 49 "valid": false, 50 "validationMessages": [ 51 "Custom Message: Invalid type provided" 52 ] 53 }, 54 { 55 "description": "Custom error message for keyword failing at nested property level - type keyword", 56 "data": { 57 "foo": [1, 2, "text"], 58 "bar": "Bar 1" 59 }, 60 "valid": false, 61 "validationMessages": [ 62 "Custom Message: Only numbers are supported in 'foo'" 63 ] 64 }, 65 { 66 "description": "Custom error message for keyword failing at nested property level - maxItems keyword", 67 "data": { 68 "foo": [1, 2, 3, 4], 69 "bar": "Bar 1" 70 }, 71 "valid": false, 72 "validationMessages": [ 73 "Custom Message: Maximum 3 numbers can be given in 'foo'" 74 ] 75 }, 76 { 77 "description": "Custom error message for keyword failing at both top level and nested property level - type keyword", 78 "data": { 79 "foo": [1, 2, "text"], 80 "bar": 123 81 }, 82 "valid": false, 83 "validationMessages": [ 84 "Custom Message: Invalid type provided", 85 "Custom Message: Only numbers are supported in 'foo'" 86 ] 87 }, 88 { 89 "description": "Custom error message for keyword failing at both top level and nested property level - type keyword", 90 "data": { 91 "foo": [1, 2, "text", 3], 92 "bar": 123 93 }, 94 "valid": false, 95 "validationMessages": [ 96 "Custom Message: Invalid type provided", 97 "Custom Message: Only numbers are supported in 'foo'", 98 "Custom Message: Maximum 3 numbers can be given in 'foo'" 99 ] 100 } 101 ] 102 }, 103 { 104 "description": "messages for keywords for different properties", 105 "schema": { 106 "type": "object", 107 "properties": { 108 "foo": { 109 "type": "number" 110 }, 111 "bar": { 112 "type": "string" 113 } 114 }, 115 "required": ["foo", "bar"], 116 "message": { 117 "type" : "should be an object", 118 "required": { 119 "foo" : "{0}: ''foo'' is required", 120 "bar" : "{0}: ''bar'' is required" 121 } 122 } 123 }, 124 "tests": [ 125 { 126 "description": "bar is required", 127 "data": { 128 "foo": 1 129 }, 130 "valid": false, 131 "validationMessages": [ 132 "$: 'bar' is required" 133 ] 134 }, 135 { 136 "description": "foo is required", 137 "data": { 138 "bar": "bar" 139 }, 140 "valid": false, 141 "validationMessages": [ 142 "$: 'foo' is required" 143 ] 144 }, 145 { 146 "description": "both foo and bar are required", 147 "data": { 148 }, 149 "valid": false, 150 "validationMessages": [ 151 "$: 'foo' is required", 152 "$: 'bar' is required" 153 ] 154 } 155 ] 156 }, 157 { 158 "description": "messages for keywords with arguments", 159 "schema": { 160 "type": "object", 161 "properties": { 162 "requestedItems": { 163 "type": "array", 164 "minItems": 1, 165 "items": { 166 "properties": { 167 "item": { 168 "type": "string", 169 "minLength": 1, 170 "message": { 171 "minLength": "{0}: Item should not be empty" 172 } 173 } 174 } 175 } 176 } 177 } 178 }, 179 "tests": [ 180 { 181 "description": "should not be empty", 182 "data": { 183 "requestedItems": [ 184 { 185 "item": "" 186 } 187 ] 188 }, 189 "valid": false, 190 "validationMessages": [ 191 "$.requestedItems[0].item: Item should not be empty" 192 ] 193 } 194 ] 195 } 196]