mirror of
				https://github.com/Tencent/rapidjson.git
				synced 2025-10-27 19:10:24 +01:00 
			
		
		
		
	Add failing test for the case when a remote schema is violated (#1064)
This commit is contained in:
		| @@ -124,14 +124,20 @@ TEST(SchemaValidator, Hasher) { | ||||
|  | ||||
| #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;\ | ||||
|     /*printf("\n%s\n", json);*/\ | ||||
|     d.Parse(json);\ | ||||
|     EXPECT_FALSE(d.HasParseError());\ | ||||
|     EXPECT_FALSE(d.Accept(validator));\ | ||||
|     EXPECT_FALSE(validator.IsValid());\ | ||||
|     if (validator.GetInvalidSchemaPointer() != Pointer(invalidSchemaPointer)) {\ | ||||
|     if (validator.GetInvalidSchemaPointer() != PointerType(invalidSchemaPointer)) {\ | ||||
|         StringBuffer sb;\ | ||||
|         validator.GetInvalidSchemaPointer().Stringify(sb);\ | ||||
|         printf("GetInvalidSchemaPointer() Expected: %s Actual: %s\n", invalidSchemaPointer, sb.GetString());\ | ||||
| @@ -142,7 +148,7 @@ TEST(SchemaValidator, Hasher) { | ||||
|         printf("GetInvalidSchemaKeyword() Expected: %s Actual %s\n", invalidSchemaKeyword, validator.GetInvalidSchemaKeyword());\ | ||||
|         ADD_FAILURE();\ | ||||
|     }\ | ||||
|     if (validator.GetInvalidDocumentPointer() != Pointer(invalidDocumentPointer)) {\ | ||||
|     if (validator.GetInvalidDocumentPointer() != PointerType(invalidDocumentPointer)) {\ | ||||
|         StringBuffer sb;\ | ||||
|         validator.GetInvalidDocumentPointer().Stringify(sb);\ | ||||
|         printf("GetInvalidDocumentPointer() Expected: %s Actual: %s\n", invalidDocumentPointer, sb.GetString());\ | ||||
| @@ -1348,6 +1354,17 @@ TEST(SchemaValidator, Issue1017_allOfHandler) { | ||||
|     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__ | ||||
| RAPIDJSON_DIAG_POP | ||||
| #endif | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Yuri Khan
					Yuri Khan