1 // Copyright (C) 2018-2020 Internet Systems Consortium, Inc. ("ISC")
2 //
3 // This Source Code Form is subject to the terms of the Mozilla Public
4 // License, v. 2.0. If a copy of the MPL was not distributed with this
5 // file, You can obtain one at http://mozilla.org/MPL/2.0/.
6
7 #include <config.h>
8 #include <cc/user_context.h>
9 #include <gtest/gtest.h>
10
11 using namespace isc::data;
12
13 namespace {
14
gen()15 ElementPtr gen() {
16 std::string content = "{ \"foo\": 1, \"bar\": \"xyz\" }";
17 return (Element::fromJSON(content));
18 }
19
TEST(UserContext,setget)20 TEST(UserContext, setget) {
21 UserContext parent;
22 EXPECT_FALSE(parent.getContext());
23 ConstElementPtr map = gen();
24 parent.setContext(map);
25 ConstElementPtr ctx = parent.getContext();
26 EXPECT_EQ(*ctx, *map);
27 }
28
TEST(UserContext,null)29 TEST(UserContext, null) {
30 UserContext parent;
31 ElementPtr map = gen();
32 parent.contextToElement(map);
33 ElementPtr expected = gen();
34 EXPECT_EQ(*expected, *map);
35 }
36
TEST(UserContext,notMap)37 TEST(UserContext, notMap) {
38 UserContext parent;
39 ConstElementPtr ctx = Element::create("foo");
40 parent.setContext(ctx);
41 ElementPtr map = gen();
42 parent.contextToElement(map);
43 ElementPtr expected = gen();
44 expected->set("user-context", ctx);
45 EXPECT_EQ(*expected, *map);
46 }
47
TEST(UserContext,empty)48 TEST(UserContext, empty) {
49 UserContext parent;
50 ConstElementPtr ctx = Element::createMap();
51 parent.setContext(ctx);
52 ElementPtr map = gen();
53 parent.contextToElement(map);
54 ElementPtr expected = gen();
55 expected->set("user-context", ctx);
56 EXPECT_EQ(*expected, *map);
57 }
58
TEST(UserContext,noComment)59 TEST(UserContext, noComment) {
60 UserContext parent;
61 ConstElementPtr ctx = Element::fromJSON("{ \"version\": 1 }");
62 parent.setContext(ctx);
63 ElementPtr map = gen();
64 parent.contextToElement(map);
65 ElementPtr expected = gen();
66 expected->set("user-context", ctx);
67 EXPECT_EQ(*expected, *map);
68 };
69
TEST(UserContext,onlyComment)70 TEST(UserContext, onlyComment) {
71 UserContext parent;
72 ConstElementPtr ctx = Element::fromJSON("{ \"comment\": \"foobar\" }");
73 parent.setContext(ctx);
74 ElementPtr map = gen();
75 parent.contextToElement(map);
76 ElementPtr expected = gen();
77 expected->set("user-context", ctx);
78 EXPECT_EQ(*expected, *map);
79 }
80
TEST(UserContext,both)81 TEST(UserContext, both) {
82 UserContext parent;
83 ConstElementPtr ctx =
84 Element::fromJSON("{ \"comment\": \"foobar\", \"version\": 1 }");
85 parent.setContext(ctx);
86 ElementPtr map = gen();
87 parent.contextToElement(map);
88 ElementPtr expected = gen();
89 expected->set("user-context", ctx);
90 EXPECT_EQ(*expected, *map);
91 }
92
TEST(toElement,notMap)93 TEST(toElement, notMap) {
94 ConstElementPtr arg = Element::create("foo");
95 ConstElementPtr result = UserContext::toElement(arg);
96 EXPECT_EQ(*result, *arg);
97 }
98
TEST(toElement,empty)99 TEST(toElement, empty) {
100 ElementPtr map = gen();
101 ConstElementPtr ctx = Element::createMap();
102 map->set("user-context", ctx);
103 ConstElementPtr result = UserContext::toElement(map);
104 EXPECT_EQ(*result, *map);
105 }
106
TEST(toElement,noComment)107 TEST(toElement, noComment) {
108 ElementPtr map = gen();
109 ConstElementPtr ctx = Element::fromJSON("{ \"version\": 1 }");
110 map->set("user-context", ctx);
111 ConstElementPtr result = UserContext::toElement(map);
112 EXPECT_EQ(*result, *map);
113 }
114
TEST(toElement,onlyComment)115 TEST(toElement, onlyComment) {
116 ElementPtr map = gen();
117 ConstElementPtr ctx = Element::fromJSON("{ \"comment\": \"foobar\" }");
118 map->set("user-context", ctx);
119 ConstElementPtr result = UserContext::toElement(map);
120 EXPECT_EQ(*result, *map);
121 }
122
TEST(toElement,both)123 TEST(toElement, both) {
124 ElementPtr map = gen();
125 ConstElementPtr ctx =
126 Element::fromJSON("{ \"comment\": \"foobar\", \"version\": 1 }");
127 map->set("user-context", ctx);
128 ConstElementPtr result = UserContext::toElement(map);
129 EXPECT_EQ(*result, *map);
130 }
131
132 }
133