tests: sync common testing infrastructure with ndn-cxx
Also upgrade waf to version 2.0.21
Change-Id: Ifad909ca2f3463796d928b62f3131418b654446f
diff --git a/tests/unit/encrypted-content.t.cpp b/tests/unit/encrypted-content.t.cpp
new file mode 100644
index 0000000..71ebbb1
--- /dev/null
+++ b/tests/unit/encrypted-content.t.cpp
@@ -0,0 +1,163 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2014-2020, Regents of the University of California
+ *
+ * This file is part of NAC (Name-Based Access Control for NDN).
+ * See AUTHORS.md for complete list of NAC authors and contributors.
+ *
+ * NAC is free software: you can redistribute it and/or modify it under the terms
+ * of the GNU General Public License as published by the Free Software Foundation,
+ * either version 3 of the License, or (at your option) any later version.
+ *
+ * NAC is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
+ * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * NAC, e.g., in COPYING.md file. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "encrypted-content.hpp"
+
+#include "tests/boost-test.hpp"
+
+namespace ndn {
+namespace nac {
+namespace tests {
+
+class EncryptedContentFixture
+{
+public:
+ EncryptedContentFixture()
+ {
+ BOOST_ASSERT(randomBlock.value_size() == 3);
+ BOOST_ASSERT(randomBuffer->size() == 10);
+ }
+
+public:
+ EncryptedContent content;
+ Block randomBlock = "01 03 000000"_block;
+ ConstBufferPtr randomBuffer = make_shared<const Buffer>(10);
+};
+
+BOOST_FIXTURE_TEST_SUITE(TestEncryptedContent, EncryptedContentFixture)
+
+BOOST_AUTO_TEST_CASE(Constructor)
+{
+ BOOST_CHECK_THROW(content.wireEncode(), tlv::Error);
+ content.setPayload(randomBlock);
+
+ BOOST_CHECK(!content.hasIv());
+ BOOST_CHECK(!content.hasPayloadKey());
+ BOOST_CHECK(!content.hasKeyLocator());
+
+ BOOST_CHECK_EQUAL(content.wireEncode(), "82 07 84050103000000"_block);
+
+ content.setIv(randomBlock);
+ BOOST_CHECK_EQUAL(content.wireEncode(), "82[0E]=8405010300000085050103000000"_block);
+
+ content.setKeyLocator("/random/name");
+ BOOST_CHECK_EQUAL(content.wireEncode(), "82[1E]=8405010300000085050103000000070E080672616E646F6D08046E616D65"_block);
+
+ content = EncryptedContent("82 07 84050103000000"_block);
+ BOOST_CHECK(!content.hasIv());
+ BOOST_CHECK(!content.hasPayloadKey());
+ BOOST_CHECK(!content.hasKeyLocator());
+
+ content = EncryptedContent("82 1E 8505010300000084050103000000070E080672616E646F6D08046E616D65"_block);
+ BOOST_CHECK(content.hasIv());
+ BOOST_CHECK(!content.hasPayloadKey());
+ BOOST_CHECK(content.hasKeyLocator());
+}
+
+BOOST_AUTO_TEST_SUITE(SetterGetter)
+
+BOOST_AUTO_TEST_CASE(Iv)
+{
+ content.setPayload(randomBlock);
+
+ content.setIv(randomBlock);
+ BOOST_REQUIRE(content.hasIv());
+ BOOST_CHECK_EQUAL(content.getIv().type(), tlv::InitializationVector);
+ BOOST_CHECK_EQUAL(content.getIv().blockFromValue(), randomBlock);
+
+ content.unsetIv();
+ BOOST_CHECK(!content.hasIv());
+
+ content.setIv(randomBuffer);
+ BOOST_REQUIRE(content.hasIv());
+ BOOST_CHECK_EQUAL(content.getIv().type(), tlv::InitializationVector);
+ BOOST_CHECK_THROW(content.getIv().blockFromValue(), tlv::Error);
+ BOOST_CHECK_EQUAL(content.getIv().value_size(), randomBuffer->size());
+
+ content = EncryptedContent("82[13]=84050103000000850A00000000000000000000"_block);
+ BOOST_REQUIRE(content.hasIv());
+ BOOST_CHECK_EQUAL(content.getIv().type(), tlv::InitializationVector);
+ BOOST_CHECK_THROW(content.getIv().blockFromValue(), tlv::Error);
+ BOOST_CHECK_EQUAL(content.getIv().value_size(), randomBuffer->size());
+}
+
+BOOST_AUTO_TEST_CASE(Payload)
+{
+ content.setPayload(randomBlock);
+ BOOST_CHECK_EQUAL(content.getPayload().type(), tlv::EncryptedPayload);
+ BOOST_CHECK_EQUAL(content.getPayload().blockFromValue(), randomBlock);
+
+ content.setPayload(randomBuffer);
+ BOOST_CHECK_EQUAL(content.getPayload().type(), tlv::EncryptedPayload);
+ BOOST_CHECK_THROW(content.getPayload().blockFromValue(), tlv::Error);
+ BOOST_CHECK_EQUAL(content.getPayload().value_size(), randomBuffer->size());
+
+ content = EncryptedContent("82[0C]=840A00000000000000000000"_block);
+ BOOST_CHECK_EQUAL(content.getPayload().type(), tlv::EncryptedPayload);
+ BOOST_CHECK_THROW(content.getPayload().blockFromValue(), tlv::Error);
+ BOOST_CHECK_EQUAL(content.getPayload().value_size(), randomBuffer->size());
+}
+
+BOOST_AUTO_TEST_CASE(PayloadKey)
+{
+ content.setPayload(randomBlock);
+
+ content.setPayloadKey(randomBlock);
+ BOOST_REQUIRE(content.hasPayloadKey());
+ BOOST_CHECK_EQUAL(content.getPayloadKey().type(), tlv::EncryptedPayloadKey);
+ BOOST_CHECK_EQUAL(content.getPayloadKey().blockFromValue(), randomBlock);
+
+ content.unsetPayloadKey();
+ BOOST_CHECK(!content.hasPayloadKey());
+
+ content.setPayloadKey(randomBuffer);
+ BOOST_REQUIRE(content.hasPayloadKey());
+ BOOST_CHECK_EQUAL(content.getPayloadKey().type(), tlv::EncryptedPayloadKey);
+ BOOST_CHECK_THROW(content.getPayloadKey().blockFromValue(), tlv::Error);
+ BOOST_CHECK_EQUAL(content.getPayloadKey().value_size(), randomBuffer->size());
+
+ content = EncryptedContent("82[13]=84050103000000860A00000000000000000000"_block);
+ BOOST_CHECK_EQUAL(content.getPayloadKey().type(), tlv::EncryptedPayloadKey);
+ BOOST_CHECK_THROW(content.getPayloadKey().blockFromValue(), tlv::Error);
+ BOOST_CHECK_EQUAL(content.getPayloadKey().value_size(), randomBuffer->size());
+}
+
+BOOST_AUTO_TEST_CASE(KeyLocator)
+{
+ content.setPayload(randomBlock);
+
+ content.setKeyLocator("/random/name");
+ BOOST_REQUIRE(content.hasKeyLocator());
+ BOOST_CHECK_EQUAL(content.getKeyLocator(), "/random/name");
+
+ content.unsetPayloadKey();
+ BOOST_CHECK(!content.hasPayloadKey());
+
+ content = EncryptedContent("82[17]=84050103000000070E080672616E646F6D08046E616D65"_block);
+ BOOST_REQUIRE(content.hasKeyLocator());
+ BOOST_CHECK_EQUAL(content.getKeyLocator(), "/random/name");
+}
+
+BOOST_AUTO_TEST_SUITE_END() // SetterGetter
+
+BOOST_AUTO_TEST_SUITE_END()
+
+} // namespace tests
+} // namespace nac
+} // namespace ndn