File: test_fetch_absolute_uri_document_callback.cpp

package info (click to toggle)
valijson 1.0%2Brepack-2
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 2,716 kB
  • sloc: cpp: 19,366; sh: 134; makefile: 24
file content (80 lines) | stat: -rw-r--r-- 2,487 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80

#include <gtest/gtest.h>

#include <valijson/adapters/rapidjson_adapter.hpp>

#include <valijson/schema.hpp>
#include <valijson/schema_parser.hpp>
#include <valijson/validator.hpp>

using valijson::Schema;
using valijson::SchemaParser;
using valijson::adapters::RapidJsonAdapter;
using valijson::Validator;

class TestFetchAbsoluteUriDocumentCallback : public ::testing::Test
{

};

const rapidjson::Document * fetchAbsoluteUriDocument(const std::string &uri)
{
    EXPECT_STREQ("http://localhost:1234/", uri.c_str());

    rapidjson::Document *fetchedRoot = new rapidjson::Document();
    fetchedRoot->SetObject();

    rapidjson::Value valueOfTypeAttribute;
    valueOfTypeAttribute.SetString("string", fetchedRoot->GetAllocator());

    rapidjson::Value schemaOfTestProperty;
    schemaOfTestProperty.SetObject();
    schemaOfTestProperty.AddMember("type", valueOfTypeAttribute,
            fetchedRoot->GetAllocator());

    rapidjson::Value propertiesConstraint;
    propertiesConstraint.SetObject();
    propertiesConstraint.AddMember("test", schemaOfTestProperty,
            fetchedRoot->GetAllocator());

    fetchedRoot->AddMember("properties", propertiesConstraint,
            fetchedRoot->GetAllocator());

    return fetchedRoot;
}

void freeAbsoluteUriDocument(const rapidjson::Document *adapter)
{
    delete adapter;
}

TEST_F(TestFetchAbsoluteUriDocumentCallback, Basics)
{
    // Define schema
    rapidjson::Document schemaDocument;
    RapidJsonAdapter schemaDocumentAdapter(schemaDocument);
    schemaDocument.SetObject();
    schemaDocument.AddMember("$ref", "http://localhost:1234/#/",
            schemaDocument.GetAllocator());

    // Parse schema document
    Schema schema;
    SchemaParser schemaParser;
    schemaParser.populateSchema(schemaDocumentAdapter, schema, fetchAbsoluteUriDocument,
            freeAbsoluteUriDocument);

    // Test resulting schema with a valid document
    rapidjson::Document validDocument;
    validDocument.SetObject();
    validDocument.AddMember("test", "valid", schemaDocument.GetAllocator());
    Validator validator;
    EXPECT_TRUE(validator.validate(schema, RapidJsonAdapter(validDocument),
            NULL));

    // Test resulting schema with an invalid document
    rapidjson::Document invalidDocument;
    invalidDocument.SetObject();
    invalidDocument.AddMember("test", 123, schemaDocument.GetAllocator());
    EXPECT_FALSE(validator.validate(schema, RapidJsonAdapter(invalidDocument),
            NULL));
}