diff --git a/tests/unit-tests/security/test-certificate-cache.cpp b/tests/unit-tests/security/certificate-cache-ttl.t.cpp
similarity index 96%
rename from tests/unit-tests/security/test-certificate-cache.cpp
rename to tests/unit-tests/security/certificate-cache-ttl.t.cpp
index 1524b1d..4d3430d 100644
--- a/tests/unit-tests/security/test-certificate-cache.cpp
+++ b/tests/unit-tests/security/certificate-cache-ttl.t.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /**
- * Copyright (c) 2013-2014 Regents of the University of California.
+ * Copyright (c) 2013-2015 Regents of the University of California.
  *
  * This file is part of ndn-cxx library (NDN C++ library with eXperimental eXtensions).
  *
@@ -29,7 +29,7 @@
 namespace ndn {
 namespace tests {
 
-BOOST_AUTO_TEST_SUITE(SecurityTestCertificateCache)
+BOOST_AUTO_TEST_SUITE(SecurityCertificateCacheTtl)
 
 class CertificateCacheFixture : public UnitTestTimeFixture
 {
@@ -64,7 +64,6 @@
   Name name2;
 };
 
-
 BOOST_FIXTURE_TEST_CASE(Expiration, CertificateCacheFixture)
 {
   cache->insertCertificate(cert1);
diff --git a/tests/unit-tests/security/test-encode-decode-certificate.cpp b/tests/unit-tests/security/certificate.t.cpp
similarity index 98%
rename from tests/unit-tests/security/test-encode-decode-certificate.cpp
rename to tests/unit-tests/security/certificate.t.cpp
index 04ac645..b975cf0 100644
--- a/tests/unit-tests/security/test-encode-decode-certificate.cpp
+++ b/tests/unit-tests/security/certificate.t.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /**
- * Copyright (c) 2013-2014 Regents of the University of California.
+ * Copyright (c) 2013-2015 Regents of the University of California.
  *
  * This file is part of ndn-cxx library (NDN C++ library with eXperimental eXtensions).
  *
@@ -33,7 +33,7 @@
 
 using namespace CryptoPP;
 
-BOOST_AUTO_TEST_SUITE(SecurityTestCertificate)
+BOOST_AUTO_TEST_SUITE(SecurityEncodeDecodeCertificate)
 
 const uint8_t PUBLIC_KEY[] = {
 0x30, 0x81, 0x9d, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01,
diff --git a/tests/unit-tests/security/test-conf-checker.cpp b/tests/unit-tests/security/conf/checker.t.cpp
similarity index 97%
rename from tests/unit-tests/security/test-conf-checker.cpp
rename to tests/unit-tests/security/conf/checker.t.cpp
index f173436..ea26b0c 100644
--- a/tests/unit-tests/security/test-conf-checker.cpp
+++ b/tests/unit-tests/security/conf/checker.t.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /**
- * Copyright (c) 2013-2014 Regents of the University of California.
+ * Copyright (c) 2013-2015 Regents of the University of California.
  *
  * This file is part of ndn-cxx library (NDN C++ library with eXperimental eXtensions).
  *
@@ -25,8 +25,11 @@
 #include "boost-test.hpp"
 
 namespace ndn {
+namespace security {
+namespace conf {
+namespace tests {
 
-BOOST_FIXTURE_TEST_SUITE(SecurityTestConfChecker, security::IdentityManagementFixture)
+BOOST_FIXTURE_TEST_SUITE(SecurityConfChecker, IdentityManagementFixture)
 
 void
 interestChecked(const shared_ptr<const Interest>& interest)
@@ -525,4 +528,7 @@
 
 BOOST_AUTO_TEST_SUITE_END()
 
+} // namespace tests
+} // namespace conf
+} // namespace security
 } // namespace ndn
diff --git a/tests/unit-tests/security/test-digest-sha256.cpp b/tests/unit-tests/security/digest-sha256.t.cpp
similarity index 91%
rename from tests/unit-tests/security/test-digest-sha256.cpp
rename to tests/unit-tests/security/digest-sha256.t.cpp
index 4460be7..b0cdebc 100644
--- a/tests/unit-tests/security/test-digest-sha256.cpp
+++ b/tests/unit-tests/security/digest-sha256.t.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /**
- * Copyright (c) 2013-2014 Regents of the University of California.
+ * Copyright (c) 2013-2015 Regents of the University of California.
  *
  * This file is part of ndn-cxx library (NDN C++ library with eXperimental eXtensions).
  *
@@ -19,6 +19,7 @@
  * See AUTHORS.md for complete list of ndn-cxx authors and contributors.
  */
 
