diff --git a/tests/unit-tests/security/identity-fixture.cpp b/tests/unit-tests/security/identity-fixture.cpp
index 31bd3a2..04589bc 100644
--- a/tests/unit-tests/security/identity-fixture.cpp
+++ b/tests/unit-tests/security/identity-fixture.cpp
@@ -24,19 +24,23 @@
 #include "boost-test.hpp"
 
 namespace ndn {
-
-// OSX KeyChain, when used on a headless server,
-// forbids usage of a private key if that key isn't created by the calling process.
-// Therefore, unit testing must create its own key pair.
+namespace security {
 
 class IdentityFixture
 {
 public:
   IdentityFixture()
   {
+    // initialize KeyChain from TEST_HOME
+    if (std::getenv("TEST_HOME"))
+      m_HOME = std::getenv("TEST_HOME");
+    setenv("TEST_HOME", "tests/unit-tests/security/config-file-home", 1);
+
+    KeyChain keyChain("sqlite3", "file");
+
     // save the old default identity
     try {
-      m_oldDefaultIdentity = m_keyChain.getDefaultIdentity();
+      m_oldDefaultIdentity = keyChain.getDefaultIdentity();
       m_hasOldDefaultIdentity = true;
     }
     catch (SecPublicInfo::Error& e) {
@@ -47,28 +51,36 @@
     m_newIdentity.appendVersion();
 
     // create the new identity and self-signed certificate
-    m_keyChain.createIdentity(m_newIdentity);
+    keyChain.createIdentity(m_newIdentity);
 
     // set the new identity as default identity,
     // and the corresponding certificate becomes the default certificate
-    m_keyChain.setDefaultIdentity(m_newIdentity);
+    keyChain.setDefaultIdentity(m_newIdentity);
   }
 
   ~IdentityFixture()
   {
+    KeyChain keyChain("sqlite3", "file");
+
     // recover the old default setting
     if (m_hasOldDefaultIdentity) {
-      m_keyChain.setDefaultIdentity(m_oldDefaultIdentity);
+      keyChain.setDefaultIdentity(m_oldDefaultIdentity);
     }
 
     // remove the temporarily created identity and certificates
     // XXX This has no effect if oldDefaultIdentity doesn't exist.
     //     newIdentity would be kept as default.
-    m_keyChain.deleteIdentity(m_newIdentity);
+    keyChain.deleteIdentity(m_newIdentity);
+
+    if (!m_HOME.empty())
+      setenv("TEST_HOME", m_HOME.c_str(), 1);
+    else
+      unsetenv("TEST_HOME");
   }
 
 private:
-  KeyChain m_keyChain;
+  std::string m_HOME;
+
   bool m_hasOldDefaultIdentity;
   Name m_oldDefaultIdentity;
   Name m_newIdentity;
@@ -76,4 +88,5 @@
 
 BOOST_GLOBAL_FIXTURE(IdentityFixture)
 
+} // namespace security
 } // namespace ndn
diff --git a/tests/unit-tests/security/identity-management-fixture.cpp b/tests/unit-tests/security/identity-management-fixture.cpp
new file mode 100644
index 0000000..72c0cbe
--- /dev/null
+++ b/tests/unit-tests/security/identity-management-fixture.cpp
@@ -0,0 +1,54 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/**
+ * Copyright (c) 2013-2014 Regents of the University of California.
+ *
+ * This file is part of ndn-cxx library (NDN C++ library with eXperimental eXtensions).
+ *
+ * ndn-cxx library is free software: you can redistribute it and/or modify it under the
+ * terms of the GNU Lesser General Public License as published by the Free Software
+ * Foundation, either version 3 of the License, or (at your option) any later version.
+ *
+ * ndn-cxx library 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 Lesser General Public License for more details.
+ *
+ * You should have received copies of the GNU General Public License and GNU Lesser
+ * General Public License along with ndn-cxx, e.g., in COPYING.md file.  If not, see
+ * <http://www.gnu.org/licenses/>.
+ *
+ * See AUTHORS.md for complete list of ndn-cxx authors and contributors.
+ */
+
+#include "identity-management-fixture.hpp"
+
+namespace ndn {
+namespace security {
+
+IdentityManagementFixture::IdentityManagementFixture()
+  : m_keyChain("sqlite3", "file")
+{
+}
+
+IdentityManagementFixture::~IdentityManagementFixture()
+{
+  for (std::vector<Name>::iterator it = m_identities.begin();
+       it != m_identities.end(); it++) {
+    m_keyChain.deleteIdentity(*it);
+  }
+}
+
+bool
+IdentityManagementFixture::addIdentity(const Name& identity, const KeyParams& params)
+{
+  try {
+    m_keyChain.createIdentity(identity, params);
+    m_identities.push_back(identity);
+    return true;
+  }
+  catch (std::runtime_error& e) {
+    return false;
+  }
+}
+
+} // namespace security
+} // namespace ndn
diff --git a/tests/unit-tests/security/identity-management-fixture.hpp b/tests/unit-tests/security/identity-management-fixture.hpp
new file mode 100644
index 0000000..268d2ea
--- /dev/null
+++ b/tests/unit-tests/security/identity-management-fixture.hpp
@@ -0,0 +1,53 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/**
+ * Copyright (c) 2013-2014 Regents of the University of California.
+ *
+ * This file is part of ndn-cxx library (NDN C++ library with eXperimental eXtensions).
+ *
+ * ndn-cxx library is free software: you can redistribute it and/or modify it under the
+ * terms of the GNU Lesser General Public License as published by the Free Software
+ * Foundation, either version 3 of the License, or (at your option) any later version.
+ *
+ * ndn-cxx library 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 Lesser General Public License for more details.
+ *
+ * You should have received copies of the GNU General Public License and GNU Lesser
+ * General Public License along with ndn-cxx, e.g., in COPYING.md file.  If not, see
+ * <http://www.gnu.org/licenses/>.
+ *
+ * See AUTHORS.md for complete list of ndn-cxx authors and contributors.
+ */
+
+#include "security/key-chain.hpp"
+#include <vector>
+
+#include "boost-test.hpp"
+
+namespace ndn {
+namespace security {
+
+/**
+ * @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
+{
+public:
+  IdentityManagementFixture();
+
+  ~IdentityManagementFixture();
+
+  /// @brief add identity, return true if succeed.
+  bool
+  addIdentity(const Name& identity, const KeyParams& params = KeyChain::DEFAULT_KEY_PARAMS);
+
+protected:
+  KeyChain m_keyChain;
+  std::vector<Name> m_identities;
+};
+
+} // namespace security
+} // namespace ndn
diff --git a/tests/unit-tests/security/test-fixture.cpp b/tests/unit-tests/security/test-fixture.cpp
new file mode 100644
index 0000000..1b0226a
--- /dev/null
+++ b/tests/unit-tests/security/test-fixture.cpp
@@ -0,0 +1,40 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/**
+ * Copyright (c) 2013-2014 Regents of the University of California.
+ *
+ * This file is part of ndn-cxx library (NDN C++ library with eXperimental eXtensions).
+ *
+ * ndn-cxx library is free software: you can redistribute it and/or modify it under the
+ * terms of the GNU Lesser General Public License as published by the Free Software
+ * Foundation, either version 3 of the License, or (at your option) any later version.
+ *
+ * ndn-cxx library 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 Lesser General Public License for more details.
+ *
+ * You should have received copies of the GNU General Public License and GNU Lesser
+ * General Public License along with ndn-cxx, e.g., in COPYING.md file.  If not, see
+ * <http://www.gnu.org/licenses/>.
+ *
+ * See AUTHORS.md for complete list of ndn-cxx authors and contributors.
+ */
+
+#include "identity-management-fixture.hpp"
+#include "boost-test.hpp"
+
+namespace ndn {
+
+BOOST_FIXTURE_TEST_SUITE(SecurityTestIdentityManagementFixture, security::IdentityManagementFixture)
+
+BOOST_AUTO_TEST_CASE(Tmp)
+{
+  Name identity("/tmp/identity");
+  BOOST_REQUIRE(addIdentity(identity));
+  Name certName = m_keyChain.getDefaultCertificateNameForIdentity(identity);
+  BOOST_REQUIRE_EQUAL(certName.empty(), false);
+  BOOST_REQUIRE_NO_THROW(m_keyChain.getCertificate(certName));
+}
+
+BOOST_AUTO_TEST_SUITE_END()
+
+} // namespace ndn
