diff --git a/tests/unit/daemon/rrset-factory.cpp b/tests/unit/daemon/rrset-factory.cpp
index 5e71a47..625679e 100644
--- a/tests/unit/daemon/rrset-factory.cpp
+++ b/tests/unit/daemon/rrset-factory.cpp
@@ -106,7 +106,7 @@
 
   // rf without checkZoneKey: throw.
   ndn::DelegationList delegations;
-  BOOST_CHECK_THROW(rf.generateNsRrset(label, type, version, ttl, delegations),
+  BOOST_CHECK_THROW(rf.generateNsRrset(label, version, ttl, delegations),
                     ndns::RrsetFactory::Error);
   rf.checkZoneKey();
 
@@ -115,7 +115,7 @@
     delegations.insert(i, name);
   }
 
-  Rrset rrset = rf.generateNsRrset(label, type, version, ttl, delegations);
+  Rrset rrset = rf.generateNsRrset(label, version, ttl, delegations);
 
   BOOST_CHECK_EQUAL(rrset.getId(), 0);
   BOOST_REQUIRE(rrset.getZone() != nullptr);
@@ -150,17 +150,17 @@
   RrsetFactory rf(TEST_DATABASE2, m_zoneName, m_keyChain, m_certName);
 
   // rf without checkZoneKey: throw.
