diff --git a/tests/unit/clients/iterative-query-controller.t.cpp b/tests/unit/clients/iterative-query-controller.t.cpp
index f8bb7db..6942c7b 100644
--- a/tests/unit/clients/iterative-query-controller.t.cpp
+++ b/tests/unit/clients/iterative-query-controller.t.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2014-2022, Regents of the University of California.
+ * Copyright (c) 2014-2023, Regents of the University of California.
  *
  * This file is part of NDNS (Named Data Networking Domain Name Service).
  * See AUTHORS.md for complete list of NDNS authors and contributors.
@@ -64,8 +64,8 @@
 
 public:
   boost::asio::io_service io;
-  ndn::util::DummyClientFace producerFace;
-  ndn::util::DummyClientFace consumerFace;
+  ndn::DummyClientFace producerFace;
+  ndn::DummyClientFace consumerFace;
 
   unique_ptr<security::Validator> validator;
   ndns::NameServer top;
diff --git a/tests/unit/daemon/name-server.t.cpp b/tests/unit/daemon/name-server.t.cpp
index 35555dd..59c9197 100644
--- a/tests/unit/daemon/name-server.t.cpp
+++ b/tests/unit/daemon/name-server.t.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2014-2022, Regents of the University of California.
+ * Copyright (c) 2014-2023, Regents of the University of California.
  *
  * This file is part of NDNS (Named Data Networking Domain Name Service).
  * See AUTHORS.md for complete list of NDNS authors and contributors.
@@ -55,7 +55,7 @@
   }
 
 public:
-  ndn::util::DummyClientFace face;
+  ndn::DummyClientFace face;
   const Name& zone;
   unique_ptr<security::Validator> validator;
   ndns::NameServer server;
@@ -353,8 +353,8 @@
 
 public:
   boost::asio::io_service io;
-  ndn::util::DummyClientFace face;
-  ndn::util::DummyClientFace validatorFace;
+  ndn::DummyClientFace face;
+  ndn::DummyClientFace validatorFace;
   const Name& zone;
   unique_ptr<security::Validator> validator;
   ndns::NameServer server;
diff --git a/tests/unit/validator/certificate-fetcher-ndns-app-cert.t.cpp b/tests/unit/validator/certificate-fetcher-ndns-app-cert.t.cpp
index ae41eeb..838532f 100644
--- a/tests/unit/validator/certificate-fetcher-ndns-app-cert.t.cpp
+++ b/tests/unit/validator/certificate-fetcher-ndns-app-cert.t.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2014-2020, Regents of the University of California.
+ * Copyright (c) 2014-2023, Regents of the University of California.
  *
  * This file is part of NDNS (Named Data Networking Domain Name Service).
  * See AUTHORS.md for complete list of NDNS authors and contributors.
@@ -59,8 +59,8 @@
                                                         UNIT_TESTS_TMPDIR "/validator.conf");
     // initialize all servers
     auto addServer = [this, &serverValidator] (const Name& zoneName) {
-      m_serverFaces.push_back(make_unique<util::DummyClientFace>(m_io, m_keyChain,
-                                                                 util::DummyClientFace::Options{true, true}));
+      m_serverFaces.push_back(make_unique<DummyClientFace>(m_io, m_keyChain,
+                                                           DummyClientFace::Options{true, true}));
       m_serverFaces.back()->linkTo(m_validatorFace);
 
       // validator is used only for check update signature
@@ -106,9 +106,9 @@
   }
 
 public:
-  util::DummyClientFace m_validatorFace;
+  DummyClientFace m_validatorFace;
   unique_ptr<security::Validator> m_validator;
-  std::vector<unique_ptr<util::DummyClientFace>> m_serverFaces;
+  std::vector<unique_ptr<DummyClientFace>> m_serverFaces;
   std::vector<shared_ptr<ndns::NameServer>> m_servers;
   Data m_appCertSignedData;
 };
diff --git a/tests/unit/validator/validator.t.cpp b/tests/unit/validator/validator.t.cpp
index 0161125..4bf703d 100644
--- a/tests/unit/validator/validator.t.cpp
+++ b/tests/unit/validator/validator.t.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2014-2020, Regents of the University of California.
+ * Copyright (c) 2014-2023, Regents of the University of California.
  *
  * This file is part of NDNS (Named Data Networking Domain Name Service).
  * See AUTHORS.md for complete list of NDNS authors and contributors.
@@ -45,8 +45,8 @@
     // check how does name-server test do
     // initialize all servers
     auto addServer = [this] (const Name& zoneName) {
-      m_serverFaces.push_back(make_unique<util::DummyClientFace>(m_io, m_keyChain,
-                                                                 util::DummyClientFace::Options{true, true}));
+      m_serverFaces.push_back(make_unique<DummyClientFace>(m_io, m_keyChain,
+                                                           DummyClientFace::Options{true, true}));
       m_serverFaces.back()->linkTo(m_validatorFace);
 
       // validator is used only for check update signature
@@ -70,9 +70,9 @@
   }
 
 public:
-  util::DummyClientFace m_validatorFace;
+  DummyClientFace m_validatorFace;
   unique_ptr<security::Validator> m_validator;
-  std::vector<unique_ptr<util::DummyClientFace>> m_serverFaces;
+  std::vector<unique_ptr<DummyClientFace>> m_serverFaces;
   std::vector<shared_ptr<ndns::NameServer>> m_servers;
   Name m_ndnsimCert;
   Name m_randomCert;
@@ -81,7 +81,7 @@
 BOOST_FIXTURE_TEST_CASE(Basic, ValidatorTestFixture)
 {
   SignatureInfo info;
-  info.setValidityPeriod(security::ValidityPeriod(time::system_clock::TimePoint::min(),
+  info.setValidityPeriod(security::ValidityPeriod(time::system_clock::time_point::min(),
                                                   time::system_clock::now() + time::days(10)));
 
   // case1: record of testId3, signed by its dsk, should be successful validated.
