EXPECT_EQ( "2001:db8:1::20", opt->getAddresses()[0].toText());
}
+// This test verifies that the option data configuration with a minimal
+// set of parameters works as expected when option definition is
+// created in the configruation file.
+TEST_F(ParseConfigTest, optionDataMinimalWithOptionDef) {
+ // Configuration string.
+ std::string config =
+ "{ \"option-def\": [ {"
+ " \"name\": \"foo-name\","
+ " \"code\": 2345,"
+ " \"type\": \"ipv6-address\","
+ " \"array\": True,"
+ " \"record-types\": \"\","
+ " \"space\": \"dhcp6\","
+ " \"encapsulate\": \"\""
+ " } ],"
+ " \"option-data\": [ {"
+ " \"name\": \"foo-name\","
+ " \"data\": \"2001:db8:1::10, 2001:db8:1::123\""
+ " } ]"
+ "}";
+
+ int rcode = 0;
+ ASSERT_NO_THROW(rcode = parseConfiguration(config));
+ EXPECT_EQ(0, rcode);
+ Option6AddrLstPtr opt = boost::dynamic_pointer_cast<
+ Option6AddrLst>(getOptionPtr("dhcp6", 2345));
+ ASSERT_TRUE(opt);
+ ASSERT_EQ(2, opt->getAddresses().size());
+ EXPECT_EQ("2001:db8:1::10", opt->getAddresses()[0].toText());
+ EXPECT_EQ("2001:db8:1::123", opt->getAddresses()[1].toText());
+
+ CfgMgr::instance().clear();
+ // Do the same test but now use an option code.
+ config =
+ "{ \"option-def\": [ {"
+ " \"name\": \"foo-name\","
+ " \"code\": 2345,"
+ " \"type\": \"ipv6-address\","
+ " \"array\": True,"
+ " \"record-types\": \"\","
+ " \"space\": \"dhcp6\","
+ " \"encapsulate\": \"\""
+ " } ],"
+ " \"option-data\": [ {"
+ " \"code\": 2345,"
+ " \"data\": \"2001:db8:1::10, 2001:db8:1::123\""
+ " } ]"
+ "}";
+
+ rcode = 0;
+ ASSERT_NO_THROW(rcode = parseConfiguration(config));
+ EXPECT_EQ(0, rcode);
+ opt = boost::dynamic_pointer_cast<Option6AddrLst>(getOptionPtr("dhcp6",
+ 2345));
+ ASSERT_TRUE(opt);
+ ASSERT_EQ(2, opt->getAddresses().size());
+ EXPECT_EQ("2001:db8:1::10", opt->getAddresses()[0].toText());
+ EXPECT_EQ("2001:db8:1::123", opt->getAddresses()[1].toText());
+
+}
}; // Anonymous namespace