-  BOOST_CHECK_THROW(rf.generateTxtRrset(label, type, version, ttl, txts),
+  BOOST_CHECK_THROW(rf.generateTxtRrset(label, version, ttl, txts),
                     ndns::RrsetFactory::Error);
   rf.checkZoneKey();
-  BOOST_CHECK_NO_THROW(rf.generateTxtRrset(label, type, version, ttl, txts));
+  BOOST_CHECK_NO_THROW(rf.generateTxtRrset(label, version, ttl, txts));
   rf.checkZoneKey();
 
   for (int i = 1; i <= 4; i++) {
     txts.push_back(std::to_string(i));
   }
 
-  Rrset rrset = rf.generateTxtRrset(label, type, version, ttl, txts);
+  Rrset rrset = rf.generateTxtRrset(label, version, ttl, txts);
 
   BOOST_CHECK_EQUAL(rrset.getId(), 0);
   BOOST_CHECK_EQUAL(*rrset.getZone(), zone);
diff --git a/tests/unit/database-test-data.cpp b/tests/unit/database-test-data.cpp
index 93815ec..ea55948 100644
--- a/tests/unit/database-test-data.cpp
+++ b/tests/unit/database-test-data.cpp
@@ -96,7 +96,7 @@
     const name::Component version = name::Component::fromVersion(100 + 1000 * certificateIndex);
     name::Component qType(label::NDNS_ITERATIVE_QUERY);
     NdnsContentType contentType = NDNS_RESP;
-    if (type == label::CERT_RR_TYPE) {
+    if (type == label::APPCERT_RR_TYPE) {
       contentType = NDNS_KEY;
     }
     else if (type == label::NS_RR_TYPE) {
@@ -139,18 +139,18 @@
   if (type == label::NS_RR_TYPE) {
     ndn::DelegationList ds;
     ds.insert(1, "xx");
-    rrset = rf.generateNsRrset(label, type, version.toVersion(), ttl, ds);
+    rrset = rf.generateNsRrset(label, version.toVersion(), ttl, ds);
     if (contentType != NDNS_AUTH) {
       // do not add AUTH packet to link
       m_links.push_back(Link(rrset.getData()));
     }
   }
   else if (type == label::TXT_RR_TYPE) {
-    rrset = rf.generateTxtRrset(label, type, version.toVersion(), ttl,
+    rrset = rf.generateTxtRrset(label, version.toVersion(), ttl,
                                 std::vector<std::string>());
   }
-  else if (type == label::CERT_RR_TYPE) {
-    rrset = rf.generateCertRrset(label, type, version.toVersion(), ttl,
+  else if (type == label::APPCERT_RR_TYPE) {
+    rrset = rf.generateCertRrset(label, version.toVersion(), ttl,
                                  m_cert);
   }
 
diff --git a/tests/unit/mgmt/management-tool.cpp b/tests/unit/mgmt/management-tool.cpp
index 7c9e726..72e079d 100644
--- a/tests/unit/mgmt/management-tool.cpp
+++ b/tests/unit/mgmt/management-tool.cpp
@@ -559,13 +559,13 @@
 
   RrsetFactory rf(TEST_DATABASE, zoneName, m_keyChain, DEFAULT_CERT);
   rf.checkZoneKey();
-  Rrset rrset1 = rf.generateNsRrset("/l1", label::NS_RR_TYPE, 7654, ttl2, DelegationList());
+  Rrset rrset1 = rf.generateNsRrset("/l1", 7654, ttl2, DelegationList());
 
   BOOST_CHECK_NO_THROW(m_tool.addRrset(rrset1));
   Rrset rrset2 = findRrSet(zone, "/l1", label::NS_RR_TYPE);
   BOOST_CHECK_EQUAL(rrset1, rrset2);
 
-  Rrset rrset3 = rf.generateNsRrset("/l1/l2/l3", label::NS_RR_TYPE, 7654, ttl2, DelegationList());
+  Rrset rrset3 = rf.generateNsRrset("/l1/l2/l3", 7654, ttl2, DelegationList());
   BOOST_CHECK_THROW(m_tool.addRrset(rrset3), ndns::ManagementTool::Error);
 }
 
@@ -592,7 +592,7 @@
 
   Name labelName("/l1/l2/l3");
 
-  Rrset rrset1 = rf.generateNsRrset(labelName, label::NS_RR_TYPE, 7654, ttl, DelegationList());
+  Rrset rrset1 = rf.generateNsRrset(labelName, 7654, ttl, DelegationList());
 
   //add NS NDNS_AUTH and check user-defined ttl
   BOOST_CHECK_NO_THROW(m_tool.addMultiLevelLabelRrset(rrset1, rf, ttl));
@@ -603,7 +603,7 @@
   checkRrset("/l1/l2", label::NS_RR_TYPE, ndns::NDNS_AUTH);
 
   // insert a same-name rrset with TXT type
-  Rrset txtRr = rf.generateTxtRrset("/l1/l2/l3", label::TXT_RR_TYPE, 7654, ttl, std::vector<std::string>());
+  Rrset txtRr = rf.generateTxtRrset("/l1/l2/l3", 7654, ttl, std::vector<std::string>());
   BOOST_CHECK_NO_THROW(m_tool.addMultiLevelLabelRrset(txtRr, rf, ttl));
 
   checkRrset("/l1", label::NS_RR_TYPE, ndns::NDNS_AUTH);
@@ -613,28 +613,28 @@
   checkRrset("/l1/l2/l3", label::NS_RR_TYPE, ndns::NDNS_LINK);
 
   // insert a shorter NS, when there are longer NS or TXT
-  Rrset shorterNs = rf.generateNsRrset("/l1/l2", label::NS_RR_TYPE, 7654, ttl, DelegationList());
+  Rrset shorterNs = rf.generateNsRrset("/l1/l2", 7654, ttl, DelegationList());
   BOOST_CHECK_THROW(m_tool.addMultiLevelLabelRrset(shorterNs, rf, ttl),
                     ndns::ManagementTool::Error);
 
   // insert a longer NS, when there is already a shorter NS
-  Rrset longerNs = rf.generateNsRrset("/l1/l2/l3/l4", label::NS_RR_TYPE, 7654, ttl, DelegationList());
+  Rrset longerNs = rf.generateNsRrset("/l1/l2/l3/l4", 7654, ttl, DelegationList());
   BOOST_CHECK_THROW(m_tool.addMultiLevelLabelRrset(longerNs, rf, ttl),
                     ndns::ManagementTool::Error);
 
   // insert a smaller TXT, when there are longer NS and TXT
-  Rrset shorterTxt = rf.generateTxtRrset("/l1/l2", label::TXT_RR_TYPE, 7654, ttl, std::vector<std::string>());
+  Rrset shorterTxt = rf.generateTxtRrset("/l1/l2", 7654, ttl, std::vector<std::string>());
   BOOST_CHECK_NO_THROW(m_tool.addMultiLevelLabelRrset(shorterTxt, rf, ttl));
 
   // insert a smaller NS, when there is long TXT
-  Rrset longTxt = rf.generateTxtRrset("/k1/k2/k3", label::TXT_RR_TYPE, 7654, ttl, std::vector<std::string>());
-  Rrset smallerNs = rf.generateNsRrset("/k1/k2", label::NS_RR_TYPE, 7654, ttl, DelegationList());
+  Rrset longTxt = rf.generateTxtRrset("/k1/k2/k3", 7654, ttl, std::vector<std::string>());
+  Rrset smallerNs = rf.generateNsRrset("/k1/k2", 7654, ttl, DelegationList());
   BOOST_CHECK_NO_THROW(m_tool.addMultiLevelLabelRrset(longTxt, rf, ttl));
   BOOST_CHECK_THROW(m_tool.addMultiLevelLabelRrset(smallerNs, rf, ttl),
                     ndns::ManagementTool::Error);
 
   // inserting a longer TXT, when there is shoter TXT
-  Rrset longerTxt = rf.generateTxtRrset("/k1/k2/k3/k4", label::TXT_RR_TYPE, 7654, ttl, std::vector<std::string>());
+  Rrset longerTxt = rf.generateTxtRrset("/k1/k2/k3/k4", 7654, ttl, std::vector<std::string>());
   BOOST_CHECK_NO_THROW(m_tool.addMultiLevelLabelRrset(longerTxt, rf, ttl));
 }
 
@@ -735,21 +735,21 @@
   RrsetFactory rf(TEST_DATABASE, zoneName, m_keyChain, DEFAULT_CERT);
   rf.checkZoneKey();
 
-  Rrset rrset1 = rf.generateTxtRrset(label, label::NS_RR_TYPE, version, ttl, {});
+  Rrset rrset1 = rf.generateTxtRrset(label, version, ttl, {});
 
   m_tool.addRrset(rrset1);
   // throw error when adding duplicated rrset with the same version
   BOOST_CHECK_THROW(m_tool.addRrset(rrset1),
                     ndns::ManagementTool::Error);
   version--;
-  Rrset rrset2 = rf.generateTxtRrset(label, label::NS_RR_TYPE, version, ttl, {});
+  Rrset rrset2 = rf.generateTxtRrset(label, version, ttl, {});
   // throw error when adding duplicated rrset with older version
   BOOST_CHECK_THROW(m_tool.addRrset(rrset2),
                     ndns::ManagementTool::Error);
 
   version++;
   version++;
-  Rrset rrset3 = rf.generateTxtRrset(label, label::NS_RR_TYPE, version, ttl, {});
+  Rrset rrset3 = rf.generateTxtRrset(label, version, ttl, {});
   BOOST_CHECK_NO_THROW(m_tool.addRrset(rrset3));
 
   Zone zone(zoneName);
@@ -757,7 +757,7 @@
   Rrset rrset;
   rrset.setZone(&zone);
   rrset.setLabel(label);
-  rrset.setType(label::NS_RR_TYPE);
+  rrset.setType(label::TXT_RR_TYPE);
   m_dbMgr.find(rrset);
 
   BOOST_CHECK_EQUAL(rrset.getVersion(), name::Component::fromVersion(version));
@@ -838,11 +838,11 @@
   del.preference = 10;
   del.name = Name("/get/link");
   DelegationList ds = {del};
-  Rrset rrset1 = rf.generateNsRrset("/label1", label::NS_RR_TYPE, 100, DEFAULT_RR_TTL, ds);
+  Rrset rrset1 = rf.generateNsRrset("/label1", 100, DEFAULT_RR_TTL, ds);
   m_tool.addRrset(rrset1);
 
   // Add NS with NDNS_AUTH
-  Rrset rrset2 = rf.generateAuthRrset("/label2", label::NS_RR_TYPE, 100000, DEFAULT_RR_TTL);
+  Rrset rrset2 = rf.generateAuthRrset("/label2", 100000, DEFAULT_RR_TTL);
   m_tool.addRrset(rrset2);
 
   // Add TXT from file
@@ -863,7 +863,7 @@
   m_tool.addRrsetFromFile("/ndns-test", output);
 
   // Add TXT in normal way
-  Rrset rrset3 = rf.generateTxtRrset("/label3", label::TXT_RR_TYPE, 3333, DEFAULT_RR_TTL, {"Hello", "World"});
+  Rrset rrset3 = rf.generateTxtRrset("/label3", 3333, DEFAULT_RR_TTL, {"Hello", "World"});
   m_tool.addRrset(rrset3);
 
   m_tool.listZone("/ndns-test", std::cout, true);
@@ -920,7 +920,7 @@
   m_tool.createZone(zoneName, ROOT_ZONE, time::seconds(1), time::days(1), otherKsk, otherDsk);
   RrsetFactory rf(TEST_DATABASE, zoneName, m_keyChain, DEFAULT_CERT);
   rf.checkZoneKey();
-  Rrset rrset1 = rf.generateTxtRrset("/label", label::TXT_RR_TYPE, 100, DEFAULT_RR_TTL, {"Value1", "Value2"});
+  Rrset rrset1 = rf.generateTxtRrset("/label", 100, DEFAULT_RR_TTL, {"Value1", "Value2"});
 
   m_tool.addRrset(rrset1);
 
@@ -947,12 +947,12 @@
   RrsetFactory rf(TEST_DATABASE, zoneName, m_keyChain, DEFAULT_CERT);
   rf.checkZoneKey();
 
-  Rrset rrset1 = rf.generateTxtRrset("/label", label::NS_RR_TYPE, 100, DEFAULT_RR_TTL, {});
+  Rrset rrset1 = rf.generateTxtRrset("/label", 100, DEFAULT_RR_TTL, {});
 
   BOOST_CHECK_NO_THROW(m_tool.addRrset(rrset1));
 
   Zone zone(zoneName);
-  BOOST_CHECK_NO_THROW(findRrSet(zone, "/label", label::NS_RR_TYPE));
+  BOOST_CHECK_NO_THROW(findRrSet(zone, "/label", label::TXT_RR_TYPE));
 
   BOOST_CHECK_NO_THROW(m_tool.removeRrSet(zoneName, "/label", label::NS_RR_TYPE));
 
