diff --git a/tests/unit-tests/ca-memory.t.cpp b/tests/unit-tests/ca-memory.t.cpp
index 3a9c2c4..c64d8f7 100644
--- a/tests/unit-tests/ca-memory.t.cpp
+++ b/tests/unit-tests/ca-memory.t.cpp
@@ -89,7 +89,7 @@
   auto result = storage.getRequest("123");
   BOOST_CHECK_EQUAL(request1.m_cert, result.m_cert);
   BOOST_CHECK_EQUAL(request1.m_status, result.m_status);
-  BOOST_CHECK_EQUAL(request1.m_caName, result.m_caName);
+  BOOST_CHECK_EQUAL(request1.m_caPrefix, result.m_caPrefix);
 
   JsonSection json;
   json.put("code", "1234");
@@ -101,7 +101,7 @@
   result = storage.getRequest("123");
   BOOST_CHECK_EQUAL(request2.m_cert, result.m_cert);
   BOOST_CHECK_EQUAL(request2.m_status, result.m_status);
-  BOOST_CHECK_EQUAL(request2.m_caName, result.m_caName);
+  BOOST_CHECK_EQUAL(request2.m_caPrefix, result.m_caPrefix);
 
   auto identity2 = addIdentity(Name("/ndn/site2"));
   auto key2 = identity2.getDefaultKey();
diff --git a/tests/unit-tests/ca-module.t.cpp b/tests/unit-tests/ca-module.t.cpp
index 13abf4b..25a5322 100644
--- a/tests/unit-tests/ca-module.t.cpp
+++ b/tests/unit-tests/ca-module.t.cpp
@@ -111,7 +111,7 @@
       BOOST_CHECK(security::verifySignature(response, cert));
       auto contentJson = ClientModule::getJsonFromData(response);
       auto caItem = ClientConfig::extractCaItem(contentJson);
-      BOOST_CHECK_EQUAL(caItem.m_caName, "/ndn");
+      BOOST_CHECK_EQUAL(caItem.m_caPrefix, "/ndn");
       BOOST_CHECK_EQUAL(caItem.m_probe, "");
       BOOST_CHECK_EQUAL(caItem.m_anchor.wireEncode(), cert.wireEncode());
       BOOST_CHECK_EQUAL(caItem.m_caInfo, "ndn testbed ca");
@@ -163,7 +163,7 @@
 
   ClientModule client(m_keyChain);
   ClientCaItem item;
-  item.m_caName = Name("/ndn");
+  item.m_caPrefix = Name("/ndn");
   item.m_anchor = cert;
   client.getClientConf().m_caItems.push_back(item);
 
@@ -204,7 +204,7 @@
 
   ClientModule client(m_keyChain);
   ClientCaItem item;
-  item.m_caName = Name("/ndn");
+  item.m_caPrefix = Name("/ndn");
   item.m_anchor = cert;
   client.getClientConf().m_caItems.push_back(item);
   auto current_tp = time::system_clock::now();
@@ -238,12 +238,12 @@
 
   ClientModule client(m_keyChain);
   ClientCaItem item;
-  item.m_caName = Name("/ndn");
+  item.m_caPrefix = Name("/ndn");
   item.m_anchor = cert;
   client.getClientConf().m_caItems.push_back(item);
 
   auto data = make_shared<Data>(Name("/ndn/CA/PROBE/123"));
