security: don't throw when loading an empty validation policy
Refs: #5049
Change-Id: I44feff5f4c83995e7d9f848c3c0cd71825920606
diff --git a/tests/unit/security/v2/validation-policy-config.t.cpp b/tests/unit/security/v2/validation-policy-config.t.cpp
index 9d33a1f..f7a4506 100644
--- a/tests/unit/security/v2/validation-policy-config.t.cpp
+++ b/tests/unit/security/v2/validation-policy-config.t.cpp
@@ -1,6 +1,6 @@
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
/*
- * Copyright (c) 2013-2018 Regents of the University of California.
+ * Copyright (c) 2013-2019 Regents of the University of California.
*
* This file is part of ndn-cxx library (NDN C++ library with eXperimental eXtensions).
*
@@ -39,11 +39,28 @@
using namespace ndn::tests;
using namespace ndn::security::v2::tests;
-
BOOST_AUTO_TEST_SUITE(Security)
BOOST_AUTO_TEST_SUITE(V2)
BOOST_AUTO_TEST_SUITE(TestValidationPolicyConfig)
+BOOST_FIXTURE_TEST_CASE(EmptyConfig, HierarchicalValidatorFixture<ValidationPolicyConfig>)
+{
+ this->policy.load(ConfigSection{}, "<empty>");
+
+ BOOST_CHECK_EQUAL(this->policy.m_isConfigured, true);
+ BOOST_CHECK_EQUAL(this->policy.m_shouldBypass, false);
+ BOOST_CHECK_EQUAL(this->policy.m_dataRules.size(), 0);
+ BOOST_CHECK_EQUAL(this->policy.m_interestRules.size(), 0);
+
+ Data d("/Security/V2/ValidationPolicyConfig/D");
+ this->m_keyChain.sign(d, signingByIdentity(this->identity));
+ VALIDATE_FAILURE(d, "Empty policy should reject everything");
+
+ Interest i("/Security/V2/ValidationPolicyConfig/I");
+ this->m_keyChain.sign(i, signingByIdentity(this->identity));
+ VALIDATE_FAILURE(i, "Empty policy should reject everything");
+}
+
template<typename Packet>
class PacketName;
@@ -99,10 +116,11 @@
~ValidationPolicyConfigFixture()
{
- boost::filesystem::remove_all(path);
+ boost::system::error_code ec;
+ boost::filesystem::remove_all(path, ec);
}
-public:
+protected:
using Packet = PacketType;
const boost::filesystem::path path;
@@ -139,15 +157,16 @@
{
std::string configFile = (this->path / "config.conf").string();
{
- std::ofstream config(configFile.c_str());
+ std::ofstream config(configFile);
config << this->baseConfig << R"CONF(
- trust-anchor
- {
- type file
- file-name "trust-anchor.ndncert"
- }
- )CONF";
+ trust-anchor
+ {
+ type file
+ file-name "trust-anchor.ndncert"
+ }
+ )CONF";
}
+
this->saveCertificate(this->identity, (this->path / "identity.ndncert").string());
BOOST_CHECK_EQUAL(this->policy.m_isConfigured, false);
@@ -193,9 +212,11 @@
BOOST_CHECK_EQUAL(this->policy.m_isConfigured, false);
std::ostringstream os;
- using namespace ndn::security::transform;
- const auto& cert = this->identity.getDefaultKey().getDefaultCertificate();
- bufferSource(cert.wireEncode().wire(), cert.wireEncode().size()) >> base64Encode(false) >> streamSink(os);
+ {
+ using namespace ndn::security::transform;
+ const auto& cert = this->identity.getDefaultKey().getDefaultCertificate().wireEncode();
+ bufferSource(cert.wire(), cert.size()) >> base64Encode(false) >> streamSink(os);
+ }
this->policy.load(this->baseConfig + R"CONF(
trust-anchor
@@ -481,11 +502,9 @@
using RefreshPolicies = boost::mpl::vector<Refresh1h, Refresh1m, Refresh1s>;
-// Somehow, didn't work without this wrapper
template<typename RefreshPolicy>
class RefreshPolicyFixture : public LoadStringWithDirAnchor<Data, RefreshPolicy>
{
-public:
};
BOOST_FIXTURE_TEST_CASE_TEMPLATE(ValidateRefresh, Refresh, RefreshPolicies, RefreshPolicyFixture<Refresh>)