tests: Implement IdentityManagementV2Fixture for v2::KeyChain
The old IdentityManagementFixture is renamed to IdentityManagementV1Fixture.
This commit also removes global KeyChainFixture, as it doesn't work with
TestKeyChain test suites. Instead, IdentityManagementFixtures are
customizing PIB/TPM modules.
Change-Id: Iadc43b78523cd43bff4f454d6aea2fca8107a650
Refs: #2926
diff --git a/tests/identity-management-fixture.hpp b/tests/identity-management-fixture.hpp
index f96a24c..d2d1473 100644
--- a/tests/identity-management-fixture.hpp
+++ b/tests/identity-management-fixture.hpp
@@ -23,61 +23,121 @@
#define NDN_TESTS_IDENTITY_MANAGEMENT_FIXTURE_HPP
#include "security/v1/key-chain.hpp"
+#include "security/v2/key-chain.hpp"
#include "security/signing-helpers.hpp"
#include <vector>
#include "boost-test.hpp"
+#include "test-home-fixture.hpp"
namespace ndn {
namespace tests {
-/**
- * @brief IdentityManagementFixture is a test suite level fixture.
- * Test cases in the suite can use this fixture to create identities.
- * Identities added via addIdentity method are automatically deleted
- * during test teardown.
- */
-class IdentityManagementFixture
+class IdentityManagementBaseFixture : public TestHomeFixture<DefaultPibDir>
{
public:
- IdentityManagementFixture();
+ ~IdentityManagementBaseFixture();
- ~IdentityManagementFixture();
-
- /// @brief add identity, return true if succeed.
bool
+ saveCertToFile(const Data& obj, const std::string& filename);
+
+protected:
+ std::set<Name> m_identities;
+ std::set<std::string> m_certFiles;
+};
+
+/**
+ * @brief A test suite level fixture to help with identity management
+ *
+ * Test cases in the suite can use this fixture to create identities. Identities,
+ * certificates, and saved certificates are automatically removed during test teardown.
+ *
+ * @deprecated Use IdentityManagementV2Fixture
+ */
+class IdentityManagementV1Fixture : public IdentityManagementBaseFixture
+{
+public:
+ ~IdentityManagementV1Fixture();
+
+ /**
+ * @brief Add identity
+ * @return name of the created self-signed certificate
+ */
+ Name
addIdentity(const Name& identity, const KeyParams& params = security::v1::KeyChain::DEFAULT_KEY_PARAMS);
/**
* @brief save identity certificate to a file
- * @param identity identity name
+ * @param identity certificate name
* @param filename file name, should be writable
- * @param wantAdd if true, add new identity when necessary
* @return whether successful
*/
bool
- saveIdentityCertificate(const Name& identity, const std::string& filename, bool wantAdd = false);
+ saveIdentityCertificate(const Name& certName, const std::string& filename);
- /** \brief issue a certificate for \p identity signed by \p issuer
+ /**
+ * @brief issue a certificate for \p subIdentity signed by \p issuer
*
* If identity does not exist, it is created.
* A new key is generated as the default key for identity.
* A default certificate for the key is signed by the issuer using its default certificate.
*
- * \return whether success
+ * @return whether success
*/
bool
- addSubCertificate(const Name& identity, const Name& issuer,
+ addSubCertificate(const Name& subIdentity, const Name& issuer,
const KeyParams& params = security::v1::KeyChain::DEFAULT_KEY_PARAMS);
protected:
security::v1::KeyChain m_keyChain;
-
-private:
- std::vector<Name> m_identities;
- std::vector<std::string> m_certFiles;
};
+/**
+ * @brief A test suite level fixture to help with identity management
+ *
+ * Test cases in the suite can use this fixture to create identities. Identities,
+ * certificates, and saved certificates are automatically removed during test teardown.
+ */
+class IdentityManagementV2Fixture : public IdentityManagementBaseFixture
+{
+public:
+ IdentityManagementV2Fixture();
+
+ /**
+ * @brief Add identity @p identityName
+ * @return name of the created self-signed certificate
+ */
+ security::Identity
+ addIdentity(const Name& identityName, const KeyParams& params = security::v2::KeyChain::getDefaultKeyParams());
+
+ /**
+ * @brief Save identity certificate to a file
+ * @param identity identity
+ * @param filename file name, should be writable
+ * @return whether successful
+ */
+ bool
+ saveIdentityCertificate(const security::Identity& identity, const std::string& filename);
+
+ /**
+ * @brief Issue a certificate for \p subIdentityName signed by \p issuer
+ *
+ * If identity does not exist, it is created.
+ * A new key is generated as the default key for identity.
+ * A default certificate for the key is signed by the issuer using its default certificate.
+ *
+ * @return the sub identity
+ */
+ security::Identity
+ addSubCertificate(const Name& subIdentityName, const security::Identity& issuer,
+ const KeyParams& params = security::v2::KeyChain::getDefaultKeyParams());
+
+protected:
+ security::v2::KeyChain m_keyChain;
+};
+
+using IdentityManagementFixture = IdentityManagementV1Fixture;
+
} // namespace tests
} // namespace ndn