+#include "security/digest-sha256.hpp"
 #include "security/key-chain.hpp"
 #include "security/validator.hpp"
 #include "security/cryptopp.hpp"
@@ -26,8 +27,9 @@
 #include "boost-test.hpp"
 
 namespace ndn {
+namespace tests {
 
-BOOST_FIXTURE_TEST_SUITE(SecurityTestDigestSha256, security::IdentityManagementFixture)
+BOOST_FIXTURE_TEST_SUITE(SecurityDigestSha256, security::IdentityManagementFixture)
 
 std::string SHA256_RESULT("a883dafc480d466ee04e0d6da986bd78eb1fdd2178d04693723da3a8f95d42f4");
 
@@ -78,7 +80,7 @@
   BOOST_CHECK(Validator::verifySignature(testInterest, sig));
 }
 
-
 BOOST_AUTO_TEST_SUITE_END()
 
+} // namespace tests
 } // namespace ndn
diff --git a/tests/unit-tests/security/test-fixture.cpp b/tests/unit-tests/security/identity-management-fixture.t.cpp
similarity index 85%
rename from tests/unit-tests/security/test-fixture.cpp
rename to tests/unit-tests/security/identity-management-fixture.t.cpp
index 1b0226a..046c018 100644
--- a/tests/unit-tests/security/test-fixture.cpp
+++ b/tests/unit-tests/security/identity-management-fixture.t.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /**
- * Copyright (c) 2013-2014 Regents of the University of California.
+ * Copyright (c) 2013-2015 Regents of the University of California.
  *
  * This file is part of ndn-cxx library (NDN C++ library with eXperimental eXtensions).
  *
@@ -23,8 +23,10 @@
 #include "boost-test.hpp"
 
 namespace ndn {
+namespace security {
+namespace tests {
 
-BOOST_FIXTURE_TEST_SUITE(SecurityTestIdentityManagementFixture, security::IdentityManagementFixture)
+BOOST_FIXTURE_TEST_SUITE(SecurityIdentityManagementFixture, IdentityManagementFixture)
 
 BOOST_AUTO_TEST_CASE(Tmp)
 {
@@ -37,4 +39,6 @@
 
 BOOST_AUTO_TEST_SUITE_END()
 
+} // namespace tests
+} // namespace security
 } // namespace ndn
diff --git a/tests/unit-tests/security/test-keychain.cpp b/tests/unit-tests/security/key-chain.t.cpp
similarity index 99%
rename from tests/unit-tests/security/test-keychain.cpp
rename to tests/unit-tests/security/key-chain.t.cpp
index 5f8e06b..f3d125a 100644
--- a/tests/unit-tests/security/test-keychain.cpp
+++ b/tests/unit-tests/security/key-chain.t.cpp
@@ -31,7 +31,7 @@
 
 using std::vector;
 
-BOOST_FIXTURE_TEST_SUITE(SecurityTestKeyChain, util::TestHomeEnvironmentFixture)
+BOOST_FIXTURE_TEST_SUITE(SecurityKeyChain, util::TestHomeEnvironmentFixture)
 
 BOOST_AUTO_TEST_CASE(ConstructorNormalConfig)
 {
diff --git a/tests/unit-tests/security/test-key-params.cpp b/tests/unit-tests/security/key-params.t.cpp
similarity index 94%
rename from tests/unit-tests/security/test-key-params.cpp
rename to tests/unit-tests/security/key-params.t.cpp
index 48db6c6..3cfc61c 100644
--- a/tests/unit-tests/security/test-key-params.cpp
+++ b/tests/unit-tests/security/key-params.t.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /**
- * Copyright (c) 2013-2014 Regents of the University of California.
+ * Copyright (c) 2013-2015 Regents of the University of California.
  *
  * This file is part of ndn-cxx library (NDN C++ library with eXperimental eXtensions).
  *
@@ -25,8 +25,9 @@
 
 
 namespace ndn {
+namespace tests {
 
-BOOST_AUTO_TEST_SUITE(SecurityTestKeyParams)
+BOOST_AUTO_TEST_SUITE(SecurityKeyParams)
 
 BOOST_AUTO_TEST_CASE(RsaParameter)
 {
@@ -88,4 +89,5 @@
 
 BOOST_AUTO_TEST_SUITE_END()
 
+} // namespace tests
 } // namespace ndn
diff --git a/tests/unit-tests/security/test-public-key.cpp b/tests/unit-tests/security/public-key.t.cpp
similarity index 96%
rename from tests/unit-tests/security/test-public-key.cpp
rename to tests/unit-tests/security/public-key.t.cpp
index 46ecfea..96fda58 100644
--- a/tests/unit-tests/security/test-public-key.cpp
+++ b/tests/unit-tests/security/public-key.t.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /**
- * Copyright (c) 2013-2014 Regents of the University of California.
+ * Copyright (c) 2013-2015 Regents of the University of California.
  *
  * This file is part of ndn-cxx library (NDN C++ library with eXperimental eXtensions).
  *
@@ -25,10 +25,10 @@
 
 #include "boost-test.hpp"
 
-
 namespace ndn {
+namespace tests {
 
-BOOST_AUTO_TEST_SUITE(SecurityTestPublicKey)
+BOOST_AUTO_TEST_SUITE(SecurityPublicKey)
 
 const std::string RSA_DER("MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuFoDcNtffwbfFix64fw0\
 hI2tKMkFrc6Ex7yw0YLMK9vGE8lXOyBl/qXabow6RCz+GldmFN6E2Qhm1+AX3Zm5\
@@ -104,4 +104,5 @@
 
 BOOST_AUTO_TEST_SUITE_END()
 
+} // namespace tests
 } // namespace ndn
diff --git a/tests/unit-tests/security/test-sec-public-info-sqlite3.cpp b/tests/unit-tests/security/sec-public-info-sqlite3.t.cpp
similarity index 97%
rename from tests/unit-tests/security/test-sec-public-info-sqlite3.cpp
rename to tests/unit-tests/security/sec-public-info-sqlite3.t.cpp
index 88b3ee7..2828b0a 100644
--- a/tests/unit-tests/security/test-sec-public-info-sqlite3.cpp
+++ b/tests/unit-tests/security/sec-public-info-sqlite3.t.cpp
@@ -30,6 +30,7 @@
 #include "boost-test.hpp"
 
 namespace ndn {
+namespace tests {
 
 class PibTmpPathFixture
 {
@@ -51,7 +52,7 @@
   boost::filesystem::path tmpPath;
 };
 
-BOOST_AUTO_TEST_SUITE(SecurityTestSecPublicInfoSqlite3)
+BOOST_AUTO_TEST_SUITE(SecuritySecPublicInfoSqlite3)
 
 const std::string RSA_DER("MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuFoDcNtffwbfFix64fw0\
 hI2tKMkFrc6Ex7yw0YLMK9vGE8lXOyBl/qXabow6RCz+GldmFN6E2Qhm1+AX3Zm5\
@@ -145,4 +146,5 @@
 
 BOOST_AUTO_TEST_SUITE_END()
 
+} // namespace tests
 } // namespace ndn
diff --git a/tests/unit-tests/security/test-sec-rule.cpp b/tests/unit-tests/security/sec-rule-relative.t.cpp
similarity index 61%
copy from tests/unit-tests/security/test-sec-rule.cpp
copy to tests/unit-tests/security/sec-rule-relative.t.cpp
index 91f9b09..f2f92e6 100644
--- a/tests/unit-tests/security/test-sec-rule.cpp
+++ b/tests/unit-tests/security/sec-rule-relative.t.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /**
- * Copyright (c) 2013-2014 Regents of the University of California.
+ * Copyright (c) 2013-2015 Regents of the University of California.
  *
  * This file is part of ndn-cxx library (NDN C++ library with eXperimental eXtensions).
  *
@@ -19,46 +19,14 @@
  * See AUTHORS.md for complete list of ndn-cxx authors and contributors.
  */
 
