security: modernize CertificateContainer; add logging
Change-Id: I127a7eefb794c83787748999f10ffaeb6614f8b7
diff --git a/tests/unit/security/pib/certificate-container.t.cpp b/tests/unit/security/pib/certificate-container.t.cpp
index ebb8ca1..117e8f2 100644
--- a/tests/unit/security/pib/certificate-container.t.cpp
+++ b/tests/unit/security/pib/certificate-container.t.cpp
@@ -1,6 +1,6 @@
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
/*
- * Copyright (c) 2013-2021 Regents of the University of California.
+ * Copyright (c) 2013-2022 Regents of the University of California.
*
* This file is part of ndn-cxx library (NDN C++ library with eXperimental eXtensions).
*
@@ -21,7 +21,6 @@
#include "ndn-cxx/security/pib/certificate-container.hpp"
#include "ndn-cxx/security/pib/impl/pib-memory.hpp"
-#include "ndn-cxx/security/pib/pib.hpp"
#include "tests/boost-test.hpp"
#include "tests/unit/security/pib/pib-data-fixture.hpp"
@@ -37,82 +36,78 @@
BOOST_AUTO_TEST_SUITE(Pib)
BOOST_FIXTURE_TEST_SUITE(TestCertificateContainer, PibDataFixture)
-using pib::Pib;
-
-BOOST_AUTO_TEST_CASE(Basic)
+BOOST_AUTO_TEST_CASE(AddGetRemove)
{
auto pibImpl = make_shared<PibMemory>();
- // start with an empty container
- CertificateContainer container(id1Key1Name, pibImpl);
- BOOST_CHECK_EQUAL(container.size(), 0);
- BOOST_CHECK_EQUAL(container.getCache().size(), 0);
+ {
+ // start with an empty container
+ CertificateContainer container(id1Key1Name, pibImpl);
+ BOOST_CHECK_EQUAL(container.size(), 0);
+ BOOST_CHECK_EQUAL(container.m_certs.size(), 0);
- // add one cert
- container.add(id1Key1Cert1);
- BOOST_CHECK_EQUAL(container.size(), 1);
- BOOST_CHECK_EQUAL(container.getCache().size(), 1);
- BOOST_CHECK(container.find(id1Key1Cert1.getName()) != container.end());
+ // add one cert
+ container.add(id1Key1Cert1);
+ BOOST_CHECK_EQUAL(container.size(), 1);
+ BOOST_CHECK_EQUAL(container.m_certs.size(), 1);
+ BOOST_CHECK(container.find(id1Key1Cert1.getName()) != container.end());
- // add the same cert again
- container.add(id1Key1Cert1);
- BOOST_CHECK_EQUAL(container.size(), 1);
- BOOST_CHECK_EQUAL(container.getCache().size(), 1);
- BOOST_CHECK(container.find(id1Key1Cert1.getName()) != container.end());
+ // add the same cert again
+ container.add(id1Key1Cert1);
+ BOOST_CHECK_EQUAL(container.size(), 1);
+ BOOST_CHECK_EQUAL(container.m_certs.size(), 1);
+ BOOST_CHECK(container.find(id1Key1Cert1.getName()) != container.end());
- // add another cert
- container.add(id1Key1Cert2);
- BOOST_CHECK_EQUAL(container.size(), 2);
- BOOST_CHECK_EQUAL(container.getCache().size(), 2);
- BOOST_CHECK(container.find(id1Key1Cert1.getName()) != container.end());
- BOOST_CHECK(container.find(id1Key1Cert2.getName()) != container.end());
+ // add another cert
+ container.add(id1Key1Cert2);
+ BOOST_CHECK_EQUAL(container.size(), 2);
+ BOOST_CHECK_EQUAL(container.m_certs.size(), 2);
+ BOOST_CHECK(container.find(id1Key1Cert1.getName()) != container.end());
+ BOOST_CHECK(container.find(id1Key1Cert2.getName()) != container.end());
- // get certs
- BOOST_REQUIRE_NO_THROW(container.get(id1Key1Cert1.getName()));
- BOOST_REQUIRE_NO_THROW(container.get(id1Key1Cert2.getName()));
- Name id1Key1Cert3Name = id1Key1Name;
- id1Key1Cert3Name.append("issuer").appendVersion(3);
- BOOST_CHECK_THROW(container.get(id1Key1Cert3Name), Pib::Error);
+ // check certs
+ Certificate cert1 = container.get(id1Key1Cert1.getName());
+ Certificate cert2 = container.get(id1Key1Cert2.getName());
+ BOOST_CHECK_EQUAL(cert1, id1Key1Cert1);
+ BOOST_CHECK_EQUAL(cert2, id1Key1Cert2);
+ Name id1Key1Cert3Name = Name(id1Key1Name).append("issuer").appendVersion(3);
+ BOOST_CHECK_THROW(container.get(id1Key1Cert3Name), pib::Pib::Error);
+ }
- // check cert
- Certificate cert1 = container.get(id1Key1Cert1.getName());
- Certificate cert2 = container.get(id1Key1Cert2.getName());
- BOOST_CHECK_EQUAL(cert1, id1Key1Cert1);
- BOOST_CHECK_EQUAL(cert2, id1Key1Cert2);
+ {
+ // create a container from an existing (non-empty) PibImpl
+ // names are loaded immediately but the certificate cache should initially be empty
+ CertificateContainer container2(id1Key1Name, pibImpl);
+ BOOST_CHECK_EQUAL(container2.size(), 2);
+ BOOST_CHECK_EQUAL(container2.m_certs.size(), 0);
- // create another container from the same PibImpl
- // cache should be empty
- CertificateContainer container2(id1Key1Name, pibImpl);
- BOOST_CHECK_EQUAL(container2.size(), 2);
- BOOST_CHECK_EQUAL(container2.getCache().size(), 0);
+ // fetching the certificates should populate the cache
+ BOOST_CHECK_EQUAL(container2.get(id1Key1Cert1.getName()), id1Key1Cert1);
+ BOOST_CHECK_EQUAL(container2.size(), 2);
+ BOOST_CHECK_EQUAL(container2.m_certs.size(), 1);
- // get certificate, cache should be filled
- BOOST_REQUIRE_NO_THROW(container2.get(id1Key1Cert1.getName()));
- BOOST_CHECK_EQUAL(container2.size(), 2);
- BOOST_CHECK_EQUAL(container2.getCache().size(), 1);
+ BOOST_CHECK_EQUAL(container2.get(id1Key1Cert2.getName()), id1Key1Cert2);
+ BOOST_CHECK_EQUAL(container2.size(), 2);
+ BOOST_CHECK_EQUAL(container2.m_certs.size(), 2);
- BOOST_REQUIRE_NO_THROW(container2.get(id1Key1Cert2.getName()));
- BOOST_CHECK_EQUAL(container2.size(), 2);
- BOOST_CHECK_EQUAL(container2.getCache().size(), 2);
+ // remove a certificate
+ container2.remove(id1Key1Cert1.getName());
+ BOOST_CHECK_EQUAL(container2.size(), 1);
+ BOOST_CHECK_EQUAL(container2.m_certs.size(), 1);
+ BOOST_CHECK(container2.find(id1Key1Cert1.getName()) == container2.end());
+ BOOST_CHECK(container2.find(id1Key1Cert2.getName()) != container2.end());
- // remove a certificate
- container2.remove(id1Key1Cert1.getName());
- BOOST_CHECK_EQUAL(container2.size(), 1);
- BOOST_CHECK_EQUAL(container2.getCache().size(), 1);
- BOOST_CHECK(container2.find(id1Key1Cert1.getName()) == container2.end());
- BOOST_CHECK(container2.find(id1Key1Cert2.getName()) != container2.end());
-
- // remove another certificate
- container2.remove(id1Key1Cert2.getName());
- BOOST_CHECK_EQUAL(container2.size(), 0);
- BOOST_CHECK_EQUAL(container2.getCache().size(), 0);
- BOOST_CHECK(container2.find(id1Key1Cert2.getName()) == container2.end());
+ // remove another certificate
+ container2.remove(id1Key1Cert2.getName());
+ BOOST_CHECK_EQUAL(container2.size(), 0);
+ BOOST_CHECK_EQUAL(container2.m_certs.size(), 0);
+ BOOST_CHECK(container2.find(id1Key1Cert2.getName()) == container2.end());
+ }
}
BOOST_AUTO_TEST_CASE(Errors)
{
auto pibImpl = make_shared<PibMemory>();
-
CertificateContainer container(id1Key1Name, pibImpl);
BOOST_CHECK_THROW(container.add(id1Key2Cert1), std::invalid_argument);
@@ -123,17 +118,13 @@
BOOST_AUTO_TEST_CASE(Iterator)
{
auto pibImpl = make_shared<PibMemory>();
-
- // start with an empty container
CertificateContainer container(id1Key1Name, pibImpl);
container.add(id1Key1Cert1);
container.add(id1Key1Cert2);
- std::set<Name> certNames;
- certNames.insert(id1Key1Cert1.getName());
- certNames.insert(id1Key1Cert2.getName());
+ const std::set<Name> certNames{id1Key1Cert1.getName(), id1Key1Cert2.getName()};
- auto it = container.begin();
+ CertificateContainer::const_iterator it = container.begin();
auto testIt = certNames.begin();
BOOST_CHECK_EQUAL((*it).getName(), *testIt);
it++;
@@ -143,7 +134,8 @@
testIt++;
BOOST_CHECK(it == container.end());
- size_t count = 0;
+ // test range-based for
+ int count = 0;
testIt = certNames.begin();
for (const auto& cert : container) {
BOOST_CHECK_EQUAL(cert.getName(), *testIt);