MCPcopy Create free account
hub / github.com/pboettch/json-schema-validator / main

Function main

test/binary-validation.cpp:109–175  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

107}
108
109int main()
110{
111 validator val(nullptr, nullptr, content);
112
113 // create some bson doc
114 json::binary_t arr;
115 std::string as_binary = "hello world";
116 std::copy(as_binary.begin(), as_binary.end(), std::back_inserter(arr));
117
118 json binary = json::binary(arr);
119
120 store_ptr_err_handler err;
121
122 /////////////////////////////////////
123 val.set_root_schema(bson_schema);
124
125 // all right
126 val.validate({{"standard_string", "some string"}, {"binary_data", binary}}, err);
127 EXPECT_EQ(err.failed_pointers.size(), 0);
128 err.reset();
129
130 // invalid binary data
131 val.validate({{"binary_data", "string, but expect binary data"}}, err);
132 EXPECT_EQ(err.failed_pointers.size(), 1);
133 EXPECT_EQ(err.failed_pointers[0].to_string(), "/binary_data");
134 err.reset();
135
136 // also check that simple string not accept binary data
137 val.validate({{"standard_string", binary}, {"binary_data", binary}}, err);
138 EXPECT_EQ(err.failed_pointers.size(), 1);
139 EXPECT_EQ(err.failed_pointers[0].to_string(), "/standard_string");
140 err.reset();
141
142 /////////////////////////////////////
143 // check with array of types
144
145 // check simple types
146 val.set_root_schema(array_of_types);
147 val.validate({{"something", 1}}, err);
148 val.validate({{"something", false}}, err);
149 // TODO when we set `string` in array and set `contentEncoding` = "binary" - what it means? We expected string or binary?
150 // Or we expect only binary? Now if you set `contentEncoding` = "binary", then it means that you expect only binary data,
151 // not string
152 // val.validate({{"something", "string"}}, err); -> produce error about type
153 EXPECT_EQ(err.failed_pointers.size(), 0);
154 err.reset();
155
156 // check binary data
157 val.validate({{"something", binary}}, err);
158 EXPECT_EQ(err.failed_pointers.size(), 0);
159 err.reset();
160
161 /////////////////////////////////////
162 // and check that you can't set binary data if contentEncoding don't set
163 val.set_root_schema(array_of_types_without_binary);
164 val.validate({{"something", binary}}, err);
165 EXPECT_EQ(err.failed_pointers.size(), 1);
166 EXPECT_EQ(err.failed_pointers[0].to_string(), "/something");

Callers

nothing calls this directly

Calls 5

EXPECT_EQFunction · 0.85
to_stringMethod · 0.80
set_root_schemaMethod · 0.45
validateMethod · 0.45
resetMethod · 0.45

Tested by

no test coverage detected