-#include "security/sec-rule-specific.hpp"
 #include "security/sec-rule-relative.hpp"
-#include "security/key-chain.hpp"
 #include "identity-management-fixture.hpp"
 
-#include "boost-test.hpp"
-
 namespace ndn {
+namespace security {
+namespace tests {
 
-BOOST_FIXTURE_TEST_SUITE(SecurityTestSecRule, security::IdentityManagementFixture)
-
-BOOST_AUTO_TEST_CASE(SecRuleSpecificTest)
-{
-  Name rsaIdentity("/SecurityTestSecRule/Basic/Rsa");
-  BOOST_REQUIRE(addIdentity(rsaIdentity, RsaKeyParams()));
-  Name ecdsaIdentity("/SecurityTestSecRule/Basic/Ecdsa");
-  BOOST_REQUIRE(addIdentity(ecdsaIdentity, EcdsaKeyParams()));
-
-  Name dataName("SecurityTestSecRule/Basic");
-  Data rsaData(dataName);
-  m_keyChain.signByIdentity(rsaData, rsaIdentity);
-  Data ecdsaData(dataName);
-  m_keyChain.signByIdentity(ecdsaData, ecdsaIdentity);
-  Data sha256Data(dataName);
-  m_keyChain.signWithSha256(sha256Data);
-
-  shared_ptr<Regex> dataRegex =
-    make_shared<Regex>("^<SecurityTestSecRule><Basic>$");
-  shared_ptr<Regex> signerRegex =
-    make_shared<Regex>("^<SecurityTestSecRule><Basic><><KEY><><>$");
-
-  SecRuleSpecific rule(dataRegex, signerRegex);
-  BOOST_CHECK(rule.satisfy(rsaData));
-  BOOST_CHECK(rule.satisfy(ecdsaData));
-  BOOST_CHECK_EQUAL(rule.satisfy(sha256Data), false);
-
-  BOOST_CHECK(rule.matchSignerName(rsaData));
-  BOOST_CHECK(rule.matchSignerName(ecdsaData));
-  BOOST_CHECK_EQUAL(rule.matchSignerName(sha256Data), false);
-}
+BOOST_FIXTURE_TEST_SUITE(SecuritySecRuleRelative, IdentityManagementFixture)
 
 BOOST_AUTO_TEST_CASE(SecRuleRelativeTest)
 {
@@ -89,4 +57,6 @@
 
 BOOST_AUTO_TEST_SUITE_END()
 
+} // namespace tests
+} // namespace security
 } // namespace ndn
diff --git a/tests/unit-tests/security/test-sec-rule.cpp b/tests/unit-tests/security/sec-rule-specific.t.cpp
similarity index 65%
rename from tests/unit-tests/security/test-sec-rule.cpp
rename to tests/unit-tests/security/sec-rule-specific.t.cpp
index 91f9b09..3c48265 100644
--- a/tests/unit-tests/security/test-sec-rule.cpp
+++ b/tests/unit-tests/security/sec-rule-specific.t.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /**
- * Copyright (c) 2013-2014 Regents of the University of California.
+ * Copyright (c) 2013-2015 Regents of the University of California.
  *
  * This file is part of ndn-cxx library (NDN C++ library with eXperimental eXtensions).
  *
@@ -20,15 +20,16 @@
  */
 
 #include "security/sec-rule-specific.hpp"
-#include "security/sec-rule-relative.hpp"
 #include "security/key-chain.hpp"
 #include "identity-management-fixture.hpp"
 
 #include "boost-test.hpp"
 
 namespace ndn {
+namespace security {
+namespace tests {
 
-BOOST_FIXTURE_TEST_SUITE(SecurityTestSecRule, security::IdentityManagementFixture)
+BOOST_FIXTURE_TEST_SUITE(SecuritySecRuleSpecific, IdentityManagementFixture)
 
 BOOST_AUTO_TEST_CASE(SecRuleSpecificTest)
 {
@@ -60,33 +61,8 @@
   BOOST_CHECK_EQUAL(rule.matchSignerName(sha256Data), false);
 }
 
-BOOST_AUTO_TEST_CASE(SecRuleRelativeTest)
-{
-  Name rsaIdentity("/SecurityTestSecRule/Basic/Rsa");
-  BOOST_REQUIRE(addIdentity(rsaIdentity, RsaKeyParams()));
-  Name ecdsaIdentity("/SecurityTestSecRule/Basic/Ecdsa");
-  BOOST_REQUIRE(addIdentity(ecdsaIdentity, EcdsaKeyParams()));
-
-  Name dataName("SecurityTestSecRule/Basic");
-  Data rsaData(dataName);
-  m_keyChain.signByIdentity(rsaData, rsaIdentity);
-  Data ecdsaData(dataName);
-  m_keyChain.signByIdentity(ecdsaData, ecdsaIdentity);
-  Data sha256Data(dataName);
-  m_keyChain.signWithSha256(sha256Data);
-
-  SecRuleRelative rule("^(<SecurityTestSecRule><Basic>)$",
-                       "^(<SecurityTestSecRule><Basic>)<><KEY><><>$",
-                       "==", "\\1", "\\1", true);
-  BOOST_CHECK(rule.satisfy(rsaData));
-  BOOST_CHECK(rule.satisfy(ecdsaData));
-  BOOST_CHECK_EQUAL(rule.satisfy(sha256Data), false);
-
-  BOOST_CHECK(rule.matchSignerName(rsaData));
-  BOOST_CHECK(rule.matchSignerName(ecdsaData));
-  BOOST_CHECK_EQUAL(rule.matchSignerName(sha256Data), false);
-}
-
 BOOST_AUTO_TEST_SUITE_END()
 
+} // namespace tests
+} // namespace security
 } // namespace ndn
diff --git a/tests/unit-tests/security/test-sec-tpm-file.cpp b/tests/unit-tests/security/sec-tpm-file.t.cpp
similarity index 99%
rename from tests/unit-tests/security/test-sec-tpm-file.cpp
rename to tests/unit-tests/security/sec-tpm-file.t.cpp
index 8b262ba..fc1f6fb 100644
--- a/tests/unit-tests/security/test-sec-tpm-file.cpp
+++ b/tests/unit-tests/security/sec-tpm-file.t.cpp
@@ -30,8 +30,9 @@
 #include "boost-test.hpp"
 
 namespace ndn {
+namespace tests {
 
-BOOST_AUTO_TEST_SUITE(SecurityTestSecTpmFile)
+BOOST_AUTO_TEST_SUITE(SecuritySecTpmFile)
 
 BOOST_AUTO_TEST_CASE(Delete)
 {
@@ -404,7 +405,7 @@
   BOOST_REQUIRE_EQUAL(tpm.doesKeyExistInTpm(keyName, KEY_CLASS_PUBLIC), false);
 }
 
-
 BOOST_AUTO_TEST_SUITE_END()
 
+} // namespace tests
 } // namespace ndn
diff --git a/tests/unit-tests/security/test-sec-tpm-osx.cpp b/tests/unit-tests/security/sec-tpm-osx.t.cpp
similarity index 98%
rename from tests/unit-tests/security/test-sec-tpm-osx.cpp
rename to tests/unit-tests/security/sec-tpm-osx.t.cpp
index 0fd1ba3..1e590af 100644
--- a/tests/unit-tests/security/test-sec-tpm-osx.cpp
+++ b/tests/unit-tests/security/sec-tpm-osx.t.cpp
@@ -30,6 +30,7 @@
 #include "boost-test.hpp"
 
 namespace ndn {
+namespace tests {
 
 class OsxKeyChainTestFixture
 {
@@ -61,7 +62,7 @@
   std::string m_HOME;
 };
 
-BOOST_FIXTURE_TEST_SUITE(SecurityTestSecTpmOsx, OsxKeyChainTestFixture)
+BOOST_FIXTURE_TEST_SUITE(SecuritySecTpmOsx, OsxKeyChainTestFixture)
 
 BOOST_AUTO_TEST_CASE(Delete)
 {
@@ -360,4 +361,5 @@
 
 BOOST_AUTO_TEST_SUITE_END()
 
+} // namespace tests
 } // namespace ndn
diff --git a/tests/unit-tests/security/test-signature-sha256-ecdsa.cpp b/tests/unit-tests/security/signature-sha256-with-ecdsa.t.cpp
similarity index 96%
rename from tests/unit-tests/security/test-signature-sha256-ecdsa.cpp
rename to tests/unit-tests/security/signature-sha256-with-ecdsa.t.cpp
index a384bdc..22b324a 100644
--- a/tests/unit-tests/security/test-signature-sha256-ecdsa.cpp
+++ b/tests/unit-tests/security/signature-sha256-with-ecdsa.t.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /**
- * Copyright (c) 2013-2014 Regents of the University of California.
+ * Copyright (c) 2013-2015 Regents of the University of California.
  *
  * This file is part of ndn-cxx library (NDN C++ library with eXperimental eXtensions).
  *
@@ -43,7 +43,7 @@
   Scheduler scheduler;
 };
 
-BOOST_FIXTURE_TEST_SUITE(SecurityTestSignatureSha256WithEcdsa, SignatureSha256EcdsaTimeFixture)
+BOOST_FIXTURE_TEST_SUITE(SecuritySignatureSha256WithEcdsa, SignatureSha256EcdsaTimeFixture)
 
 const uint8_t sigInfo[] = {
 0x16, 0x1b, // SignatureInfo
diff --git a/tests/unit-tests/security/test-signature-sha256-rsa.cpp b/tests/unit-tests/security/signature-sha256-with-rsa.t.cpp
similarity index 97%
rename from tests/unit-tests/security/test-signature-sha256-rsa.cpp
rename to tests/unit-tests/security/signature-sha256-with-rsa.t.cpp
index cf6b172..0eb39f4 100644
--- a/tests/unit-tests/security/test-signature-sha256-rsa.cpp
+++ b/tests/unit-tests/security/signature-sha256-with-rsa.t.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /**
- * Copyright (c) 2013-2014 Regents of the University of California.
+ * Copyright (c) 2013-2015 Regents of the University of California.
  *
  * This file is part of ndn-cxx library (NDN C++ library with eXperimental eXtensions).
  *
@@ -43,7 +43,7 @@
   Scheduler scheduler;
 };
 
-BOOST_FIXTURE_TEST_SUITE(SecurityTestSignatureSha256WithRsa, SignatureSha256RsaTimeFixture)
+BOOST_FIXTURE_TEST_SUITE(SecuritySignatureSha256WithRsa, SignatureSha256RsaTimeFixture)
 
 const uint8_t sigInfo[] = {
 0x16, 0x1b, // SignatureInfo
diff --git a/tests/unit-tests/security/test-validator-config.cpp b/tests/unit-tests/security/validator-config.t.cpp
similarity index 99%
rename from tests/unit-tests/security/test-validator-config.cpp
rename to tests/unit-tests/security/validator-config.t.cpp
index b6a3102..4171554 100644
--- a/tests/unit-tests/security/test-validator-config.cpp
+++ b/tests/unit-tests/security/validator-config.t.cpp
@@ -37,7 +37,7 @@
 namespace ndn {
 namespace tests {
 
-BOOST_AUTO_TEST_SUITE(TestValidatorConfig)
+BOOST_AUTO_TEST_SUITE(SecurityValidatorConfig)
 
 BOOST_FIXTURE_TEST_CASE(NameFilter, security::IdentityManagementFixture)
 {
diff --git a/tests/unit-tests/security/test-validator.cpp b/tests/unit-tests/security/validator.t.cpp
similarity index 97%
rename from tests/unit-tests/security/test-validator.cpp
rename to tests/unit-tests/security/validator.t.cpp
index 46bc6a3..e72171e 100644
--- a/tests/unit-tests/security/test-validator.cpp
+++ b/tests/unit-tests/security/validator.t.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /**
- * Copyright (c) 2013-2014 Regents of the University of California.
+ * Copyright (c) 2013-2015 Regents of the University of California.
  *
  * This file is part of ndn-cxx library (NDN C++ library with eXperimental eXtensions).
  *
@@ -26,10 +26,11 @@
 #include "boost-test.hpp"
 
 namespace ndn {
+namespace tests {
 
 using std::string;
 
-BOOST_FIXTURE_TEST_SUITE(SecurityTestValidator, security::IdentityManagementFixture)
+BOOST_FIXTURE_TEST_SUITE(SecurityValidator, security::IdentityManagementFixture)
 
 void
 onValidated(const shared_ptr<const Data>& data)
@@ -219,4 +220,5 @@
 
 BOOST_AUTO_TEST_SUITE_END()
 
+} // namespace tests
 } // namespace ndn
