virtual ConstElementPtr exec(AuthSrv& server,
isc::data::ConstElementPtr args)
{
- try {
- server.loadZone(args);
- return (createAnswer());
- } catch (const LoadZoneCommandError& lzce) {
- return (createAnswer(1, lzce.what()));
- }
+ server.loadZone(args);
+ return (createAnswer());
}
};
isc_throw(LoadZoneCommandError,
"loadZone argument has no 'origin' value");
}
+ if (args->get("origin")->getType() != data::Element::string) {
+ isc_throw(LoadZoneCommandError,
+ "loadZone argument 'origin' value not a string");
+ }
+ if (args->contains("class") &&
+ args->get("class")->getType() != data::Element::string) {
+ isc_throw(LoadZoneCommandError,
+ "loadZone argument 'class' value not a string");
+ }
sendCommand(datasrc_clientmgr_internal::LOADZONE, args);
}
mgr.loadZone(args);
EXPECT_EQ(2, FakeDataSrcClientsBuilder::command_queue->size());
+ // Should fail with non-string 'class' value
+ args->set("class", Element::create(1));
+ EXPECT_THROW(mgr.loadZone(args), LoadZoneCommandError);
+ EXPECT_EQ(2, FakeDataSrcClientsBuilder::command_queue->size());
+
// Should succeed without 'class'
args->remove("class");
mgr.loadZone(args);
EXPECT_THROW(mgr.loadZone(args), LoadZoneCommandError);
EXPECT_EQ(3, FakeDataSrcClientsBuilder::command_queue->size());
+ // And for 'origin' that is not a string
+ args->set("origin", Element::create(1));
+ EXPECT_THROW(mgr.loadZone(args), LoadZoneCommandError);
+ EXPECT_EQ(3, FakeDataSrcClientsBuilder::command_queue->size());
+
// same for empty data and data that is not a map
EXPECT_THROW(mgr.loadZone(isc::data::ConstElementPtr()),
LoadZoneCommandError);