diff --git a/tests/certstore.cpp b/tests/certstore.cpp
index 7d6b75f..43967c6 100644
--- a/tests/certstore.cpp
+++ b/tests/certstore.cpp
@@ -25,7 +25,7 @@
 #include "test_runner.h"
 #include "certstore.h"
 
-namespace jami {
+namespace dhtnet {
 namespace test {
 
 class CertStoreTest : public CppUnit::TestFixture
@@ -85,26 +85,26 @@
 
     // Test certificate status
     auto certAllowed = aliceAccount->accountManager()->getCertificatesByStatus(
-        jami::tls::TrustStore::PermissionStatus::ALLOWED);
+        dhtnet::tls::TrustStore::PermissionStatus::ALLOWED);
     CPPUNIT_ASSERT(
         std::find_if(certAllowed.begin(), certAllowed.end(), [&](auto v) { return v == id; })
         == certAllowed.end());
     CPPUNIT_ASSERT(aliceAccount->accountManager()->getCertificateStatus(id)
-                   == jami::tls::TrustStore::PermissionStatus::UNDEFINED);
-    aliceAccount->setCertificateStatus(ca.second, jami::tls::TrustStore::PermissionStatus::ALLOWED);
+                   == dhtnet::tls::TrustStore::PermissionStatus::UNDEFINED);
+    aliceAccount->setCertificateStatus(ca.second, dhtnet::tls::TrustStore::PermissionStatus::ALLOWED);
     certAllowed = aliceAccount->accountManager()->getCertificatesByStatus(
-        jami::tls::TrustStore::PermissionStatus::ALLOWED);
+        dhtnet::tls::TrustStore::PermissionStatus::ALLOWED);
     CPPUNIT_ASSERT(
         std::find_if(certAllowed.begin(), certAllowed.end(), [&](auto v) { return v == id; })
         != certAllowed.end());
     CPPUNIT_ASSERT(aliceAccount->accountManager()->getCertificateStatus(id)
-                   == jami::tls::TrustStore::PermissionStatus::ALLOWED);
-    aliceAccount->setCertificateStatus(ca.second, jami::tls::TrustStore::PermissionStatus::UNDEFINED);
+                   == dhtnet::tls::TrustStore::PermissionStatus::ALLOWED);
+    aliceAccount->setCertificateStatus(ca.second, dhtnet::tls::TrustStore::PermissionStatus::UNDEFINED);
     CPPUNIT_ASSERT(aliceAccount->accountManager()->getCertificateStatus(id)
-                   == jami::tls::TrustStore::PermissionStatus::UNDEFINED);
-    aliceAccount->setCertificateStatus(ca.second, jami::tls::TrustStore::PermissionStatus::ALLOWED);
+                   == dhtnet::tls::TrustStore::PermissionStatus::UNDEFINED);
+    aliceAccount->setCertificateStatus(ca.second, dhtnet::tls::TrustStore::PermissionStatus::ALLOWED);
     CPPUNIT_ASSERT(aliceAccount->accountManager()->getCertificateStatus(id)
-                   == jami::tls::TrustStore::PermissionStatus::ALLOWED);
+                   == dhtnet::tls::TrustStore::PermissionStatus::ALLOWED);
 
     // Test getPinnedCertificates
     pinned = aliceAccount->certStore().getPinnedCertificates();
@@ -126,44 +126,44 @@
     CPPUNIT_ASSERT(aliceAccount->accountManager()->isAllowed(*device.second));
 
     // Ban device
-    aliceAccount->setCertificateStatus(device.second, jami::tls::TrustStore::PermissionStatus::BANNED);
+    aliceAccount->setCertificateStatus(device.second, dhtnet::tls::TrustStore::PermissionStatus::BANNED);
     CPPUNIT_ASSERT(aliceAccount->accountManager()->getCertificateStatus(device.second->getId().toString())
-                   == jami::tls::TrustStore::PermissionStatus::BANNED);
+                   == dhtnet::tls::TrustStore::PermissionStatus::BANNED);
     CPPUNIT_ASSERT(aliceAccount->accountManager()->getCertificateStatus(id)
-                   == jami::tls::TrustStore::PermissionStatus::ALLOWED);
+                   == dhtnet::tls::TrustStore::PermissionStatus::ALLOWED);
 
     CPPUNIT_ASSERT(aliceAccount->accountManager()->isAllowed(*ca.second));
     CPPUNIT_ASSERT(aliceAccount->accountManager()->isAllowed(*account.second));
     CPPUNIT_ASSERT(not aliceAccount->accountManager()->isAllowed(*device.second));
 
     // Ban account
