Commit 379b3374 authored by Yuri Khan's avatar Yuri Khan

Add failing test for the case when a remote schema is violated (#1064)

parent 4c0f0036
...@@ -124,14 +124,20 @@ TEST(SchemaValidator, Hasher) { ...@@ -124,14 +124,20 @@ TEST(SchemaValidator, Hasher) {
#define INVALIDATE(schema, json, invalidSchemaPointer, invalidSchemaKeyword, invalidDocumentPointer) \ #define INVALIDATE(schema, json, invalidSchemaPointer, invalidSchemaKeyword, invalidDocumentPointer) \
{\ {\
SchemaValidator validator(schema);\ INVALIDATE_(schema, json, invalidSchemaPointer, invalidSchemaKeyword, invalidDocumentPointer, SchemaValidator, Pointer) \
}
#define INVALIDATE_(schema, json, invalidSchemaPointer, invalidSchemaKeyword, invalidDocumentPointer,\
SchemaValidatorType, PointerType) \
{\
SchemaValidatorType validator(schema);\
Document d;\ Document d;\
/*printf("\n%s\n", json);*/\ /*printf("\n%s\n", json);*/\
d.Parse(json);\ d.Parse(json);\
EXPECT_FALSE(d.HasParseError());\ EXPECT_FALSE(d.HasParseError());\
EXPECT_FALSE(d.Accept(validator));\ EXPECT_FALSE(d.Accept(validator));\
EXPECT_FALSE(validator.IsValid());\ EXPECT_FALSE(validator.IsValid());\
if (validator.GetInvalidSchemaPointer() != Pointer(invalidSchemaPointer)) {\ if (validator.GetInvalidSchemaPointer() != PointerType(invalidSchemaPointer)) {\
StringBuffer sb;\ StringBuffer sb;\
validator.GetInvalidSchemaPointer().Stringify(sb);\ validator.GetInvalidSchemaPointer().Stringify(sb);\
printf("GetInvalidSchemaPointer() Expected: %s Actual: %s\n", invalidSchemaPointer, sb.GetString());\ printf("GetInvalidSchemaPointer() Expected: %s Actual: %s\n", invalidSchemaPointer, sb.GetString());\
...@@ -142,7 +148,7 @@ TEST(SchemaValidator, Hasher) { ...@@ -142,7 +148,7 @@ TEST(SchemaValidator, Hasher) {
printf("GetInvalidSchemaKeyword() Expected: %s Actual %s\n", invalidSchemaKeyword, validator.GetInvalidSchemaKeyword());\ printf("GetInvalidSchemaKeyword() Expected: %s Actual %s\n", invalidSchemaKeyword, validator.GetInvalidSchemaKeyword());\
ADD_FAILURE();\ ADD_FAILURE();\
}\ }\
if (validator.GetInvalidDocumentPointer() != Pointer(invalidDocumentPointer)) {\ if (validator.GetInvalidDocumentPointer() != PointerType(invalidDocumentPointer)) {\
StringBuffer sb;\ StringBuffer sb;\
validator.GetInvalidDocumentPointer().Stringify(sb);\ validator.GetInvalidDocumentPointer().Stringify(sb);\
printf("GetInvalidDocumentPointer() Expected: %s Actual: %s\n", invalidDocumentPointer, sb.GetString());\ printf("GetInvalidDocumentPointer() Expected: %s Actual: %s\n", invalidDocumentPointer, sb.GetString());\
...@@ -1348,6 +1354,17 @@ TEST(SchemaValidator, Issue1017_allOfHandler) { ...@@ -1348,6 +1354,17 @@ TEST(SchemaValidator, Issue1017_allOfHandler) {
EXPECT_STREQ("{\"cyanArray2\":[],\"blackArray\":[]}", sb.GetString()); EXPECT_STREQ("{\"cyanArray2\":[],\"blackArray\":[]}", sb.GetString());
} }
TEST(SchemaValidator, Ref_remote) {
typedef GenericSchemaDocument<Value, MemoryPoolAllocator<> > SchemaDocumentType;
RemoteSchemaDocumentProvider<SchemaDocumentType> provider;
Document sd;
sd.Parse("{\"$ref\": \"http://localhost:1234/subSchemas.json#/integer\"}");
SchemaDocumentType s(sd, &provider);
typedef GenericSchemaValidator<SchemaDocumentType, BaseReaderHandler<UTF8<> >, MemoryPoolAllocator<> > SchemaValidatorType;
typedef GenericPointer<Value, MemoryPoolAllocator<> > PointerType;
INVALIDATE_(s, "null", "/integer", "type", "", SchemaValidatorType, PointerType);
}
#ifdef __clang__ #ifdef __clang__
RAPIDJSON_DIAG_POP RAPIDJSON_DIAG_POP
#endif #endif
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment