From: Francis Dupont Date: Fri, 15 Mar 2019 23:20:34 +0000 (+0100) Subject: [430-configure-location-of-datadir] Added some unit tests X-Git-Tag: Kea-1.6.0-beta~368 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=08b36c69e7ccb23c8c7e0106f437d42721acd059;p=thirdparty%2Fkea.git [430-configure-location-of-datadir] Added some unit tests --- diff --git a/src/lib/dhcpsrv/tests/cfgmgr_unittest.cc b/src/lib/dhcpsrv/tests/cfgmgr_unittest.cc index 61f9db84bf..c236c1c3a9 100644 --- a/src/lib/dhcpsrv/tests/cfgmgr_unittest.cc +++ b/src/lib/dhcpsrv/tests/cfgmgr_unittest.cc @@ -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