| 107 | } |
| 108 | |
| 109 | int 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"); |
nothing calls this directly
no test coverage detected