Commit 6871fc5b authored by Francis Dupont's avatar Francis Dupont

[5097] Added unit tests for bad pools (cf #3956)

parent 249822b7
......@@ -1466,6 +1466,115 @@ TEST_F(Dhcp4ParserTest, poolPrefixLen) {
EXPECT_EQ(4000, subnet->getValid());
}
// Goal of this test is to verify if invalid pool definitions
// return a location in the error message.
TEST_F(Dhcp4ParserTest, badPools) {
// not a prefix
string config_bogus1 = "{ " + genIfaceConfig() + "," +
"\"rebind-timer\": 2000, "
"\"renew-timer\": 1000, "
"\"subnet4\": [ { "
" \"pools\": [ { \"pool\": \"foo/28\" } ],"
" \"subnet\": \"192.0.2.0/24\" } ],"
"\"valid-lifetime\": 4000 }";
// not a length
string config_bogus2 = "{ " + genIfaceConfig() + "," +
"\"rebind-timer\": 2000, "
"\"renew-timer\": 1000, "
"\"subnet4\": [ { "
" \"pools\": [ { \"pool\": \"192.0.2.128/foo\" } ],"
" \"subnet\": \"192.0.2.0/24\" } ],"
"\"valid-lifetime\": 4000 }";
// invalid prefix length
string config_bogus3 = "{ " + genIfaceConfig() + "," +
"\"rebind-timer\": 2000, "
"\"renew-timer\": 1000, "
"\"subnet4\": [ { "
" \"pools\": [ { \"pool\": \"192.0.2.128/100\" } ],"
" \"subnet\": \"192.0.2.0/24\" } ],"
"\"valid-lifetime\": 4000 }";
// not a prefix nor a min-max
string config_bogus4 = "{ " + genIfaceConfig() + "," +
"\"rebind-timer\": 2000, "
"\"renew-timer\": 1000, "
"\"subnet4\": [ { "
" \"pools\": [ { \"pool\": \"foo\" } ],"
" \"subnet\": \"192.0.2.0/24\" } ],"
"\"valid-lifetime\": 4000 }";
// not an address
string config_bogus5 = "{ " + genIfaceConfig() + "," +
"\"rebind-timer\": 2000, "
"\"renew-timer\": 1000, "
"\"subnet4\": [ { "
" \"pools\": [ { \"pool\": \"foo - bar\" } ],"
" \"subnet\": \"192.0.2.0/24\" } ],"
"\"valid-lifetime\": 4000 }";
// min > max
string config_bogus6 = "{ " + genIfaceConfig() + "," +
"\"rebind-timer\": 2000, "
"\"renew-timer\": 1000, "
"\"subnet4\": [ { "
" \"pools\": [ { \"pool\": \"192.0.2.200 - 192.0.2.100\" } ],"
" \"subnet\": \"192.0.2.0/24\" } ],"
"\"valid-lifetime\": 4000 }";
ConstElementPtr json1;
ASSERT_NO_THROW(json1 = parseDHCP4(config_bogus1));
ConstElementPtr json2;
ASSERT_NO_THROW(json2 = parseDHCP4(config_bogus2));
ConstElementPtr json3;
ASSERT_NO_THROW(json3 = parseDHCP4(config_bogus3));
ConstElementPtr json4;
ASSERT_NO_THROW(json4 = parseDHCP4(config_bogus4));
ConstElementPtr json5;
ASSERT_NO_THROW(json5 = parseDHCP4(config_bogus5));
ConstElementPtr json6;
ASSERT_NO_THROW(json6 = parseDHCP4(config_bogus6));
ConstElementPtr status;
EXPECT_NO_THROW(status = configureDhcp4Server(*srv_, json1));
// check if returned status is always a failure
checkResult(status, 1);
EXPECT_TRUE(errorContainsPosition(status, "<string>"));
CfgMgr::instance().clear();
EXPECT_NO_THROW(status = configureDhcp4Server(*srv_, json2));
checkResult(status, 1);
EXPECT_TRUE(errorContainsPosition(status, "<string>"));
CfgMgr::instance().clear();
EXPECT_NO_THROW(status = configureDhcp4Server(*srv_, json3));
checkResult(status, 1);
EXPECT_TRUE(errorContainsPosition(status, "<string>"));
CfgMgr::instance().clear();
EXPECT_NO_THROW(status = configureDhcp4Server(*srv_, json4));
checkResult(status, 1);
EXPECT_TRUE(errorContainsPosition(status, "<string>"));
CfgMgr::instance().clear();
EXPECT_NO_THROW(status = configureDhcp4Server(*srv_, json5));
checkResult(status, 1);
EXPECT_TRUE(errorContainsPosition(status, "<string>"));
CfgMgr::instance().clear();
EXPECT_NO_THROW(status = configureDhcp4Server(*srv_, json6));
checkResult(status, 1);
EXPECT_TRUE(errorContainsPosition(status, "<string>"));
}
// The goal of this test is to check whether an option definition
// that defines an option carrying an IPv4 address can be created.
TEST_F(Dhcp4ParserTest, optionDefIpv4Address) {
......
......@@ -1512,6 +1512,121 @@ TEST_F(Dhcp6ParserTest, poolPrefixLen) {
EXPECT_EQ(4000, subnet->getValid());
}
// Goal of this test is to verify if invalid pool definitions
// return a location in the error message.
TEST_F(Dhcp6ParserTest, badPools) {
// not a prefix
string config_bogus1 = "{ " + genIfaceConfig() + ","
"\"preferred-lifetime\": 3000,"
"\"rebind-timer\": 2000, "
"\"renew-timer\": 1000, "
"\"subnet6\": [ { "
" \"pools\": [ { \"pool\": \"foo/80\" } ],"
" \"subnet\": \"2001:db8:1::/64\" } ],"
"\"valid-lifetime\": 4000 }";
// not a length
string config_bogus2 = "{ " + genIfaceConfig() + ","
"\"preferred-lifetime\": 3000,"
"\"rebind-timer\": 2000, "
"\"renew-timer\": 1000, "
"\"subnet6\": [ { "
" \"pools\": [ { \"pool\": \"2001:db8:1::/foo\" } ],"
" \"subnet\": \"2001:db8:1::/64\" } ],"
"\"valid-lifetime\": 4000 }";
// invalid prefix length
string config_bogus3 = "{ " + genIfaceConfig() + ","
"\"preferred-lifetime\": 3000,"
"\"rebind-timer\": 2000, "
"\"renew-timer\": 1000, "
"\"subnet6\": [ { "
" \"pools\": [ { \"pool\": \"2001:db8:1::/200\" } ],"
" \"subnet\": \"2001:db8:1::/64\" } ],"
"\"valid-lifetime\": 4000 }";
// not a prefix nor a min-max
string config_bogus4 = "{ " + genIfaceConfig() + ","
"\"preferred-lifetime\": 3000,"
"\"rebind-timer\": 2000, "
"\"renew-timer\": 1000, "
"\"subnet6\": [ { "
" \"pools\": [ { \"pool\": \"foo\" } ],"
" \"subnet\": \"2001:db8:1::/64\" } ],"
"\"valid-lifetime\": 4000 }";
// not an address
string config_bogus5 = "{ " + genIfaceConfig() + ","
"\"preferred-lifetime\": 3000,"
"\"rebind-timer\": 2000, "
"\"renew-timer\": 1000, "
"\"subnet6\": [ { "
" \"pools\": [ { \"pool\": \"foo - bar\" } ],"
" \"subnet\": \"2001:db8:1::/64\" } ],"
"\"valid-lifetime\": 4000 }";
// min > max
string config_bogus6 = "{ " + genIfaceConfig() + ","
"\"preferred-lifetime\": 3000,"
"\"rebind-timer\": 2000, "
"\"renew-timer\": 1000, "
"\"subnet6\": [ { "
" \"pools\": [ { \"pool\": \"2001:db8::ff:ffff - 2001:db8::\" } ],"
" \"subnet\": \"2001:db8:1::/64\" } ],"
"\"valid-lifetime\": 4000 }";
ConstElementPtr json1;
ASSERT_NO_THROW(json1 = parseDHCP6(config_bogus1));
ConstElementPtr json2;
ASSERT_NO_THROW(json2 = parseDHCP6(config_bogus2));
ConstElementPtr json3;
ASSERT_NO_THROW(json3 = parseDHCP6(config_bogus3));
ConstElementPtr json4;
ASSERT_NO_THROW(json4 = parseDHCP6(config_bogus4));
ConstElementPtr json5;
ASSERT_NO_THROW(json5 = parseDHCP6(config_bogus5));
ConstElementPtr json6;
ASSERT_NO_THROW(json6 = parseDHCP6(config_bogus6));
ConstElementPtr status;
EXPECT_NO_THROW(status = configureDhcp6Server(srv_, json1));
// check if returned status is always a failure
checkResult(status, 1);
EXPECT_TRUE(errorContainsPosition(status, "<string>"));
CfgMgr::instance().clear();
EXPECT_NO_THROW(status = configureDhcp6Server(srv_, json2));
checkResult(status, 1);
EXPECT_TRUE(errorContainsPosition(status, "<string>"));
CfgMgr::instance().clear();
EXPECT_NO_THROW(status = configureDhcp6Server(srv_, json3));
checkResult(status, 1);
EXPECT_TRUE(errorContainsPosition(status, "<string>"));
CfgMgr::instance().clear();
EXPECT_NO_THROW(status = configureDhcp6Server(srv_, json4));
checkResult(status, 1);
EXPECT_TRUE(errorContainsPosition(status, "<string>"));
CfgMgr::instance().clear();
EXPECT_NO_THROW(status = configureDhcp6Server(srv_, json5));
checkResult(status, 1);
EXPECT_TRUE(errorContainsPosition(status, "<string>"));
CfgMgr::instance().clear();
EXPECT_NO_THROW(status = configureDhcp6Server(srv_, json6));
checkResult(status, 1);
EXPECT_TRUE(errorContainsPosition(status, "<string>"));
}
// Goal of this test is to verify the basic parsing of a prefix delegation
// pool. It uses a single, valid pd pool.
TEST_F(Dhcp6ParserTest, pdPoolBasics) {
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment