mgmt, main: add support for authorized commands
refs: #1227
Change-Id: I907d1fa6e78775470c5376fcdfe898be4c311001
diff --git a/tests/mgmt/strategy-choice-manager.cpp b/tests/mgmt/strategy-choice-manager.cpp
index e2285c2..dd3291b 100644
--- a/tests/mgmt/strategy-choice-manager.cpp
+++ b/tests/mgmt/strategy-choice-manager.cpp
@@ -15,6 +15,7 @@
#include "tests/test-common.hpp"
+#include "validation-common.hpp"
namespace nfd {
namespace tests {
@@ -90,6 +91,12 @@
}
+ virtual
+ ~StrategyChoiceManagerFixture()
+ {
+
+ }
+
void
validateControlResponseCommon(const Data& response,
const Name& expectedName,
@@ -177,6 +184,13 @@
return m_strategyChoice;
}
+ void
+ addInterestRule(const std::string& regex,
+ ndn::IdentityCertificate& certificate)
+ {
+ m_manager.addInterestRule(regex, certificate);
+ }
+
protected:
Forwarder m_forwarder;
NameTree m_nameTree;
@@ -203,9 +217,26 @@
}
};
-BOOST_FIXTURE_TEST_SUITE(MgmtStrategyChoiceManager, AllStrategiesFixture)
+template <typename T> class AuthorizedCommandFixture : public CommandFixture<T>
+{
+public:
+ AuthorizedCommandFixture()
+ {
+ const std::string regex = "^<localhost><nfd><strategy-choice>";
+ T::addInterestRule(regex, *CommandFixture<T>::m_certificate);
+ }
-BOOST_AUTO_TEST_CASE(TestFireInterestFilter)
+ virtual
+ ~AuthorizedCommandFixture()
+ {
+
+ }
+};
+
+BOOST_FIXTURE_TEST_SUITE(MgmtStrategyChoiceManager,
+ AuthorizedCommandFixture<AllStrategiesFixture>)
+
+BOOST_FIXTURE_TEST_CASE(TestFireInterestFilter, AllStrategiesFixture)
{
shared_ptr<Interest> command(make_shared<Interest>("/localhost/nfd/strategy-choice"));
@@ -218,7 +249,7 @@
BOOST_REQUIRE(didCallbackFire());
}
-BOOST_AUTO_TEST_CASE(MalformedCommmand)
+BOOST_FIXTURE_TEST_CASE(MalformedCommmand, AllStrategiesFixture)
{
shared_ptr<Interest> command(make_shared<Interest>("/localhost/nfd/strategy-choice"));
@@ -231,6 +262,54 @@
BOOST_REQUIRE(didCallbackFire());
}
+BOOST_FIXTURE_TEST_CASE(UnsignedCommand, AllStrategiesFixture)
+{
+ ndn::nfd::FibManagementOptions options;
+ options.setName("/test");
+ options.setStrategy("/localhost/nfd/strategy/best-route");
+
+ Block encodedOptions(options.wireEncode());
+
+ Name commandName("/localhost/nfd/strategy-choice");
+ commandName.append("set");
+ commandName.append(encodedOptions);
+
+ shared_ptr<Interest> command(make_shared<Interest>(commandName));
+
+ getFace()->onReceiveData +=
+ bind(&StrategyChoiceManagerFixture::validateControlResponse, this, _1,
+ command->getName(), 401, "Signature required");
+
+ getManager().onStrategyChoiceRequest(*command);
+
+ BOOST_REQUIRE(didCallbackFire());
+}
+
+BOOST_FIXTURE_TEST_CASE(UnauthorizedCommand,
+ UnauthorizedCommandFixture<StrategyChoiceManagerFixture>)
+{
+ ndn::nfd::FibManagementOptions options;
+ options.setName("/test");
+ options.setStrategy("/localhost/nfd/strategy/best-route");
+
+ Block encodedOptions(options.wireEncode());
+
+ Name commandName("/localhost/nfd/strategy-choice");
+ commandName.append("set");
+ commandName.append(encodedOptions);
+
+ shared_ptr<Interest> command(make_shared<Interest>(commandName));
+ generateCommand(*command);
+
+ getFace()->onReceiveData +=
+ bind(&StrategyChoiceManagerFixture::validateControlResponse, this, _1,
+ command->getName(), 403, "Unauthorized command");
+
+ getManager().onStrategyChoiceRequest(*command);
+
+ BOOST_REQUIRE(didCallbackFire());
+}
+
BOOST_AUTO_TEST_CASE(UnsupportedVerb)
{
ndn::nfd::FibManagementOptions options;
@@ -243,6 +322,7 @@
commandName.append(encodedOptions);
shared_ptr<Interest> command(make_shared<Interest>(commandName));
+ generateCommand(*command);
getFace()->onReceiveData +=
bind(&StrategyChoiceManagerFixture::validateControlResponse, this, _1,
@@ -260,6 +340,7 @@
commandName.append("NotReallyOptions");
shared_ptr<Interest> command(make_shared<Interest>(commandName));
+ generateCommand(*command);
getFace()->onReceiveData +=
bind(&StrategyChoiceManagerFixture::validateControlResponse, this, _1,
@@ -311,6 +392,7 @@
commandName.append(encodedOptions);
shared_ptr<Interest> command(make_shared<Interest>(commandName));
+ generateCommand(*command);
getFace()->onReceiveData +=
bind(&StrategyChoiceManagerFixture::validateControlResponse, this, _1,
@@ -355,6 +437,7 @@
// commandName.append(encodedOptions);
// shared_ptr<Interest> command(make_shared<Interest>(commandName));
+// generateCommand(*command);
// getFace()->onReceiveData +=
// bind(&StrategyChoiceManagerFixture::validateControlResponse, this, _1,
@@ -383,6 +466,7 @@
commandName.append(encodedOptions);
shared_ptr<Interest> command(make_shared<Interest>(commandName));
+ generateCommand(*command);
getFace()->onReceiveData +=
bind(&StrategyChoiceManagerFixture::validateControlResponse, this, _1,
@@ -408,6 +492,7 @@
commandName.append(encodedOptions);
shared_ptr<Interest> command(make_shared<Interest>(commandName));
+ generateCommand(*command);
getFace()->onReceiveData +=
bind(&StrategyChoiceManagerFixture::validateControlResponse, this, _1,