-  m_keyChain.sign(*data, signingByIdentity(ca.m_config.m_caName));
+  m_keyChain.sign(*data, signingByIdentity(ca.m_config.m_caPrefix));
 
   auto interest = client.generateNewInterest(time::system_clock::now(),
                                              time::system_clock::now() + time::days(10),
@@ -273,7 +273,7 @@
   // generate NEW Interest
   ClientModule client(m_keyChain);
   ClientCaItem item;
-  item.m_caName = Name("/ndn");
+  item.m_caPrefix = Name("/ndn");
   item.m_anchor = cert;
   client.getClientConf().m_caItems.push_back(item);
   auto newInterest = client.generateNewInterest(time::system_clock::now(),
diff --git a/tests/unit-tests/ca-sqlite.t.cpp b/tests/unit-tests/ca-sqlite.t.cpp
index d78bb46..f47bf9d 100644
--- a/tests/unit-tests/ca-sqlite.t.cpp
+++ b/tests/unit-tests/ca-sqlite.t.cpp
@@ -89,7 +89,7 @@
   auto result = storage.getRequest("123");
   BOOST_CHECK_EQUAL(request1.m_cert, result.m_cert);
   BOOST_CHECK_EQUAL(request1.m_status, result.m_status);
-  BOOST_CHECK_EQUAL(request1.m_caName, result.m_caName);
+  BOOST_CHECK_EQUAL(request1.m_caPrefix, result.m_caPrefix);
 
   // update operation
   JsonSection json;
@@ -100,7 +100,7 @@
   result = storage.getRequest("123");
   BOOST_CHECK_EQUAL(request2.m_cert, result.m_cert);
   BOOST_CHECK_EQUAL(request2.m_status, result.m_status);
-  BOOST_CHECK_EQUAL(request2.m_caName, result.m_caName);
+  BOOST_CHECK_EQUAL(request2.m_caPrefix, result.m_caPrefix);
 
   auto identity2 = addIdentity(Name("/ndn/site2"));
   auto key2 = identity2.getDefaultKey();
diff --git a/tests/unit-tests/client-config.t.cpp b/tests/unit-tests/client-config.t.cpp
index 0f8aa95..8aabcab 100644
--- a/tests/unit-tests/client-config.t.cpp
+++ b/tests/unit-tests/client-config.t.cpp
@@ -35,7 +35,7 @@
   BOOST_CHECK_EQUAL(config.m_caItems.size(), 2);
 
   const auto& item = config.m_caItems.front();
-  BOOST_CHECK_EQUAL(item.m_caName, "/ndn/edu/ucla");
+  BOOST_CHECK_EQUAL(item.m_caPrefix, "/ndn/edu/ucla");
   BOOST_CHECK_EQUAL(item.m_caInfo, "UCLA's ceritificate authority, located in BH4805.");
   BOOST_CHECK_EQUAL(item.m_probe, "email");
   BOOST_CHECK_EQUAL(item.m_anchor.getName(),
@@ -68,19 +68,19 @@
   config.load("tests/unit-tests/client.conf.test");
 
   ClientCaItem item;
-  item.m_caName = Name("/test");
+  item.m_caPrefix = Name("/test");
   item.m_caInfo = "test";
   item.m_probe = "test";
 
   config.m_caItems.push_back(item);
   BOOST_CHECK_EQUAL(config.m_caItems.size(), 3);
   auto lastItem = config.m_caItems.back();
-  BOOST_CHECK_EQUAL(lastItem.m_caName, "/test");
+  BOOST_CHECK_EQUAL(lastItem.m_caPrefix, "/test");
 
   config.removeCaItem(Name("/test"));
   BOOST_CHECK_EQUAL(config.m_caItems.size(), 2);
   lastItem = config.m_caItems.back();
-  BOOST_CHECK_EQUAL(lastItem.m_caName, "/ndn/edu/ucla/zhiyi");
+  BOOST_CHECK_EQUAL(lastItem.m_caPrefix, "/ndn/edu/ucla/zhiyi");
 }
 
 BOOST_AUTO_TEST_SUITE_END() // TestClientConfig
diff --git a/tests/unit-tests/client-module.t.cpp b/tests/unit-tests/client-module.t.cpp
index 5da0330..638820f 100644
--- a/tests/unit-tests/client-module.t.cpp
+++ b/tests/unit-tests/client-module.t.cpp
@@ -53,7 +53,7 @@
 
   ClientCaItem item;
   item.m_probe = "email:uid:name";
-  item.m_caName = Name("/site");
+  item.m_caPrefix = Name("/site");
   item.m_anchor = cert;
   client.getClientConf().m_caItems.push_back(item);
 
@@ -76,7 +76,7 @@
 
   ClientCaItem item;
   item.m_probe = "email:uid:name";
-  item.m_caName = Name("/site");
+  item.m_caPrefix = Name("/site");
   item.m_anchor = cert;
   client.getClientConf().m_caItems.push_back(item);
 
