Browse Source

[4501] Added invalid pool (outside subnet) unit tests

Francis Dupont 8 years ago
parent
commit
193b0b036a

+ 34 - 1
src/bin/dhcp4/tests/config_parser_unittest.cc

@@ -4716,7 +4716,40 @@ TEST_F(Dhcp4ParserTest, invalidPoolRange) {
     ASSERT_NO_THROW(text = comment->stringValue());
     ASSERT_NO_THROW(text = comment->stringValue());
 
 
     EXPECT_EQ(1, rcode);
     EXPECT_EQ(1, rcode);
-    string expected = "Failed to create pool defined by: 192.0.2.1-19.2.0.200 (<string>:6:26)";
+    string expected = "Failed to create pool defined by: "
+	"192.0.2.1-19.2.0.200 (<string>:6:26)";
+    EXPECT_EQ(expected, text);
+}
+
+// Test verifies the error message for an outside subnet pool range
+// is what we expect.
+TEST_F(Dhcp4ParserTest, outsideSubnetPool) {
+    string config = "{ " + genIfaceConfig() + ", \n" +
+        "\"valid-lifetime\": 4000, \n"
+        "\"rebind-timer\": 2000, \n"
+        "\"renew-timer\": 1000, \n"
+        "\"subnet4\": [ {  \n"
+        "    \"pools\": [ { \"pool\": \"192.0.2.1 - 192.0.2.100\" } ], \n"
+        "    \"subnet\": \"10.0.2.0/24\"  \n"
+        " } ] \n"
+        "} \n";
+
+    ConstElementPtr json;
+    ASSERT_NO_THROW(json = parseDHCP4(config, true));
+
+    ConstElementPtr status;
+    EXPECT_NO_THROW(status = configureDhcp4Server(*srv_, json));
+    ASSERT_TRUE(status);
+    int rcode;
+    ConstElementPtr comment = parseAnswer(rcode, status);
+    string text;
+    ASSERT_NO_THROW(text = comment->stringValue());
+
+    EXPECT_EQ(1, rcode);
+    string expected = "subnet configuration failed (<string>:5:14): "
+	"a pool of type V4, with the following address range: "
+	"192.0.2.1-192.0.2.100 does not match the prefix of a subnet: "
+	"10.0.2.0/24 to which it is being added";
     EXPECT_EQ(expected, text);
     EXPECT_EQ(expected, text);
 }
 }
 
 

+ 35 - 1
src/bin/dhcp6/tests/config_parser_unittest.cc

@@ -5188,7 +5188,41 @@ TEST_F(Dhcp6ParserTest, invalidPoolRange) {
     ASSERT_NO_THROW(text = comment->stringValue());
     ASSERT_NO_THROW(text = comment->stringValue());
 
 
     EXPECT_EQ(1, rcode);
     EXPECT_EQ(1, rcode);
-    string expected = "Failed to create pool defined by: 2001:db8::-200:1db8::ffff (<string>:7:26)";
+    string expected = "Failed to create pool defined by: "
+        "2001:db8::-200:1db8::ffff (<string>:7:26)";
+    EXPECT_EQ(expected, text);
+}
+
+// Test verifies the error message for an outside subnet pool range
+// is what we expect.
+TEST_F(Dhcp6ParserTest, outsideSubnetPool) {
+    string config = "{ " + genIfaceConfig() + ", \n" +
+        "\"valid-lifetime\": 4000, \n"
+        "\"preferred-lifetime\": 3000, \n"
+        "\"rebind-timer\": 2000, \n"
+        "\"renew-timer\": 1000, \n"
+        "\"subnet6\": [ {  \n"
+        "    \"pools\": [ { \"pool\": \"2001:db8:: - 2001:db8::ffff\" } ], \n"
+        "    \"subnet\": \"2001:dc8::/32\"  \n"
+        " } ] \n"
+        "} \n";
+
+    ConstElementPtr json;
+    ASSERT_NO_THROW(json = parseDHCP6(config, true));
+
+    ConstElementPtr status;
+    EXPECT_NO_THROW(status = configureDhcp6Server(srv_, json));
+    ASSERT_TRUE(status);
+    int rcode;
+    ConstElementPtr comment = parseAnswer(rcode, status);
+    string text;
+    ASSERT_NO_THROW(text = comment->stringValue());
+
+    EXPECT_EQ(1, rcode);
+    string expected = "subnet configuration failed (<string>:6:14): "
+        "a pool of type IA_NA, with the following address range: "
+        "2001:db8::-2001:db8::ffff does not match the prefix of "
+        "a subnet: 2001:dc8::/32 to which it is being added";
     EXPECT_EQ(expected, text);
     EXPECT_EQ(expected, text);
 }
 }