-    aliceAccount->setCertificateStatus(account.second, jami::tls::TrustStore::PermissionStatus::BANNED);
+    aliceAccount->setCertificateStatus(account.second, dhtnet::tls::TrustStore::PermissionStatus::BANNED);
     CPPUNIT_ASSERT(aliceAccount->accountManager()->getCertificateStatus(account.second->getId().toString())
-                   == jami::tls::TrustStore::PermissionStatus::BANNED);
+                   == dhtnet::tls::TrustStore::PermissionStatus::BANNED);
     CPPUNIT_ASSERT(aliceAccount->accountManager()->isAllowed(*ca.second));
     CPPUNIT_ASSERT(not aliceAccount->accountManager()->isAllowed(*account.second));
     CPPUNIT_ASSERT(not aliceAccount->accountManager()->isAllowed(*device2.second));
 
     // Unban account
     aliceAccount->setCertificateStatus(account.second,
-                                    jami::tls::TrustStore::PermissionStatus::ALLOWED);
+                                    dhtnet::tls::TrustStore::PermissionStatus::ALLOWED);
     CPPUNIT_ASSERT(aliceAccount->accountManager()->getCertificateStatus(account.second->getId().toString())
-                   == jami::tls::TrustStore::PermissionStatus::ALLOWED);
+                   == dhtnet::tls::TrustStore::PermissionStatus::ALLOWED);
     CPPUNIT_ASSERT(aliceAccount->accountManager()->isAllowed(*ca.second));
     CPPUNIT_ASSERT(aliceAccount->accountManager()->isAllowed(*account.second));
     CPPUNIT_ASSERT(aliceAccount->accountManager()->isAllowed(*device2.second));
 
     // Ban CA
-    aliceAccount->setCertificateStatus(ca.second, jami::tls::TrustStore::PermissionStatus::BANNED);
+    aliceAccount->setCertificateStatus(ca.second, dhtnet::tls::TrustStore::PermissionStatus::BANNED);
     CPPUNIT_ASSERT(aliceAccount->accountManager()->getCertificateStatus(ca.second->getId().toString())
-                   == jami::tls::TrustStore::PermissionStatus::BANNED);
+                   == dhtnet::tls::TrustStore::PermissionStatus::BANNED);
     CPPUNIT_ASSERT(not aliceAccount->accountManager()->isAllowed(*ca.second));
     CPPUNIT_ASSERT(not aliceAccount->accountManager()->isAllowed(*account.second));
     CPPUNIT_ASSERT(not aliceAccount->accountManager()->isAllowed(*device2.second));
 
-    aliceAccount->setCertificateStatus(ca.second, jami::tls::TrustStore::PermissionStatus::BANNED);
+    aliceAccount->setCertificateStatus(ca.second, dhtnet::tls::TrustStore::PermissionStatus::BANNED);
     CPPUNIT_ASSERT(aliceAccount->accountManager()->getCertificateStatus(ca.second->getId().toString())
-                   == jami::tls::TrustStore::PermissionStatus::BANNED);
+                   == dhtnet::tls::TrustStore::PermissionStatus::BANNED);
 
     // Test unpin
     aliceAccount->certStore().unpinCertificate(id);
@@ -172,11 +172,11 @@
                    == pinned.end());
 
     // Test statusToStr
