]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[#2598] Added VCI UTs
authorFrancis Dupont <fdupont@isc.org>
Thu, 2 Jul 2026 14:31:31 +0000 (16:31 +0200)
committerFrancis Dupont <fdupont@isc.org>
Thu, 2 Jul 2026 14:31:31 +0000 (16:31 +0200)
src/bin/dhcp4/tests/vendor_opts_unittest.cc
src/bin/dhcp6/tests/classify_unittest.cc
src/hooks/dhcp/forensic_log/tests/legal_log4_unittests.cc
src/hooks/dhcp/forensic_log/tests/legal_log6_unittests.cc

index 06c05febfc1b22f223aad2982597d34ddcac254e..fba63cf92d6d193f2a61300a788265936ec9f7f4 100644 (file)
@@ -2904,3 +2904,55 @@ TEST_F(VendorOptsTest, twoVivcos) {
     ASSERT_EQ(1U, opt_class5678->getTuplesNum());
     EXPECT_EQ("bar", opt_class5678->getTuple(0).getText());
 }
+
+// Tests whether a packet with custom vendor-class is classified properly.
+TEST_F(VendorOptsTest, vendorClassIdClassification2) {
+    // Let's create a DISCOVER.
+    Pkt4Ptr dis = Pkt4Ptr(new Pkt4(DHCPDISCOVER, 1234));
+    dis->setIface("eth0");
+    dis->setIndex(ETH0_INDEX);
+    OptionPtr clientid = generateClientId();
+    dis->addOption(clientid);
+
+    // Now let's add a vendor-class with content "foo",
+    OptionStringPtr vendor_class(new OptionString(Option::V4,
+                                                  DHO_VENDOR_CLASS_IDENTIFIER,
+                                                  "foo"));
+    dis->addOption(vendor_class);
+
+    // Now the server classifies the packet.
+    srv_->classifyPacket(dis);
+
+    // The packet should now belong to VENDOR_CLASS_foo.
+    EXPECT_TRUE(dis->inClass(srv_->VENDOR_CLASS_PREFIX + "foo"));
+
+    // It should not belong to "foo"
+    EXPECT_FALSE(dis->inClass("foo"));
+}
+
+// Tests whether a packet with custom vendor-class with to-be-escaped
+// characters is classified properly.
+TEST_F(VendorOptsTest, vendorClassIdClassification3) {
+    // Let's create a DISCOVER.
+    Pkt4Ptr dis = Pkt4Ptr(new Pkt4(DHCPDISCOVER, 1234));
+    dis->setIface("eth0");
+    dis->setIndex(ETH0_INDEX);
+    OptionPtr clientid = generateClientId();
+    dis->addOption(clientid);
+
+    // Now let's add a vendor-class with content "foo",
+    OptionStringPtr vendor_class(new OptionString(Option::V4,
+                                                  DHO_VENDOR_CLASS_IDENTIFIER,
+                                                  "foo bar"));
+    dis->addOption(vendor_class);
+
+    // Now the server classifies the packet.
+    srv_->classifyPacket(dis);
+
+    // The packet should now belong to VENDOR_CLASS_foo.
+    EXPECT_TRUE(dis->inClass(srv_->VENDOR_CLASS_PREFIX + "foo%20bar"));
+
+    // It should not belong to "foo bar" or "foo%20bar".
+    EXPECT_FALSE(dis->inClass("foo bar"));
+    EXPECT_FALSE(dis->inClass("foo%20bar"));
+}
index bb3a0f7bbdd0ea838910330cbcd24ea80bd3a3b3..09c7e66f5d82993ddb20ee58ae58cffb98b25dcf 100644 (file)
@@ -1768,7 +1768,7 @@ TEST_F(ClassifyTest, vendorClientClassification3) {
     // The packet should now belong to VENDOR_CLASS_foo%20bar.
     EXPECT_TRUE(sol->inClass(srv_->VENDOR_CLASS_PREFIX + "foo%20bar"));
 
-    // It should not belong to "foo bar" or "foo%20bar:
+    // It should not belong to "foo bar" or "foo%20bar".
     EXPECT_FALSE(sol->inClass("foo bar"));
     EXPECT_FALSE(sol->inClass("foo%20bar"));
 }
index d51888045e18dd6b7567b2193a67ecc83bd64acd..ccad0223d87f49ac9c7fbba56dfecc5cd36bb27a 100644 (file)
@@ -1759,7 +1759,7 @@ TEST_F(CalloutTestv4, customLogRenderError) {
                     "-parser-format failed for lease 192.2.1.100 hwaddr hwtype"
                     "=1 08:00:2b:02:3f:4e (Can not convert to valid uint32.);"
                     " falling back to default format";
-    EXPECT_EQ(1, countFile(err_text));
+    EXPECT_EQ(1U, countFile(err_text));
 
     // Verify that the default entry was generated.
     std::vector<std::string>lines;
index 329e8b0b3dfc0bb57a8e83d21c27f3863ba28af3..a76d280b0d5b97d5f3835036a0d254b4122bc9f1 100644 (file)
@@ -2812,7 +2812,7 @@ TEST_F(CalloutTestv6, customLogRenderError) {
                     "response-parser-format failed for lease 2001:db8:1::"
                     " duid 17:34:e2:ff:09:92:54 (Can not convert to valid"
                     " uint32.); falling back to default format";
-    EXPECT_EQ(1, countFile(err_text));
+    EXPECT_EQ(1U, countFile(err_text));
 
     // Verify that the default entry was generated.
     std::vector<std::string>lines;