diff --git a/tests/unit-tests/ca-module.t.cpp b/tests/unit-tests/ca-module.t.cpp
index 34e2721..45600b8 100644
--- a/tests/unit-tests/ca-module.t.cpp
+++ b/tests/unit-tests/ca-module.t.cpp
@@ -61,8 +61,8 @@
 
   util::DummyClientFace face(m_io, {true, true});
   CaModule ca(face, m_keyChain, "tests/unit-tests/ca.conf.test");
-  ca.setProbeHandler([&] (const std::string& probeInfo) {
-      return probeInfo + "example";
+  ca.setProbeHandler([&] (const JsonSection& probeInfo) {
+      return "example";
     });
   advanceClocks(time::milliseconds(20), 60);
 
@@ -77,7 +77,7 @@
       count++;
       BOOST_CHECK(security::verifySignature(response, cert));
       auto contentJson = ClientModule::getJsonFromData(response);
-      BOOST_CHECK_EQUAL(contentJson.get<std::string>(JSON_CA_NAME), "/ndn/zhiyiexample");
+      BOOST_CHECK_EQUAL(contentJson.get<std::string>(JSON_CA_NAME), "/ndn/example");
     });
   face.receive(interest);
 
@@ -93,8 +93,8 @@
 
   util::DummyClientFace face(m_io, {true, true});
   CaModule ca(face, m_keyChain, "tests/unit-tests/ca.conf.test");
-  ca.setProbeHandler([&] (const std::string& probeInfo) {
-      return probeInfo + "example";
+  ca.setProbeHandler([&] (const JsonSection& probeInfo) {
+      return "example";
     });
   advanceClocks(time::milliseconds(20), 60);
 
diff --git a/tests/unit-tests/client-module.t.cpp b/tests/unit-tests/client-module.t.cpp
index da08d9b..1da13ce 100644
--- a/tests/unit-tests/client-module.t.cpp
+++ b/tests/unit-tests/client-module.t.cpp
@@ -50,16 +50,38 @@
   auto cert = key.getDefaultCertificate();
 
   ClientCaItem item;
+  item.m_probe = "email:uid:name";
   item.m_caName = Name("/site");
   item.m_anchor = cert;
   client.getClientConf().m_caItems.push_back(item);
 
-  auto firstInterest = client.generateProbeInterest(item, "zhiyi@cs.ucla.edu");
+  auto firstInterest = client.generateProbeInterest(item, "zhiyi@cs.ucla.edu:987654321:Zhiyi Zhang");
   BOOST_CHECK_EQUAL(firstInterest->getName().toUri(), "/site/CA/_PROBE");
-  BOOST_CHECK_EQUAL(CaModule::jsonFromBlock(firstInterest->getApplicationParameters()).get<std::string>(JSON_CLIENT_PROBE_INFO),
+  BOOST_CHECK_EQUAL(CaModule::jsonFromBlock(firstInterest->getApplicationParameters()).get<std::string>("email"),
                     "zhiyi@cs.ucla.edu");
 }
 
+BOOST_AUTO_TEST_CASE(genProbeRequestJson)
+{
+  ClientModule client(m_keyChain);
+  client.getClientConf().load("tests/unit-tests/client.conf.test");
+
+  auto identity = addIdentity(Name("/site"));
+  auto key = identity.getDefaultKey();
+  auto cert = key.getDefaultCertificate();
+
+  ClientCaItem item;
+  item.m_probe = "email:uid:name";
+  item.m_caName = Name("/site");
+  item.m_anchor = cert;
+  client.getClientConf().m_caItems.push_back(item);
+
+  auto interestPacket = client.genProbeRequestJson(item, "yufeng@ucla.edu:123456789:Yufeng Zhang");
+  BOOST_CHECK_EQUAL(interestPacket.get("email", ""), "yufeng@ucla.edu");
+  BOOST_CHECK_EQUAL(interestPacket.get("uid", ""), "123456789");
+  BOOST_CHECK_EQUAL(interestPacket.get("name", ""), "Yufeng Zhang");
+}
+
 BOOST_AUTO_TEST_SUITE_END() // TestClientModule
 
 } // namespace tests