-    CPPUNIT_ASSERT(strcmp(jami::tls::statusToStr(jami::tls::TrustStatus::TRUSTED),
-                          libjami::Certificate::TrustStatus::TRUSTED)
+    CPPUNIT_ASSERT(strcmp(dhtnet::tls::statusToStr(dhtnet::tls::TrustStatus::TRUSTED),
+                          libdhtnet::Certificate::TrustStatus::TRUSTED)
                    == 0);
-    CPPUNIT_ASSERT(strcmp(jami::tls::statusToStr(jami::tls::TrustStatus::UNTRUSTED),
-                          libjami::Certificate::TrustStatus::UNTRUSTED)
+    CPPUNIT_ASSERT(strcmp(dhtnet::tls::statusToStr(dhtnet::tls::TrustStatus::UNTRUSTED),
+                          libdhtnet::Certificate::TrustStatus::UNTRUSTED)
                    == 0);*/
 }
 
@@ -206,4 +206,4 @@
 } // namespace test
 } // namespace jami
 
-JAMI_TEST_RUNNER(jami::test::CertStoreTest::name());
+JAMI_TEST_RUNNER(dhtnet::test::CertStoreTest::name());
diff --git a/tests/connectionManager.cpp b/tests/connectionManager.cpp
index 504f49f..90321f8 100644
--- a/tests/connectionManager.cpp
+++ b/tests/connectionManager.cpp
@@ -28,7 +28,7 @@
 
 using namespace std::literals::chrono_literals;
 
-namespace jami {
+namespace dhtnet {
 namespace test {
 
 class ConnectionManagerTest : public CppUnit::TestFixture
@@ -1274,4 +1274,4 @@
 } // namespace test
 } // namespace jami
 
-JAMI_TEST_RUNNER(jami::test::ConnectionManagerTest::name())
+JAMI_TEST_RUNNER(dhtnet::test::ConnectionManagerTest::name())
diff --git a/tests/testFileutils.cpp b/tests/testFileutils.cpp
index ba95e33..34ca646 100644
--- a/tests/testFileutils.cpp
+++ b/tests/testFileutils.cpp
@@ -29,7 +29,7 @@
 #include <cstdlib>
 #include <unistd.h>
 
-namespace jami { namespace fileutils { namespace test {
+namespace dhtnet { namespace fileutils { namespace test {
 
 class FileutilsTest : public CppUnit::TestFixture {
 public:
@@ -150,7 +150,7 @@
     CPPUNIT_ASSERT(removeAll(NON_EXISTANT_PATH_BASE) == 0);
 }
 
-}}} // namespace jami::test::fileutils
+}}} // namespace dhtnet::test::fileutils
 
-JAMI_TEST_RUNNER(jami::fileutils::test::FileutilsTest::name());
+JAMI_TEST_RUNNER(dhtnet::fileutils::test::FileutilsTest::name());
 
diff --git a/tests/testString_utils.cpp b/tests/testString_utils.cpp
index ba4b163..60c1363 100644
--- a/tests/testString_utils.cpp
+++ b/tests/testString_utils.cpp
@@ -29,7 +29,7 @@
 
 using namespace std::literals;
 
-namespace jami {
+namespace dhtnet {
 namespace test {
 
 class StringUtilsTest : public CppUnit::TestFixture
@@ -89,10 +89,10 @@
 StringUtilsTest::to_number_test()
 {
     // test with int
-    CPPUNIT_ASSERT(jami::stoi(PI_42) == INT);
+    CPPUNIT_ASSERT(dhtnet::stoi(PI_42) == INT);
 
     // test with double
-    CPPUNIT_ASSERT(jami::stod(PI_DOUBLE) == DOUBLE);
+    CPPUNIT_ASSERT(dhtnet::stod(PI_DOUBLE) == DOUBLE);
 }
 
 void
@@ -111,7 +111,7 @@
 
     std::string_view line;
     split_string_result.clear();
-    while (jami::getline(data, line, '*')) {
+    while (dhtnet::getline(data, line, '*')) {
         split_string_result.emplace_back(line);
     }
     CPPUNIT_ASSERT(split_string_result.size() == 2);
@@ -122,4 +122,4 @@
 } // namespace test
 } // namespace jami
 
-JAMI_TEST_RUNNER(jami::test::StringUtilsTest::name());
+JAMI_TEST_RUNNER(dhtnet::test::StringUtilsTest::name());
