diff --git a/tests/chunks/consumer.t.cpp b/tests/chunks/consumer.t.cpp
index 37e9abe..ebedd61 100644
--- a/tests/chunks/consumer.t.cpp
+++ b/tests/chunks/consumer.t.cpp
@@ -67,7 +67,7 @@
   output_test_stream output("");
   Consumer cons(security::v2::getAcceptAllValidator(), output);
 
-  auto interest = makeInterest(name);
+  auto interest = makeInterest(name, true);
 
   for (size_t i = 0; i < testStrings.size(); ++i) {
     output.flush();
@@ -106,7 +106,7 @@
   output_test_stream output("");
   Consumer cons(security::v2::getAcceptAllValidator(), output);
 
-  auto interest = makeInterest(name);
+  auto interest = makeInterest(name, true);
   std::vector<shared_ptr<Data>> dataStore;
 
   for (size_t i = 0; i < testStrings.size(); ++i) {
@@ -149,7 +149,7 @@
   {
     isDiscoverRunning = true;
 
-    auto interest = makeInterest(m_prefix);
+    auto interest = makeInterest(m_prefix, true);
     expressInterest(*interest, 1, 1);
   }
 
diff --git a/tests/chunks/producer.t.cpp b/tests/chunks/producer.t.cpp
index c508abc..eea82ca 100644
--- a/tests/chunks/producer.t.cpp
+++ b/tests/chunks/producer.t.cpp
@@ -107,7 +107,7 @@
   size_t nSegments = std::ceil(static_cast<double>(testString.str().size()) / options.maxSegmentSize);
 
   // version request
-  face.receive(*makeInterest(prefix));
+  face.receive(*makeInterest(prefix, true));
   face.processEvents();
 
   BOOST_REQUIRE_EQUAL(face.sentData.size(), 1);
@@ -123,7 +123,7 @@
   nameWithVersion.append(lastData.getName()[-2]);
   size_t requestSegmentNo = 1;
 
-  face.receive(*makeInterest(nameWithVersion.appendSegment(requestSegmentNo)));
+  face.receive(*makeInterest(nameWithVersion.appendSegment(requestSegmentNo), true));
   face.processEvents();
 
   BOOST_REQUIRE_EQUAL(face.sentData.size(), 2);
@@ -142,7 +142,7 @@
   size_t nSegments = std::ceil(static_cast<double>(testString.str().size()) / options.maxSegmentSize);
 
   // version request
-  face.receive(*makeInterest(prefix));
+  face.receive(*makeInterest(prefix, true));
   face.processEvents();
 
   BOOST_REQUIRE_EQUAL(face.sentData.size(), 1);
@@ -158,7 +158,7 @@
   Name nameWithVersion(prefix);
   size_t requestSegmentNo = 1;
 
-  face.receive(*makeInterest(nameWithVersion.appendSegment(requestSegmentNo)));
+  face.receive(*makeInterest(nameWithVersion.appendSegment(requestSegmentNo), true));
   face.processEvents();
 
   BOOST_REQUIRE_EQUAL(face.sentData.size(), 2);
@@ -178,7 +178,7 @@
   size_t nSegments = std::ceil(static_cast<double>(testString.str().size()) / options.maxSegmentSize);
 
   // version request
-  face.receive(*makeInterest(prefix));
+  face.receive(*makeInterest(prefix, true));
   face.processEvents();
 
   BOOST_REQUIRE_EQUAL(face.sentData.size(), 1);
@@ -192,7 +192,7 @@
   // segment request
   Name nameWithVersion(prefix);
   nameWithVersion.append(lastData.getName()[-2]);
-  face.receive(*makeInterest(nameWithVersion.appendSegment(nSegments)));
+  face.receive(*makeInterest(nameWithVersion.appendSegment(nSegments), true));
   face.processEvents();
 
   // no new data
