]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[430-configure-location-of-datadir] Added some unit tests
authorFrancis Dupont <fdupont@isc.org>
Fri, 15 Mar 2019 23:20:34 +0000 (00:20 +0100)
committerFrancis Dupont <fdupont@isc.org>
Fri, 15 Mar 2019 23:23:05 +0000 (00:23 +0100)
src/lib/dhcpsrv/tests/cfgmgr_unittest.cc

index 61f9db84bf421b80104c576b57ac4523d838b82d..c236c1c3a92995eae422f9be7c6324e085f8642e 100644 (file)
@@ -319,6 +319,64 @@ TEST_F(CfgMgrTest, configuration) {
     EXPECT_TRUE(configuration->getLoggingInfo().empty());
 }
 
+// This test checks the data directory handling.
+TEST_F(CfgMgrTest, dataDir) {
+    // It is only in DHCPv6 systax so switch to IPv6.
+    CfgMgr::instance().setFamily(AF_INET6);
+
+    // Default.
+    EXPECT_TRUE(CfgMgr::instance().getDataDir().unspecified());
+    ConstElementPtr json = CfgMgr::instance().getCurrentCfg()->toElement();
+    ASSERT_TRUE(json);
+    ASSERT_EQ(Element::map, json->getType());
+    ConstElementPtr dhcp = json->get("Dhcp6");
+    ASSERT_TRUE(dhcp);
+    ASSERT_EQ(Element::map, dhcp->getType());
+    ConstElementPtr datadir = dhcp->get("data-directory");
+    EXPECT_FALSE(datadir);
+
+    // Set but not specified.
+    CfgMgr::instance().setDataDir("/tmp");
+    EXPECT_TRUE(CfgMgr::instance().getDataDir().unspecified());
+    EXPECT_EQ("/tmp", string(CfgMgr::instance().getDataDir()));
+    json = CfgMgr::instance().getCurrentCfg()->toElement();
+    ASSERT_TRUE(json);
+    ASSERT_EQ(Element::map, json->getType());
+    dhcp = json->get("Dhcp6");
+    ASSERT_TRUE(dhcp);
+    ASSERT_EQ(Element::map, dhcp->getType());
+    datadir = dhcp->get("data-directory");
+    EXPECT_FALSE(datadir);
+
+    // Set and specified.
+    CfgMgr::instance().setDataDir("/tmp", false);
+    EXPECT_FALSE(CfgMgr::instance().getDataDir().unspecified());
+    EXPECT_EQ("/tmp", string(CfgMgr::instance().getDataDir()));
+    json = CfgMgr::instance().getCurrentCfg()->toElement();
+    ASSERT_TRUE(json);
+    ASSERT_EQ(Element::map, json->getType());
+    dhcp = json->get("Dhcp6");
+    ASSERT_TRUE(dhcp);
+    ASSERT_EQ(Element::map, dhcp->getType());
+    datadir = dhcp->get("data-directory");
+    ASSERT_TRUE(datadir);
+    ASSERT_EQ(Element::string, datadir->getType());
+    EXPECT_EQ("/tmp", datadir->stringValue());
+
+    // Still IPv6 only.
+    CfgMgr::instance().setFamily(AF_INET);
+    EXPECT_FALSE(CfgMgr::instance().getDataDir().unspecified());
+    EXPECT_EQ("/tmp", string(CfgMgr::instance().getDataDir()));
+    json = CfgMgr::instance().getCurrentCfg()->toElement();
+    ASSERT_TRUE(json);
+    ASSERT_EQ(Element::map, json->getType());
+    dhcp = json->get("Dhcp4");
+    ASSERT_TRUE(dhcp);
+    ASSERT_EQ(Element::map, dhcp->getType());
+    datadir = dhcp->get("data-directory");
+    EXPECT_FALSE(datadir);
+}
+
 // This test checks the D2ClientMgr wrapper methods.
 TEST_F(CfgMgrTest, d2ClientConfig) {
     // After CfgMgr construction, D2ClientMgr member should be initialized