tests: improve test coverage of FaceManager

And misc cleanups in various mgmt test suites.

Refs: #3377
Change-Id: I189f8891559dae6e2329338e7707991ca476db0e
diff --git a/tests/daemon/mgmt/cs-manager.t.cpp b/tests/daemon/mgmt/cs-manager.t.cpp
index d56b3d6..b4fe051 100644
--- a/tests/daemon/mgmt/cs-manager.t.cpp
+++ b/tests/daemon/mgmt/cs-manager.t.cpp
@@ -71,8 +71,7 @@
   body.setCapacity(22129);
   body.setFlagBit(CsFlagBit::BIT_CS_ENABLE_ADMIT, false, false);
   body.setFlagBit(CsFlagBit::BIT_CS_ENABLE_SERVE, true, false);
-  BOOST_CHECK_EQUAL(checkResponse(0, req.getName(),
-                                  ControlResponse(200, "OK").setBody(body.wireEncode())),
+  BOOST_CHECK_EQUAL(checkResponse(0, req.getName(), makeResponse(200, "OK", body)),
                     CheckResponseResult::OK);
 
   // send filled cs/config command
@@ -87,8 +86,7 @@
   body.setCapacity(18609);
   body.setFlagBit(CsFlagBit::BIT_CS_ENABLE_ADMIT, true, false);
   body.setFlagBit(CsFlagBit::BIT_CS_ENABLE_SERVE, false, false);
-  BOOST_CHECK_EQUAL(checkResponse(1, req.getName(),
-                                  ControlResponse(200, "OK").setBody(body.wireEncode())),
+  BOOST_CHECK_EQUAL(checkResponse(1, req.getName(), makeResponse(200, "OK", body)),
                     CheckResponseResult::OK);
 
   // CS shall have updated config
@@ -119,28 +117,24 @@
   const Name cmdPrefix = Name("/localhost/nfd").append(ndn::nfd::CsEraseCommand::getName());
 
   // requested Name matches no Data
-  auto req = makeControlCommandRequest(cmdPrefix,
-    ControlParameters().setName("/A").setCount(1));
+  auto req = makeControlCommandRequest(cmdPrefix, ControlParameters().setName("/A").setCount(1));
   receiveInterest(req);
 
   // response should include zero as actual Count
   ControlParameters body;
   body.setName("/A");
   body.setCount(0);
-  BOOST_CHECK_EQUAL(checkResponse(0, req.getName(),
-                                  ControlResponse(200, "OK").setBody(body.wireEncode())),
+  BOOST_CHECK_EQUAL(checkResponse(0, req.getName(), makeResponse(200, "OK", body)),
                     CheckResponseResult::OK);
 
   // requested Count is less than erase limit
-  req = makeControlCommandRequest(cmdPrefix,
-    ControlParameters().setName("/B").setCount(3));
+  req = makeControlCommandRequest(cmdPrefix, ControlParameters().setName("/B").setCount(3));
   receiveInterest(req);
 
   // response should include actual Count and omit Capacity
   body.setName("/B");
   body.setCount(3);
-  BOOST_CHECK_EQUAL(checkResponse(1, req.getName(),
-                                  ControlResponse(200, "OK").setBody(body.wireEncode())),
+  BOOST_CHECK_EQUAL(checkResponse(1, req.getName(), makeResponse(200, "OK", body)),
                     CheckResponseResult::OK);
 
   // requested Count equals erase limit
@@ -151,8 +145,7 @@
   // response should include actual Count and omit Capacity
   body.setName("/E");
   body.setCount(CsManager::ERASE_LIMIT - 1);
-  BOOST_CHECK_EQUAL(checkResponse(2, req.getName(),
-                                  ControlResponse(200, "OK").setBody(body.wireEncode())),
+  BOOST_CHECK_EQUAL(checkResponse(2, req.getName(), makeResponse(200, "OK", body)),
                     CheckResponseResult::OK);
 
   // requested Count exceeds erase limit, but there are no more Data
@@ -163,8 +156,7 @@
   // response should include actual Count and omit Capacity
   body.setName("/F");
   body.setCount(CsManager::ERASE_LIMIT);
-  BOOST_CHECK_EQUAL(checkResponse(3, req.getName(),
-                                  ControlResponse(200, "OK").setBody(body.wireEncode())),
+  BOOST_CHECK_EQUAL(checkResponse(3, req.getName(), makeResponse(200, "OK", body)),
                     CheckResponseResult::OK);
 
   // requested Count exceeds erase limit, and there are more Data
@@ -176,21 +168,18 @@
   body.setName("/G");
   body.setCount(CsManager::ERASE_LIMIT);
   body.setCapacity(CsManager::ERASE_LIMIT);
-  BOOST_CHECK_EQUAL(checkResponse(4, req.getName(),
-                                  ControlResponse(200, "OK").setBody(body.wireEncode())),
+  BOOST_CHECK_EQUAL(checkResponse(4, req.getName(), makeResponse(200, "OK", body)),
                     CheckResponseResult::OK);
 
   // request omit Count, which implies "no limit" aka exceeds erase limit
-  req = makeControlCommandRequest(cmdPrefix,
-    ControlParameters().setName("/H"));
+  req = makeControlCommandRequest(cmdPrefix, ControlParameters().setName("/H"));
   receiveInterest(req);
 
   // response should include both actual Count and Capacity since there are more Data
   body.setName("/H");
   body.setCount(CsManager::ERASE_LIMIT);
   body.setCapacity(CsManager::ERASE_LIMIT);
-  BOOST_CHECK_EQUAL(checkResponse(5, req.getName(),
-                                  ControlResponse(200, "OK").setBody(body.wireEncode())),
+  BOOST_CHECK_EQUAL(checkResponse(5, req.getName(), makeResponse(200, "OK", body)),
                     CheckResponseResult::OK);
 
   // one Data each under /A, /G, /H remain, all other Data are erased
diff --git a/tests/daemon/mgmt/face-manager-create-face.t.cpp b/tests/daemon/mgmt/face-manager-create-face.t.cpp
index 31c4bf1..45e70d2 100644
--- a/tests/daemon/mgmt/face-manager-create-face.t.cpp
+++ b/tests/daemon/mgmt/face-manager-create-face.t.cpp
@@ -117,7 +117,6 @@
   {
     return ControlParameters()
       .setUri("tcp4://127.0.0.1:26363")
-      .setFacePersistency(ndn::nfd::FACE_PERSISTENCY_PERSISTENT)
       .setFlagBit(ndn::nfd::BIT_LOCAL_FIELDS_ENABLED, true);
   }
 };
@@ -130,7 +129,6 @@
   {
     return ControlParameters()
       .setUri("tcp4://127.0.0.1:26363")
-      .setFacePersistency(ndn::nfd::FACE_PERSISTENCY_PERSISTENT)
       .setFlagBit(ndn::nfd::BIT_LOCAL_FIELDS_ENABLED, false);
   }
 };
@@ -143,7 +141,6 @@
   {
     return ControlParameters()
       .setUri("udp4://127.0.0.1:26363")
-      .setFacePersistency(ndn::nfd::FACE_PERSISTENCY_PERSISTENT)
       .setFlagBit(ndn::nfd::BIT_LOCAL_FIELDS_ENABLED, true);
   }
 };
@@ -156,7 +153,6 @@
   {
     return ControlParameters()
       .setUri("udp4://127.0.0.1:26363")
-      .setFacePersistency(ndn::nfd::FACE_PERSISTENCY_PERSISTENT)
       .setFlagBit(ndn::nfd::BIT_LOCAL_FIELDS_ENABLED, false);
   }
 };
@@ -169,7 +165,6 @@
   {
     return ControlParameters()
       .setUri("tcp4://127.0.0.1:26363")
-      .setFacePersistency(ndn::nfd::FACE_PERSISTENCY_PERSISTENT)
       .setFlagBit(ndn::nfd::BIT_LP_RELIABILITY_ENABLED, true);
   }
 };
@@ -182,7 +177,6 @@
   {
     return ControlParameters()
       .setUri("tcp4://127.0.0.1:26363")
-      .setFacePersistency(ndn::nfd::FACE_PERSISTENCY_PERSISTENT)
       .setFlagBit(ndn::nfd::BIT_LP_RELIABILITY_ENABLED, false);
   }
 };
@@ -195,7 +189,6 @@
   {
     return ControlParameters()
       .setUri("udp4://127.0.0.1:26363")
-      .setFacePersistency(ndn::nfd::FACE_PERSISTENCY_PERSISTENT)
       .setFlagBit(ndn::nfd::BIT_LP_RELIABILITY_ENABLED, true);
   }
 };
@@ -208,7 +201,6 @@
   {
     return ControlParameters()
       .setUri("udp4://127.0.0.1:26363")
-      .setFacePersistency(ndn::nfd::FACE_PERSISTENCY_PERSISTENT)
       .setFlagBit(ndn::nfd::BIT_LP_RELIABILITY_ENABLED, false);
   }
 };
@@ -221,7 +213,6 @@
   {
     return ControlParameters()
       .setUri("tcp4://127.0.0.1:26363")
-      .setFacePersistency(ndn::nfd::FACE_PERSISTENCY_PERSISTENT)
       .setBaseCongestionMarkingInterval(50_ms)
       .setDefaultCongestionThreshold(1000)
       .setFlagBit(ndn::nfd::BIT_CONGESTION_MARKING_ENABLED, true);
@@ -236,7 +227,34 @@
   {
     return ControlParameters()
       .setUri("tcp4://127.0.0.1:26363")
-      .setFacePersistency(ndn::nfd::FACE_PERSISTENCY_PERSISTENT)
+      .setBaseCongestionMarkingInterval(50_ms)
+      .setDefaultCongestionThreshold(1000)
+      .setFlagBit(ndn::nfd::BIT_CONGESTION_MARKING_ENABLED, false);
+  }
+};
+
+class UdpFaceCongestionMarkingEnabled
+{
+public:
+  static ControlParameters
+  getParameters()
+  {
+    return ControlParameters()
+      .setUri("udp4://127.0.0.1:26363")
+      .setBaseCongestionMarkingInterval(50_ms)
+      .setDefaultCongestionThreshold(1000)
+      .setFlagBit(ndn::nfd::BIT_CONGESTION_MARKING_ENABLED, true);
+  }
+};
+
+class UdpFaceCongestionMarkingDisabled
+{
+public:
+  static ControlParameters
+  getParameters()
+  {
+    return ControlParameters()
+      .setUri("udp4://127.0.0.1:26363")
       .setBaseCongestionMarkingInterval(50_ms)
       .setDefaultCongestionThreshold(1000)
       .setFlagBit(ndn::nfd::BIT_CONGESTION_MARKING_ENABLED, false);
@@ -251,7 +269,6 @@
   {
     return ControlParameters()
       .setUri("tcp4://127.0.0.1:26363")
-      .setFacePersistency(ndn::nfd::FACE_PERSISTENCY_PERSISTENT)
       .setMtu(1000);
   }
 };
@@ -264,12 +281,11 @@
   {
     return ControlParameters()
       .setUri("udp4://127.0.0.1:26363")
-      .setFacePersistency(ndn::nfd::FACE_PERSISTENCY_PERSISTENT)
       .setMtu(1000);
   }
 };
 
-class FaceUriMalformed
+class RemoteUriMalformed
 {
 public:
   static ControlParameters
@@ -280,7 +296,7 @@
   }
 };
 
-class FaceUriNonCanonical
+class RemoteUriNonCanonical
 {
 public:
   static ControlParameters
@@ -291,7 +307,43 @@
   }
 };
 
-class FaceUriUnsupportedScheme
+class LocalUriMalformed
+{
+public:
+  static ControlParameters
+  getParameters()
+  {
+    return ControlParameters()
+      .setUri("udp4://127.0.0.1:26363")
+      .setLocalUri("udp4://127.0.0.1:not-a-port");
+  }
+};
+
+class LocalUriNonCanonical
+{
+public:
+  static ControlParameters
+  getParameters()
+  {
+    return ControlParameters()
+      .setUri("udp4://127.0.0.1:26363")
+      .setLocalUri("udp://localhost");
+  }
+};
+
+class LocalUriUnsupported
+{
+public:
+  static ControlParameters
+  getParameters()
+  {
+    return ControlParameters()
+      .setUri("udp4://127.0.0.1:26363")
+      .setLocalUri("udp4://127.0.0.1:36363");
+  }
+};
+
+class UnsupportedProtocol
 {
 public:
   static ControlParameters
@@ -302,7 +354,7 @@
   }
 };
 
-// Pairs of CreateCommand and success/failure status
+// Pairs of FaceCreateCommand request and success/failure response
 using TestCases = boost::mp11::mp_list<
   boost::mp11::mp_list<TcpFaceOnDemand, CommandFailure<406>>,
   boost::mp11::mp_list<TcpFacePersistent, CommandSuccess>,
@@ -320,19 +372,24 @@
   boost::mp11::mp_list<UdpFaceLpReliabilityDisabled, CommandSuccess>,
   boost::mp11::mp_list<TcpFaceCongestionMarkingEnabled, CommandSuccess>,
   boost::mp11::mp_list<TcpFaceCongestionMarkingDisabled, CommandSuccess>,
+  boost::mp11::mp_list<UdpFaceCongestionMarkingEnabled, CommandSuccess>,
+  boost::mp11::mp_list<UdpFaceCongestionMarkingDisabled, CommandSuccess>,
   boost::mp11::mp_list<TcpFaceMtuOverride, CommandFailure<406>>,
   boost::mp11::mp_list<UdpFaceMtuOverride, CommandSuccess>,
-  boost::mp11::mp_list<FaceUriMalformed, CommandFailure<400>>,
-  boost::mp11::mp_list<FaceUriNonCanonical, CommandFailure<400>>,
-  boost::mp11::mp_list<FaceUriUnsupportedScheme, CommandFailure<406>>
+  boost::mp11::mp_list<RemoteUriMalformed, CommandFailure<400>>,
+  boost::mp11::mp_list<RemoteUriNonCanonical, CommandFailure<400>>,
+  boost::mp11::mp_list<LocalUriMalformed, CommandFailure<400>>,
+  boost::mp11::mp_list<LocalUriNonCanonical, CommandFailure<400>>,
+  boost::mp11::mp_list<LocalUriUnsupported, CommandFailure<406>>,
+  boost::mp11::mp_list<UnsupportedProtocol, CommandFailure<406>>
 >;
 
 BOOST_FIXTURE_TEST_CASE_TEMPLATE(NewFace, T, TestCases, FaceManagerCommandFixture)
 {
-  using FaceType = boost::mp11::mp_first<T>;
+  using CreateRequest = boost::mp11::mp_first<T>;
   using CreateResult = boost::mp11::mp_second<T>;
 
-  Interest req = makeControlCommandRequest(this->CREATE_REQUEST, FaceType::getParameters());
+  Interest req = makeControlCommandRequest(this->CREATE_REQUEST, CreateRequest::getParameters());
 
   bool hasCallbackFired = false;
   this->node1.face.onSendData.connect([this, req, &hasCallbackFired] (const Data& response) {
@@ -342,15 +399,18 @@
 
     ControlResponse actual(response.getContent().blockFromValue());
     ControlResponse expected(CreateResult::getExpected());
-    BOOST_TEST_MESSAGE(actual.getText());
-    BOOST_CHECK_EQUAL(expected.getCode(), actual.getCode());
+    BOOST_TEST(expected.getCode() == actual.getCode(), actual.getText());
 
     if (actual.getBody().hasWire()) {
-      ControlParameters expectedParams(FaceType::getParameters());
+      ControlParameters expectedParams(CreateRequest::getParameters());
+      ndn::nfd::FaceCreateCommand::applyDefaultsToRequest(expectedParams);
       ControlParameters actualParams(actual.getBody());
 
-      BOOST_CHECK(actualParams.hasFaceId());
-      BOOST_CHECK_EQUAL(expectedParams.getFacePersistency(), actualParams.getFacePersistency());
+      BOOST_TEST(actualParams.hasFaceId());
+      BOOST_TEST(expectedParams.getUri() == actualParams.getUri());
+      BOOST_TEST(actualParams.hasLocalUri());
+      BOOST_TEST(actualParams.hasFlags());
+      BOOST_TEST(expectedParams.getFacePersistency() == actualParams.getFacePersistency());
 
       if (actual.getCode() == 200) {
         if (expectedParams.hasFlags()) {
@@ -363,15 +423,16 @@
                               actualParams.getFlagBit(ndn::nfd::BIT_CONGESTION_MARKING_ENABLED));
           }
           else {
-            BOOST_CHECK(actualParams.getFlagBit(ndn::nfd::BIT_CONGESTION_MARKING_ENABLED));
+            // congestion marking is enabled by default
+            BOOST_TEST(actualParams.getFlagBit(ndn::nfd::BIT_CONGESTION_MARKING_ENABLED));
           }
         }
         else {
-          // local fields and LpReliability are disabled by default, congestion marking is enabled
-          // by default on TCP, UDP, and Unix stream
-          BOOST_CHECK(!actualParams.getFlagBit(ndn::nfd::BIT_LOCAL_FIELDS_ENABLED));
-          BOOST_CHECK(!actualParams.getFlagBit(ndn::nfd::BIT_LP_RELIABILITY_ENABLED));
-          BOOST_CHECK(actualParams.getFlagBit(ndn::nfd::BIT_CONGESTION_MARKING_ENABLED));
+          // local fields and reliability are disabled by default
+          // congestion marking is enabled by default on TCP, UDP, and Unix stream
+          BOOST_TEST(!actualParams.getFlagBit(ndn::nfd::BIT_LOCAL_FIELDS_ENABLED));
+          BOOST_TEST(!actualParams.getFlagBit(ndn::nfd::BIT_LP_RELIABILITY_ENABLED));
+          BOOST_TEST(actualParams.getFlagBit(ndn::nfd::BIT_CONGESTION_MARKING_ENABLED));
         }
 
         if (expectedParams.hasBaseCongestionMarkingInterval()) {
@@ -394,14 +455,11 @@
           BOOST_CHECK_EQUAL(expectedParams.getMtu(), actualParams.getMtu());
         }
       }
-      else {
-        BOOST_CHECK_EQUAL(expectedParams.getUri(), actualParams.getUri());
-      }
     }
 
     if (actual.getCode() != 200) {
       FaceUri uri;
-      if (uri.parse(FaceType::getParameters().getUri())) {
+      if (uri.parse(CreateRequest::getParameters().getUri())) {
         // ensure face not created
         const auto& faceTable = this->node1.faceTable;
         BOOST_CHECK(std::none_of(faceTable.begin(), faceTable.end(), [uri] (Face& face) {
@@ -419,7 +477,7 @@
   this->node1.face.receive(req);
   this->advanceClocks(1_ms, 10);
 
-  BOOST_CHECK(hasCallbackFired);
+  BOOST_TEST(hasCallbackFired);
 }
 
 BOOST_FIXTURE_TEST_CASE(ExistingFace, FaceManagerCommandFixture)
@@ -435,7 +493,7 @@
 
   // find the created face
   auto foundFace = this->node1.findFaceByUri(FaceType::getParameters().getUri());
-  BOOST_REQUIRE(foundFace != nullptr);
+  BOOST_TEST_REQUIRE(foundFace != nullptr);
 
   {
     // re-create face
@@ -467,7 +525,7 @@
     this->node1.face.receive(req);
     this->advanceClocks(1_ms, 10);
 
-    BOOST_CHECK(hasCallbackFired);
+    BOOST_TEST(hasCallbackFired);
   }
 }
 
diff --git a/tests/daemon/mgmt/face-manager-update-face.t.cpp b/tests/daemon/mgmt/face-manager-update-face.t.cpp
index 7ccc9f2..202e360 100644
--- a/tests/daemon/mgmt/face-manager-update-face.t.cpp
+++ b/tests/daemon/mgmt/face-manager-update-face.t.cpp
@@ -88,28 +88,25 @@
     FaceManagerCommandNode& target = isForOnDemandFace ? this->node2 : this->node1;
 
     bool hasCallbackFired = false;
-    signal::ScopedConnection connection = target.face.onSendData.connect(
-      [&, req, isForOnDemandFace, this] (const Data& response) {
-        if (!req.getName().isPrefixOf(response.getName())) {
-          return;
-        }
+    signal::ScopedConnection conn = target.face.onSendData.connect([&] (const Data& response) {
+      if (!req.getName().isPrefixOf(response.getName())) {
+        return;
+      }
 
-        ControlResponse create(response.getContent().blockFromValue());
-        BOOST_REQUIRE_EQUAL(create.getCode(), 200);
-        BOOST_REQUIRE(create.getBody().hasWire());
+      ControlResponse create(response.getContent().blockFromValue());
+      BOOST_TEST_REQUIRE(create.getCode() == 200);
+      ControlParameters faceParams(create.getBody());
+      BOOST_TEST_REQUIRE(faceParams.hasFaceId());
+      this->faceId = faceParams.getFaceId();
 
-        ControlParameters faceParams(create.getBody());
-        BOOST_REQUIRE(faceParams.hasFaceId());
-        this->faceId = faceParams.getFaceId();
+      hasCallbackFired = true;
 
-        hasCallbackFired = true;
-
-        if (isForOnDemandFace) {
-          auto face = target.faceTable.get(static_cast<FaceId>(this->faceId));
-          // to force creation of on-demand face
-          face->sendInterest(*makeInterest("/hello/world"));
-        }
-      });
+      if (isForOnDemandFace) {
+        auto face = target.faceTable.get(this->faceId);
+        // to force creation of on-demand face
+        face->sendInterest(*makeInterest("/hello/world"));
+      }
+    });
 
     target.face.receive(req);
     advanceClocks(1_ms, 10);
@@ -119,12 +116,11 @@
       advanceClocks(1_ms, 10); // let node1 accept Interest and create on-demand face
     }
 
-    BOOST_REQUIRE(hasCallbackFired);
+    BOOST_TEST_REQUIRE(hasCallbackFired);
   }
 
   void
-  updateFace(const ControlParameters& requestParams,
-             bool isSelfUpdating,
+  updateFace(const ControlParameters& requestParams, bool isSelfUpdating,
              const std::function<void(const ControlResponse& resp)>& checkResp)
   {
     Interest req = makeControlCommandRequest(UPDATE_REQUEST, requestParams);
@@ -134,21 +130,20 @@
     }
 
     bool hasCallbackFired = false;
-    signal::ScopedConnection connection = this->node1.face.onSendData.connect(
-      [req, &hasCallbackFired, &checkResp] (const Data& response) {
-        if (!req.getName().isPrefixOf(response.getName())) {
-          return;
-        }
+    signal::ScopedConnection conn = node1.face.onSendData.connect([&] (const Data& response) {
+      if (!req.getName().isPrefixOf(response.getName())) {
+        return;
+      }
 
-        ControlResponse actual(response.getContent().blockFromValue());
-        checkResp(actual);
+      ControlResponse actual(response.getContent().blockFromValue());
+      checkResp(actual);
 
-        hasCallbackFired = true;
-      });
+      hasCallbackFired = true;
+    });
 
     this->node1.face.receive(req);
     advanceClocks(1_ms, 10);
-    BOOST_REQUIRE(hasCallbackFired);
+    BOOST_TEST_REQUIRE(hasCallbackFired);
   }
 
 private:
@@ -164,22 +159,21 @@
     Interest req = makeControlCommandRequest(DESTROY_REQUEST, params);
 
     bool hasCallbackFired = false;
-    signal::ScopedConnection connection = this->node1.face.onSendData.connect(
-      [this, req, &hasCallbackFired] (const Data& response) {
-        if (!req.getName().isPrefixOf(response.getName())) {
-          return;
-        }
+    signal::ScopedConnection conn = node1.face.onSendData.connect([&] (const Data& response) {
+      if (!req.getName().isPrefixOf(response.getName())) {
+        return;
+      }
 
-        ControlResponse destroy(response.getContent().blockFromValue());
-        BOOST_CHECK_EQUAL(destroy.getCode(), 200);
+      ControlResponse destroy(response.getContent().blockFromValue());
+      BOOST_CHECK_EQUAL(destroy.getCode(), 200);
 
-        faceId = 0;
-        hasCallbackFired = true;
-      });
+      faceId = 0;
+      hasCallbackFired = true;
+    });
 
     this->node1.face.receive(req);
     advanceClocks(1_ms, 10);
-    BOOST_REQUIRE(hasCallbackFired);
+    BOOST_TEST_REQUIRE(hasCallbackFired);
   }
 
 protected:
@@ -194,9 +188,8 @@
   requestParams.setFaceId(65535);
 
   updateFace(requestParams, false, [] (const ControlResponse& actual) {
-    ControlResponse expected(404, "Specified face does not exist");
-    BOOST_CHECK_EQUAL(actual.getCode(), expected.getCode());
-    BOOST_TEST_MESSAGE(actual.getText());
+    BOOST_TEST(actual.getCode() == 404);
+    BOOST_TEST(actual.getText() == "Specified face does not exist");
   });
 }
 
@@ -219,15 +212,11 @@
     .setFacePersistency(ndn::nfd::FACE_PERSISTENCY_PERMANENT);
 
   updateFace(parameters, false, [] (const ControlResponse& actual) {
-      BOOST_TEST_MESSAGE(actual.getText());
-      BOOST_CHECK_EQUAL(actual.getCode(), ResultType::getExpected().getCode());
+    BOOST_TEST(actual.getCode() == ResultType::getExpected().getCode(), actual.getText());
 
-      // the response for either 200 or 409 will have a content body
-      BOOST_REQUIRE(actual.getBody().hasWire());
-
-      ControlParameters resp;
-      resp.wireDecode(actual.getBody());
-      BOOST_CHECK_EQUAL(resp.getFacePersistency(), ndn::nfd::FACE_PERSISTENCY_PERMANENT);
+    // the response for either 200 or 409 will have a content body
+    ControlParameters resp(actual.getBody());
+    BOOST_CHECK_EQUAL(resp.getFacePersistency(), ndn::nfd::FACE_PERSISTENCY_PERMANENT);
   });
 }
 
@@ -244,37 +233,24 @@
   mtuTooLow.setMtu(63);
 
   updateFace(validParams, false, [] (const ControlResponse& actual) {
-    BOOST_CHECK_EQUAL(actual.getCode(), 200);
-    BOOST_TEST_MESSAGE(actual.getText());
+    BOOST_TEST(actual.getCode() == 200, actual.getText());
 
-    if (actual.getBody().hasWire()) {
-      ControlParameters actualParams(actual.getBody());
-
-      BOOST_CHECK(actualParams.hasFaceId());
-      BOOST_REQUIRE(actualParams.hasMtu());
-      // Check for changed MTU
-      BOOST_CHECK_EQUAL(actualParams.getMtu(), 4000);
-    }
-    else {
-      BOOST_ERROR("Valid: Response does not contain ControlParameters");
-    }
+    ControlParameters actualParams(actual.getBody());
+    BOOST_TEST(actualParams.hasFaceId());
+    BOOST_TEST_REQUIRE(actualParams.hasMtu());
+    // Check for changed MTU
+    BOOST_CHECK_EQUAL(actualParams.getMtu(), 4000);
   });
 
   updateFace(mtuTooLow, false, [] (const ControlResponse& actual) {
-    BOOST_CHECK_EQUAL(actual.getCode(), 409);
-    BOOST_TEST_MESSAGE(actual.getText());
+    BOOST_TEST(actual.getCode() == 409);
+    BOOST_TEST(actual.getText() == "Invalid properties specified");
 
-    if (actual.getBody().hasWire()) {
-      ControlParameters actualParams(actual.getBody());
-
-      BOOST_CHECK(!actualParams.hasFaceId());
-      BOOST_REQUIRE(actualParams.hasMtu());
-      // Check for returned invalid parameter
-      BOOST_CHECK_EQUAL(actualParams.getMtu(), 63);
-    }
-    else {
-      BOOST_ERROR("Too low: Response does not contain ControlParameters");
-    }
+    ControlParameters actualParams(actual.getBody());
+    BOOST_TEST(!actualParams.hasFaceId());
+    BOOST_TEST_REQUIRE(actualParams.hasMtu());
+    // Check for returned invalid parameter
+    BOOST_CHECK_EQUAL(actualParams.getMtu(), 63);
   });
 }
 
@@ -287,231 +263,62 @@
   updateParams.setMtu(4000);
 
   updateFace(updateParams, false, [] (const ControlResponse& actual) {
-    BOOST_CHECK_EQUAL(actual.getCode(), 409);
-    BOOST_TEST_MESSAGE(actual.getText());
+    BOOST_TEST(actual.getCode() == 409);
+    BOOST_TEST(actual.getText() == "Invalid properties specified");
 
-    if (actual.getBody().hasWire()) {
-      ControlParameters actualParams(actual.getBody());
-
-      BOOST_CHECK(!actualParams.hasFaceId());
-      BOOST_REQUIRE(actualParams.hasMtu());
-      // Check for returned invalid parameter
-      BOOST_CHECK_EQUAL(actualParams.getMtu(), 4000);
-    }
-    else {
-      BOOST_ERROR("Response does not contain ControlParameters");
-    }
+    ControlParameters actualParams(actual.getBody());
+    BOOST_TEST(!actualParams.hasFaceId());
+    BOOST_TEST_REQUIRE(actualParams.hasMtu());
+    // Check for returned invalid parameter
+    BOOST_CHECK_EQUAL(actualParams.getMtu(), 4000);
   });
 }
 
-class TcpLocalFieldsEnable
+template<bool EnableLocalFields>
+struct TcpLocalFields
 {
-public:
-  static std::string
-  getUri()
-  {
-    return "tcp4://127.0.0.1:26363";
-  }
-
-  static constexpr ndn::nfd::FacePersistency
-  getPersistency()
-  {
-    return ndn::nfd::FACE_PERSISTENCY_PERSISTENT;
-  }
-
-  static constexpr bool
-  getInitLocalFieldsEnabled()
-  {
-    return false;
-  }
-
-  static constexpr bool
-  getLocalFieldsEnabled()
-  {
-    return true;
-  }
-
-  static constexpr bool
-  getLocalFieldsEnabledMask()
-  {
-    return true;
-  }
-
-  static constexpr bool
-  shouldHaveWire()
-  {
-    return false;
-  }
+  static inline const std::string uri = "tcp4://127.0.0.1:26363";
+  static constexpr bool localFieldsInit = !EnableLocalFields;
+  static constexpr bool localFieldsEnabled = EnableLocalFields;
+  static constexpr bool mask = true;
+  static constexpr bool shouldHaveBody = false;
 };
 
-class TcpLocalFieldsDisable
+// UDP faces are non-local by definition.
+struct UdpLocalFieldsEnable
 {
-public:
-  static std::string
-  getUri()
-  {
-    return "tcp4://127.0.0.1:26363";
-  }
-
-  static constexpr ndn::nfd::FacePersistency
-  getPersistency()
-  {
-    return ndn::nfd::FACE_PERSISTENCY_PERSISTENT;
-  }
-
-  static constexpr bool
-  getInitLocalFieldsEnabled()
-  {
-    return true;
-  }
-
-  static constexpr bool
-  getLocalFieldsEnabled()
-  {
-    return false;
-  }
-
-  static constexpr bool
-  getLocalFieldsEnabledMask()
-  {
-    return true;
-  }
-
-  static constexpr bool
-  shouldHaveWire()
-  {
-    return false;
-  }
+  static inline const std::string uri = "udp4://127.0.0.1:26363";
+  static constexpr bool localFieldsInit = false;
+  static constexpr bool localFieldsEnabled = true;
+  static constexpr bool mask = true;
+  static constexpr bool shouldHaveBody = true;
 };
 
-// UDP faces are non-local by definition
-class UdpLocalFieldsEnable
+// UDP faces are non-local by definition.
+// In this test case, attempt to disable local fields on face with local fields already disabled.
+struct UdpLocalFieldsDisable
 {
-public:
-  static std::string
-  getUri()
-  {
-    return "udp4://127.0.0.1:26363";
-  }
-
-  static constexpr ndn::nfd::FacePersistency
-  getPersistency()
-  {
-    return ndn::nfd::FACE_PERSISTENCY_PERSISTENT;
-  }
-
-  static constexpr bool
-  getInitLocalFieldsEnabled()
-  {
-    return false;
-  }
-
-  static constexpr bool
-  getLocalFieldsEnabled()
-  {
-    return true;
-  }
-
-  static constexpr bool
-  getLocalFieldsEnabledMask()
-  {
-    return true;
-  }
-
-  static constexpr bool
-  shouldHaveWire()
-  {
-    return true;
-  }
-};
-
-// UDP faces are non-local by definition
-// In this test case, attempt to disable local fields on face with local fields already disabled
-class UdpLocalFieldsDisable
-{
-public:
-  static std::string
-  getUri()
-  {
-    return "udp4://127.0.0.1:26363";
-  }
-
-  static constexpr ndn::nfd::FacePersistency
-  getPersistency()
-  {
-    return ndn::nfd::FACE_PERSISTENCY_PERSISTENT;
-  }
-
-  static constexpr bool
-  getInitLocalFieldsEnabled()
-  {
-    return false;
-  }
-
-  static constexpr bool
-  getLocalFieldsEnabled()
-  {
-    return false;
-  }
-
-  static constexpr bool
-  getLocalFieldsEnabledMask()
-  {
-    return true;
-  }
-
-  static constexpr bool
-  shouldHaveWire()
-  {
-    return false;
-  }
+  static inline const std::string uri = "udp4://127.0.0.1:26363";
+  static constexpr bool localFieldsInit = false;
+  static constexpr bool localFieldsEnabled = false;
+  static constexpr bool mask = true;
+  static constexpr bool shouldHaveBody = false;
 };
 
 // In this test case, set Flags to enable local fields on non-local face, but exclude local fields
 // from Mask. This test case will pass as no action is taken due to the missing Mask bit.
-class UdpLocalFieldsEnableNoMaskBit
+struct UdpLocalFieldsEnableNoMaskBit
 {
-public:
-  static std::string
-  getUri()
-  {
-    return "udp4://127.0.0.1:26363";
-  }
-
-  static constexpr ndn::nfd::FacePersistency
-  getPersistency()
-  {
-    return ndn::nfd::FACE_PERSISTENCY_PERSISTENT;
-  }
-
-  static constexpr bool
-  getInitLocalFieldsEnabled()
-  {
-    return false;
-  }
-
-  static constexpr bool
-  getLocalFieldsEnabled()
-  {
-    return true;
-  }
-
-  static constexpr bool
-  getLocalFieldsEnabledMask()
-  {
-    return false;
-  }
-
-  static constexpr bool
-  shouldHaveWire()
-  {
-    return false;
-  }
+  static inline const std::string uri = "udp4://127.0.0.1:26363";
+  static constexpr bool localFieldsInit = false;
+  static constexpr bool localFieldsEnabled = true;
+  static constexpr bool mask = false;
+  static constexpr bool shouldHaveBody = false;
 };
 
 using LocalFieldFaces = boost::mp11::mp_list<
-  boost::mp11::mp_list<TcpLocalFieldsEnable, CommandSuccess>,
-  boost::mp11::mp_list<TcpLocalFieldsDisable, CommandSuccess>,
+  boost::mp11::mp_list<TcpLocalFields<true>, CommandSuccess>,
+  boost::mp11::mp_list<TcpLocalFields<false>, CommandSuccess>,
   boost::mp11::mp_list<UdpLocalFieldsEnable, CommandFailure<409>>,
   boost::mp11::mp_list<UdpLocalFieldsDisable, CommandSuccess>,
   boost::mp11::mp_list<UdpLocalFieldsEnableNoMaskBit, CommandSuccess>
@@ -522,28 +329,24 @@
   using TestType = boost::mp11::mp_first<T>;
   using ResultType = boost::mp11::mp_second<T>;
 
-  createFace(TestType::getUri(), TestType::getPersistency(), {}, {},
-             TestType::getInitLocalFieldsEnabled());
+  createFace(TestType::uri, ndn::nfd::FACE_PERSISTENCY_PERSISTENT, {}, {}, TestType::localFieldsInit);
 
   ControlParameters requestParams;
   requestParams.setFaceId(faceId);
-  requestParams.setFlagBit(ndn::nfd::BIT_LOCAL_FIELDS_ENABLED, TestType::getLocalFieldsEnabled());
-  if (!TestType::getLocalFieldsEnabledMask()) {
+  requestParams.setFlagBit(ndn::nfd::BIT_LOCAL_FIELDS_ENABLED, TestType::localFieldsEnabled);
+  if constexpr (!TestType::mask) {
     requestParams.unsetFlagBit(ndn::nfd::BIT_LOCAL_FIELDS_ENABLED);
   }
 
   updateFace(requestParams, false, [] (const ControlResponse& actual) {
-    ControlResponse expected(ResultType::getExpected());
-    BOOST_TEST_MESSAGE(actual.getText());
-    BOOST_CHECK_EQUAL(actual.getCode(), expected.getCode());
+    BOOST_TEST(actual.getCode() == ResultType::getExpected().getCode(), actual.getText());
 
-    if (TestType::shouldHaveWire() && actual.getBody().hasWire()) {
+    if constexpr (TestType::shouldHaveBody) {
       ControlParameters actualParams(actual.getBody());
-
-      BOOST_CHECK(!actualParams.hasFacePersistency());
-      BOOST_CHECK(actualParams.hasFlags());
-      BOOST_CHECK(actualParams.getFlagBit(ndn::nfd::BIT_LOCAL_FIELDS_ENABLED));
-      BOOST_CHECK(actualParams.hasFlagBit(ndn::nfd::BIT_LOCAL_FIELDS_ENABLED));
+      BOOST_TEST(!actualParams.hasFacePersistency());
+      BOOST_TEST(actualParams.hasFlags());
+      BOOST_TEST(actualParams.getFlagBit(ndn::nfd::BIT_LOCAL_FIELDS_ENABLED));
+      BOOST_TEST(actualParams.hasFlagBit(ndn::nfd::BIT_LOCAL_FIELDS_ENABLED));
     }
   });
 }
@@ -561,41 +364,25 @@
   disableParams.setFlagBit(ndn::nfd::BIT_LOCAL_FIELDS_ENABLED, false);
 
   updateFace(enableParams, false, [] (const ControlResponse& actual) {
-    ControlResponse expected(200, "OK");
-    BOOST_CHECK_EQUAL(actual.getCode(), expected.getCode());
-    BOOST_TEST_MESSAGE(actual.getText());
+    BOOST_TEST(actual.getCode() == 200, actual.getText());
 
-    if (actual.getBody().hasWire()) {
-      ControlParameters actualParams(actual.getBody());
-
-      BOOST_CHECK(actualParams.hasFaceId());
-      BOOST_CHECK(actualParams.hasFacePersistency());
-      BOOST_REQUIRE(actualParams.hasFlags());
-      // Check if flags indicate local fields enabled
-      BOOST_CHECK(actualParams.getFlagBit(ndn::nfd::BIT_LOCAL_FIELDS_ENABLED));
-    }
-    else {
-      BOOST_ERROR("Enable: Response does not contain ControlParameters");
-    }
+    ControlParameters actualParams(actual.getBody());
+    BOOST_TEST(actualParams.hasFaceId());
+    BOOST_TEST(actualParams.hasFacePersistency());
+    BOOST_TEST_REQUIRE(actualParams.hasFlags());
+    // Check if flags indicate local fields enabled
+    BOOST_TEST(actualParams.getFlagBit(ndn::nfd::BIT_LOCAL_FIELDS_ENABLED));
   });
 
   updateFace(disableParams, false, [] (const ControlResponse& actual) {
-    ControlResponse expected(200, "OK");
-    BOOST_CHECK_EQUAL(actual.getCode(), expected.getCode());
-    BOOST_TEST_MESSAGE(actual.getText());
+    BOOST_TEST(actual.getCode() == 200, actual.getText());
 
-    if (actual.getBody().hasWire()) {
-      ControlParameters actualParams(actual.getBody());
-
-      BOOST_CHECK(actualParams.hasFaceId());
-      BOOST_CHECK(actualParams.hasFacePersistency());
-      BOOST_REQUIRE(actualParams.hasFlags());
-      // Check if flags indicate local fields disabled
-      BOOST_CHECK(!actualParams.getFlagBit(ndn::nfd::BIT_LOCAL_FIELDS_ENABLED));
-    }
-    else {
-      BOOST_ERROR("Disable: Response does not contain ControlParameters");
-    }
+    ControlParameters actualParams(actual.getBody());
+    BOOST_TEST(actualParams.hasFaceId());
+    BOOST_TEST(actualParams.hasFacePersistency());
+    BOOST_TEST_REQUIRE(actualParams.hasFlags());
+    // Check if flags indicate local fields disabled
+    BOOST_TEST(!actualParams.getFlagBit(ndn::nfd::BIT_LOCAL_FIELDS_ENABLED));
   });
 }
 
@@ -612,41 +399,25 @@
   disableParams.setFlagBit(ndn::nfd::BIT_LP_RELIABILITY_ENABLED, false);
 
   updateFace(enableParams, false, [] (const ControlResponse& actual) {
-    ControlResponse expected(200, "OK");
-    BOOST_CHECK_EQUAL(actual.getCode(), expected.getCode());
-    BOOST_TEST_MESSAGE(actual.getText());
+    BOOST_TEST(actual.getCode() == 200, actual.getText());
 
-    if (actual.getBody().hasWire()) {
-      ControlParameters actualParams(actual.getBody());
-
-      BOOST_CHECK(actualParams.hasFaceId());
-      BOOST_CHECK(actualParams.hasFacePersistency());
-      BOOST_REQUIRE(actualParams.hasFlags());
-      // Check if flags indicate reliability enabled
-      BOOST_CHECK(actualParams.getFlagBit(ndn::nfd::BIT_LP_RELIABILITY_ENABLED));
-    }
-    else {
-      BOOST_ERROR("Enable: Response does not contain ControlParameters");
-    }
+    ControlParameters actualParams(actual.getBody());
+    BOOST_TEST(actualParams.hasFaceId());
+    BOOST_TEST(actualParams.hasFacePersistency());
+    BOOST_TEST_REQUIRE(actualParams.hasFlags());
+    // Check if flags indicate reliability enabled
+    BOOST_TEST(actualParams.getFlagBit(ndn::nfd::BIT_LP_RELIABILITY_ENABLED));
   });
 
   updateFace(disableParams, false, [] (const ControlResponse& actual) {
-    ControlResponse expected(200, "OK");
-    BOOST_CHECK_EQUAL(actual.getCode(), expected.getCode());
-    BOOST_TEST_MESSAGE(actual.getText());
+    BOOST_TEST(actual.getCode() == 200, actual.getText());
 
-    if (actual.getBody().hasWire()) {
-      ControlParameters actualParams(actual.getBody());
-
-      BOOST_CHECK(actualParams.hasFaceId());
-      BOOST_CHECK(actualParams.hasFacePersistency());
-      BOOST_REQUIRE(actualParams.hasFlags());
-      // Check if flags indicate reliability disabled
-      BOOST_CHECK(!actualParams.getFlagBit(ndn::nfd::BIT_LP_RELIABILITY_ENABLED));
-    }
-    else {
-      BOOST_ERROR("Disable: Response does not contain ControlParameters");
-    }
+    ControlParameters actualParams(actual.getBody());
+    BOOST_TEST(actualParams.hasFaceId());
+    BOOST_TEST(actualParams.hasFacePersistency());
+    BOOST_TEST_REQUIRE(actualParams.hasFlags());
+    // Check if flags indicate reliability disabled
+    BOOST_TEST(!actualParams.getFlagBit(ndn::nfd::BIT_LP_RELIABILITY_ENABLED));
   });
 }
 
@@ -667,51 +438,35 @@
   disableParams.setFlagBit(ndn::nfd::BIT_CONGESTION_MARKING_ENABLED, false);
 
   updateFace(enableParams, false, [] (const ControlResponse& actual) {
-    ControlResponse expected(200, "OK");
-    BOOST_CHECK_EQUAL(actual.getCode(), expected.getCode());
-    BOOST_TEST_MESSAGE(actual.getText());
+    BOOST_TEST(actual.getCode() == 200, actual.getText());
 
-    if (actual.getBody().hasWire()) {
-      ControlParameters actualParams(actual.getBody());
-
-      BOOST_CHECK(actualParams.hasFaceId());
-      BOOST_CHECK(actualParams.hasFacePersistency());
-      // Check that congestion marking parameters changed
-      BOOST_REQUIRE(actualParams.hasBaseCongestionMarkingInterval());
-      BOOST_CHECK_EQUAL(actualParams.getBaseCongestionMarkingInterval(), 50_ms);
-      BOOST_REQUIRE(actualParams.hasDefaultCongestionThreshold());
-      BOOST_CHECK_EQUAL(actualParams.getDefaultCongestionThreshold(), 10000);
-      BOOST_REQUIRE(actualParams.hasFlags());
-      // Check if flags indicate congestion marking enabled
-      BOOST_CHECK(actualParams.getFlagBit(ndn::nfd::BIT_CONGESTION_MARKING_ENABLED));
-    }
-    else {
-      BOOST_ERROR("Enable: Response does not contain ControlParameters");
-    }
+    ControlParameters actualParams(actual.getBody());
+    BOOST_TEST(actualParams.hasFaceId());
+    BOOST_TEST(actualParams.hasFacePersistency());
+    // Check that congestion marking parameters changed
+    BOOST_TEST_REQUIRE(actualParams.hasBaseCongestionMarkingInterval());
+    BOOST_CHECK_EQUAL(actualParams.getBaseCongestionMarkingInterval(), 50_ms);
+    BOOST_TEST_REQUIRE(actualParams.hasDefaultCongestionThreshold());
+    BOOST_CHECK_EQUAL(actualParams.getDefaultCongestionThreshold(), 10000);
+    BOOST_TEST_REQUIRE(actualParams.hasFlags());
+    // Check if flags indicate congestion marking enabled
+    BOOST_TEST(actualParams.getFlagBit(ndn::nfd::BIT_CONGESTION_MARKING_ENABLED));
   });
 
   updateFace(disableParams, false, [] (const ControlResponse& actual) {
-    ControlResponse expected(200, "OK");
-    BOOST_CHECK_EQUAL(actual.getCode(), expected.getCode());
-    BOOST_TEST_MESSAGE(actual.getText());
+    BOOST_TEST(actual.getCode() == 200, actual.getText());
 
-    if (actual.getBody().hasWire()) {
-      ControlParameters actualParams(actual.getBody());
-
-      BOOST_CHECK(actualParams.hasFaceId());
-      BOOST_CHECK(actualParams.hasFacePersistency());
-      // Check that congestion marking parameters changed, even though feature disabled
-      BOOST_REQUIRE(actualParams.hasBaseCongestionMarkingInterval());
-      BOOST_CHECK_EQUAL(actualParams.getBaseCongestionMarkingInterval(), 70_ms);
-      BOOST_REQUIRE(actualParams.hasDefaultCongestionThreshold());
-      BOOST_CHECK_EQUAL(actualParams.getDefaultCongestionThreshold(), 5000);
-      BOOST_REQUIRE(actualParams.hasFlags());
-      // Check if flags indicate marking disabled
-      BOOST_CHECK(!actualParams.getFlagBit(ndn::nfd::BIT_CONGESTION_MARKING_ENABLED));
-    }
-    else {
-      BOOST_ERROR("Disable: Response does not contain ControlParameters");
-    }
+    ControlParameters actualParams(actual.getBody());
+    BOOST_TEST(actualParams.hasFaceId());
+    BOOST_TEST(actualParams.hasFacePersistency());
+    // Check that congestion marking parameters changed, even though feature disabled
+    BOOST_TEST_REQUIRE(actualParams.hasBaseCongestionMarkingInterval());
+    BOOST_CHECK_EQUAL(actualParams.getBaseCongestionMarkingInterval(), 70_ms);
+    BOOST_TEST_REQUIRE(actualParams.hasDefaultCongestionThreshold());
+    BOOST_CHECK_EQUAL(actualParams.getDefaultCongestionThreshold(), 5000);
+    BOOST_TEST_REQUIRE(actualParams.hasFlags());
+    // Check if flags indicate marking disabled
+    BOOST_TEST(!actualParams.getFlagBit(ndn::nfd::BIT_CONGESTION_MARKING_ENABLED));
   });
 }
 
@@ -719,13 +474,18 @@
 {
   createFace();
 
-  // Send a command that does nothing (will return 200) and does not contain a FaceId
+  // Send a command that does nothing and does not contain a FaceId
   ControlParameters sentParams;
 
+  // Success case: FaceId is obtained automatically from IncomingFaceIdTag
   updateFace(sentParams, true, [] (const ControlResponse& actual) {
-    ControlResponse expected(200, "OK");
-    BOOST_REQUIRE_EQUAL(actual.getCode(), expected.getCode());
-    BOOST_TEST_MESSAGE(actual.getText());
+    BOOST_TEST(actual.getCode() == 200, actual.getText());
+  });
+
+  // Error case: IncomingFaceIdTag is missing
+  updateFace(sentParams, false, [] (const ControlResponse& actual) {
+    BOOST_TEST(actual.getCode() == 404);
+    BOOST_TEST(actual.getText() == "No FaceId specified and IncomingFaceId not available");
   });
 }
 
diff --git a/tests/daemon/mgmt/face-manager.t.cpp b/tests/daemon/mgmt/face-manager.t.cpp
index b0ad678..6d25143 100644
--- a/tests/daemon/mgmt/face-manager.t.cpp
+++ b/tests/daemon/mgmt/face-manager.t.cpp
@@ -43,7 +43,7 @@
 
 class FaceManagerFixture : public ManagerFixtureWithAuthenticator
 {
-public:
+protected:
   FaceManagerFixture()
     : m_faceSystem(m_faceTable, make_shared<ndn::net::NetworkMonitorStub>(0))
     , m_manager(m_faceSystem, m_dispatcher, *m_authenticator)
@@ -52,32 +52,20 @@
     setPrivilege("faces");
   }
 
-public:
   enum AddFaceFlags {
     REMOVE_LAST_NOTIFICATION = 1 << 0,
-    SET_SCOPE_LOCAL          = 1 << 1,
-    SET_URI_TEST             = 1 << 2,
-    RANDOMIZE_COUNTERS       = 1 << 3,
+    RANDOMIZE_COUNTERS       = 1 << 1,
   };
 
   /**
    * \brief Adds a face to the FaceTable.
    * \param flags bitwise OR'ed AddFaceFlags
    */
+  template<typename... Args>
   shared_ptr<Face>
-  addFace(unsigned int flags = 0)
+  addFace(unsigned int flags = 0, Args&&... args)
   {
-    std::string uri = "dummy://";
-    ndn::nfd::FaceScope scope = ndn::nfd::FACE_SCOPE_NON_LOCAL;
-
-    if (flags & SET_SCOPE_LOCAL) {
-      scope = ndn::nfd::FACE_SCOPE_LOCAL;
-    }
-    if (flags & SET_URI_TEST) {
-      uri = "test://";
-    }
-
-    auto face = make_shared<DummyFace>(uri, uri, scope);
+    auto face = make_shared<DummyFace>(std::forward<Args>(args)...);
     m_faceTable.add(face);
 
     if (flags & RANDOMIZE_COUNTERS) {
@@ -96,7 +84,7 @@
 
     advanceClocks(1_ms, 10); // wait for notification posted
     if (flags & REMOVE_LAST_NOTIFICATION) {
-      BOOST_REQUIRE(!m_responses.empty());
+      BOOST_TEST_REQUIRE(!m_responses.empty());
       m_responses.pop_back();
     }
 
@@ -124,7 +112,7 @@
 
 BOOST_AUTO_TEST_CASE(Existing)
 {
-  auto addedFace = addFace(REMOVE_LAST_NOTIFICATION | SET_SCOPE_LOCAL); // clear notification for creation
+  auto addedFace = addFace(REMOVE_LAST_NOTIFICATION); // clear notification for creation
 
   auto parameters = ControlParameters().setFaceId(addedFace->getId());
   auto req = makeControlCommandRequest(FaceManagerCommandFixture::DESTROY_REQUEST, parameters);
@@ -158,7 +146,7 @@
 {
   const size_t nEntries = 32;
   for (size_t i = 0; i < nEntries; ++i) {
-    addFace(REMOVE_LAST_NOTIFICATION | SET_URI_TEST | RANDOMIZE_COUNTERS);
+    addFace(REMOVE_LAST_NOTIFICATION | RANDOMIZE_COUNTERS, "test://", "test://");
   }
 
   receiveInterest(Interest("/localhost/nfd/faces/list").setCanBePrefix(true));
@@ -167,9 +155,9 @@
   content.parse();
   BOOST_REQUIRE_EQUAL(content.elements().size(), nEntries);
 
-  std::set<FaceId> faceIds;
-  for (size_t idx = 0; idx < nEntries; ++idx) {
-    ndn::nfd::FaceStatus decodedStatus(content.elements()[idx]);
+  std::unordered_set<FaceId> faceIds;
+  for (const auto& el : content.elements()) {
+    ndn::nfd::FaceStatus decodedStatus(el);
     BOOST_TEST_INFO_SCOPE(decodedStatus);
     BOOST_CHECK(m_faceTable.get(decodedStatus.getFaceId()) != nullptr);
     faceIds.insert(decodedStatus.getFaceId());
@@ -178,16 +166,15 @@
 
   ndn::nfd::FaceStatus status(content.elements().front());
   const Face* face = m_faceTable.get(status.getFaceId());
-  BOOST_REQUIRE(face != nullptr);
+  BOOST_TEST_REQUIRE(face != nullptr);
 
   // check face properties
   BOOST_CHECK_EQUAL(status.getRemoteUri(), face->getRemoteUri().toString());
   BOOST_CHECK_EQUAL(status.getLocalUri(), face->getLocalUri().toString());
-  BOOST_CHECK_EQUAL(status.hasExpirationPeriod(),
-                    face->getExpirationTime() != time::steady_clock::time_point::max());
-  BOOST_CHECK_EQUAL(status.getFaceScope(), face->getScope());
-  BOOST_CHECK_EQUAL(status.getFacePersistency(), face->getPersistency());
-  BOOST_CHECK_EQUAL(status.getLinkType(), face->getLinkType());
+  BOOST_TEST(!status.hasExpirationPeriod());
+  BOOST_CHECK_EQUAL(status.getFaceScope(), ndn::nfd::FACE_SCOPE_NON_LOCAL);
+  BOOST_CHECK_EQUAL(status.getFacePersistency(), ndn::nfd::FACE_PERSISTENCY_PERSISTENT);
+  BOOST_CHECK_EQUAL(status.getLinkType(), ndn::nfd::LINK_TYPE_POINT_TO_POINT);
 
   // check link service properties
   BOOST_CHECK_EQUAL(status.hasBaseCongestionMarkingInterval(), false);
@@ -195,7 +182,7 @@
   BOOST_CHECK_EQUAL(status.getFlags(), 0);
 
   // check transport properties
-  BOOST_CHECK_EQUAL(status.hasMtu(), true);
+  BOOST_TEST_REQUIRE(status.hasMtu());
   BOOST_CHECK_EQUAL(status.getMtu(), ndn::MAX_NDN_PACKET_SIZE);
 
   // check counters
@@ -213,56 +200,82 @@
 {
   using ndn::nfd::FaceQueryFilter;
 
-  auto face1 = addFace(REMOVE_LAST_NOTIFICATION); // dummy://
-  auto face2 = addFace(REMOVE_LAST_NOTIFICATION | SET_SCOPE_LOCAL); // dummy://, local
-  auto face3 = addFace(REMOVE_LAST_NOTIFICATION | SET_URI_TEST); // test://
+  auto face1 = addFace(REMOVE_LAST_NOTIFICATION, "dummy://one", "dummy://one",
+                       ndn::nfd::FACE_SCOPE_NON_LOCAL,
+                       ndn::nfd::FACE_PERSISTENCY_PERSISTENT,
+                       ndn::nfd::LINK_TYPE_POINT_TO_POINT);
+  auto face2 = addFace(REMOVE_LAST_NOTIFICATION, "dummy://two", "remote://foo",
+                       ndn::nfd::FACE_SCOPE_LOCAL,
+                       ndn::nfd::FACE_PERSISTENCY_PERSISTENT,
+                       ndn::nfd::LINK_TYPE_POINT_TO_POINT);
+  auto face3 = addFace(REMOVE_LAST_NOTIFICATION, "local://bar", "remote://foo",
+                       ndn::nfd::FACE_SCOPE_NON_LOCAL,
+                       ndn::nfd::FACE_PERSISTENCY_PERMANENT,
+                       ndn::nfd::LINK_TYPE_POINT_TO_POINT);
+  auto face4 = addFace(REMOVE_LAST_NOTIFICATION, "local://bar", "dummy://four",
+                       ndn::nfd::FACE_SCOPE_NON_LOCAL,
+                       ndn::nfd::FACE_PERSISTENCY_PERSISTENT,
+                       ndn::nfd::LINK_TYPE_AD_HOC);
 
   auto generateQuery = [] (const auto& filter) {
     return Interest(Name("/localhost/nfd/faces/query").append(filter.wireEncode()))
            .setCanBePrefix(true);
   };
 
-  auto schemeQuery = generateQuery(FaceQueryFilter().setUriScheme("dummy"));
+  auto allQuery = generateQuery(FaceQueryFilter());
+  auto noneQuery = generateQuery(FaceQueryFilter().setUriScheme("nomatch"));
   auto idQuery = generateQuery(FaceQueryFilter().setFaceId(face1->getId()));
-  auto scopeQuery = generateQuery(FaceQueryFilter().setFaceScope(ndn::nfd::FACE_SCOPE_NON_LOCAL));
+  auto schemeQuery = generateQuery(FaceQueryFilter().setUriScheme("dummy"));
+  auto remoteQuery = generateQuery(FaceQueryFilter().setRemoteUri("remote://foo"));
+  auto localQuery = generateQuery(FaceQueryFilter().setLocalUri("local://bar"));
+  auto scopeQuery = generateQuery(FaceQueryFilter().setFaceScope(ndn::nfd::FACE_SCOPE_LOCAL));
+  auto persistencyQuery = generateQuery(FaceQueryFilter().setFacePersistency(ndn::nfd::FACE_PERSISTENCY_PERMANENT));
+  auto linkQuery = generateQuery(FaceQueryFilter().setLinkType(ndn::nfd::LINK_TYPE_AD_HOC));
   auto invalidQueryName = Name("/localhost/nfd/faces/query")
                           .append(ndn::makeStringBlock(tlv::Content, "invalid"));
   auto invalidQuery = Interest(invalidQueryName).setCanBePrefix(true);
 
-  receiveInterest(schemeQuery); // face1 and face2 expected
+  receiveInterest(allQuery); // all 4 faces expected
+  receiveInterest(noneQuery); // no faces expected
   receiveInterest(idQuery); // face1 expected
-  receiveInterest(scopeQuery); // face1 and face3 expected
+  receiveInterest(schemeQuery); // face1, face2, face4 expected
+  receiveInterest(remoteQuery); // face2 and face3 expected
+  receiveInterest(localQuery); // face3 and face4 expected
+  receiveInterest(scopeQuery); // face2 expected
+  receiveInterest(persistencyQuery); // face3 expected
+  receiveInterest(linkQuery); // face4 expected
   receiveInterest(invalidQuery); // nack expected
 
-  BOOST_REQUIRE_EQUAL(m_responses.size(), 4);
+  BOOST_REQUIRE_EQUAL(m_responses.size(), 10);
 
-  Block content;
-  ndn::nfd::FaceStatus status;
+  auto checkQueryResponse = [this] (size_t idx, const std::unordered_set<FaceId>& expected) {
+    BOOST_TEST_INFO("Response index = " << idx);
+    const Block& content = m_responses.at(idx).getContent();
+    content.parse();
+    std::unordered_set<FaceId> actual;
+    std::string actualStr;
+    for (const auto& el : content.elements()) {
+      ndn::nfd::FaceStatus status(el);
+      actual.insert(status.getFaceId());
+      actualStr += std::to_string(status.getFaceId()) + " ";
+    }
+    BOOST_TEST_INFO("Content = { " << actualStr << "}");
+    BOOST_TEST(actual == expected);
+  };
 
-  content = m_responses[0].getContent();
-  content.parse();
-  BOOST_CHECK_EQUAL(content.elements().size(), 2); // face1 and face2
-  status.wireDecode(content.elements()[0]);
-  BOOST_CHECK_EQUAL(face1->getId(), status.getFaceId());
-  status.wireDecode(content.elements()[1]);
-  BOOST_CHECK_EQUAL(face2->getId(), status.getFaceId());
+  checkQueryResponse(0, {face1->getId(), face2->getId(), face3->getId(), face4->getId()});
+  checkQueryResponse(1, {});
+  checkQueryResponse(2, {face1->getId()});
+  checkQueryResponse(3, {face1->getId(), face2->getId(), face4->getId()});
+  checkQueryResponse(4, {face2->getId(), face3->getId()});
+  checkQueryResponse(5, {face3->getId(), face4->getId()});
+  checkQueryResponse(6, {face2->getId()});
+  checkQueryResponse(7, {face3->getId()});
+  checkQueryResponse(8, {face4->getId()});
 
-  content = m_responses[1].getContent();
-  content.parse();
-  BOOST_CHECK_EQUAL(content.elements().size(), 1); // face1
-  status.wireDecode(content.elements()[0]);
-  BOOST_CHECK_EQUAL(face1->getId(), status.getFaceId());
-
-  content = m_responses[2].getContent();
-  content.parse();
-  BOOST_CHECK_EQUAL(content.elements().size(), 2); // face1 and face3
-  status.wireDecode(content.elements()[0]);
-  BOOST_CHECK_EQUAL(face1->getId(), status.getFaceId());
-  status.wireDecode(content.elements()[1]);
-  BOOST_CHECK_EQUAL(face3->getId(), status.getFaceId());
-
-  ControlResponse expectedResponse(400, "Malformed filter"); // nack, 400, malformed filter
-  BOOST_CHECK_EQUAL(checkResponse(3, invalidQueryName, expectedResponse, tlv::ContentType_Nack),
+  // nack, 400, malformed filter
+  ControlResponse expectedResponse(400, "Malformed filter");
+  BOOST_CHECK_EQUAL(checkResponse(9, invalidQueryName, expectedResponse, tlv::ContentType_Nack),
                     CheckResponseResult::OK);
 }
 
@@ -330,10 +343,10 @@
   content.parse();
   BOOST_REQUIRE_EQUAL(content.elements().size(), nEntries);
 
-  for (size_t idx = 0; idx < nEntries; ++idx) {
-    ndn::nfd::ChannelStatus decodedStatus(content.elements()[idx]);
+  for (const auto& el : content.elements()) {
+    ndn::nfd::ChannelStatus decodedStatus(el);
     BOOST_TEST_INFO_SCOPE(decodedStatus);
-    BOOST_CHECK(addedChannels.find(decodedStatus.getLocalUri()) != addedChannels.end());
+    BOOST_TEST(addedChannels.count(decodedStatus.getLocalUri()) == 1);
   }
 }
 
diff --git a/tests/daemon/mgmt/fib-manager.t.cpp b/tests/daemon/mgmt/fib-manager.t.cpp
index af03ae1..9cab78f 100644
--- a/tests/daemon/mgmt/fib-manager.t.cpp
+++ b/tests/daemon/mgmt/fib-manager.t.cpp
@@ -147,7 +147,7 @@
   case FibManagerFixture::CheckNextHopResult::WRONG_COST:
     return os << "WRONG_COST";
   }
-  return os << static_cast<int>(result);
+  return os << ndn::to_underlying(result);
 }
 
 BOOST_AUTO_TEST_SUITE(Mgmt)
@@ -422,14 +422,14 @@
   BOOST_REQUIRE_EQUAL(content.elements().size(), nEntries);
 
   std::vector<ndn::nfd::FibEntry> receivedRecords, expectedRecords;
-  for (size_t idx = 0; idx < nEntries; ++idx) {
-    ndn::nfd::FibEntry decodedEntry(content.elements()[idx]);
+  for (const auto& el : content.elements()) {
+    ndn::nfd::FibEntry decodedEntry(el);
     BOOST_TEST_INFO_SCOPE(decodedEntry);
     receivedRecords.push_back(decodedEntry);
     actualPrefixes.erase(decodedEntry.getPrefix());
 
     auto matchedEntry = m_fib.findExactMatch(decodedEntry.getPrefix());
-    BOOST_REQUIRE(matchedEntry != nullptr);
+    BOOST_TEST_REQUIRE(matchedEntry != nullptr);
 
     expectedRecords.emplace_back();
     expectedRecords.back().setPrefix(matchedEntry->getPrefix());
diff --git a/tests/daemon/mgmt/forwarder-status-manager.t.cpp b/tests/daemon/mgmt/forwarder-status-manager.t.cpp
index 56db14a..039a101 100644
--- a/tests/daemon/mgmt/forwarder-status-manager.t.cpp
+++ b/tests/daemon/mgmt/forwarder-status-manager.t.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2014-2023,  Regents of the University of California,
+ * Copyright (c) 2014-2025,  Regents of the University of California,
  *                           Arizona Board of Regents,
  *                           Colorado State University,
  *                           University Pierre & Marie Curie, Sorbonne University,
@@ -85,9 +85,8 @@
   auto afterRequest = time::system_clock::now();
 
   // verify
-  Block response = this->concatenateResponses(0, m_responses.size());
-  ndn::nfd::ForwarderStatus status;
-  BOOST_REQUIRE_NO_THROW(status.wireDecode(response));
+  Block content = concatenateResponses();
+  ndn::nfd::ForwarderStatus status(content);
 
   BOOST_CHECK_EQUAL(status.getNfdVersion(), NFD_VERSION_BUILD_STRING);
   BOOST_CHECK_EQUAL(time::toUnixTimestamp(status.getStartTimestamp()), time::toUnixTimestamp(m_startTime));
diff --git a/tests/daemon/mgmt/manager-common-fixture.cpp b/tests/daemon/mgmt/manager-common-fixture.cpp
index e918cdb..4a75983 100644
--- a/tests/daemon/mgmt/manager-common-fixture.cpp
+++ b/tests/daemon/mgmt/manager-common-fixture.cpp
@@ -29,7 +29,8 @@
 
 InterestSignerFixture::InterestSignerFixture()
 {
-  BOOST_REQUIRE(m_keyChain.createIdentity(DEFAULT_COMMAND_SIGNER_IDENTITY));
+  auto id = m_keyChain.createIdentity(DEFAULT_COMMAND_SIGNER_IDENTITY);
+  BOOST_VERIFY(id);
 }
 
 Interest
@@ -80,18 +81,11 @@
   advanceClocks(1_ms);
 }
 
-ControlResponse
-ManagerCommonFixture::makeResponse(uint32_t code, const std::string& text,
-                                   const ControlParameters& parameters)
-{
-  return ControlResponse(code, text).setBody(parameters.wireEncode());
-}
-
 ManagerCommonFixture::CheckResponseResult
 ManagerCommonFixture::checkResponse(size_t idx,
                                     const Name& expectedName,
                                     const ControlResponse& expectedResponse,
-                                    int expectedContentType /*= -1*/)
+                                    int expectedContentType)
 {
   Data data;
   try {
@@ -103,7 +97,7 @@
   }
 
   if (data.getName() != expectedName) {
-    BOOST_TEST_MESSAGE("response[" << idx << "] has wrong name " << data.getName());
+    BOOST_TEST_MESSAGE("response[" << idx << "] has wrong name " << std::quoted(data.getName().toUri()));
     return CheckResponseResult::WRONG_NAME;
   }
 
@@ -117,8 +111,8 @@
   try {
     response.wireDecode(data.getContent().blockFromValue());
   }
-  catch (const tlv::Error&) {
-    BOOST_TEST_MESSAGE("response[" << idx << "] cannot be decoded");
+  catch (const tlv::Error& e) {
+    BOOST_TEST_MESSAGE("response[" << idx << "] cannot be decoded: " << e.what());
     return CheckResponseResult::INVALID_RESPONSE;
   }
 
@@ -128,7 +122,7 @@
   }
 
   if (response.getText() != expectedResponse.getText()) {
-    BOOST_TEST_MESSAGE("response[" << idx << "] has wrong StatusText " << response.getText());
+    BOOST_TEST_MESSAGE("response[" << idx << "] has wrong StatusText " << std::quoted(response.getText()));
     return CheckResponseResult::WRONG_TEXT;
   }
 
@@ -138,7 +132,8 @@
     BOOST_TEST_MESSAGE("response[" << idx << "] has wrong body size " << body.value_size());
     return CheckResponseResult::WRONG_BODY_SIZE;
   }
-  if (body.value_size() > 0 && memcmp(body.value(), expectedBody.value(), body.value_size()) != 0) {
+
+  if (!std::equal(body.value_begin(), body.value_end(), expectedBody.value_begin())) {
     BOOST_TEST_MESSAGE("response[" << idx << "] has wrong body value");
     return CheckResponseResult::WRONG_BODY_VALUE;
   }
@@ -176,26 +171,26 @@
 operator<<(std::ostream& os, ManagerCommonFixture::CheckResponseResult result)
 {
   switch (result) {
-    case ManagerCommonFixture::CheckResponseResult::OK:
-      return os << "OK";
-    case ManagerCommonFixture::CheckResponseResult::OUT_OF_BOUNDARY:
-      return os << "OUT_OF_BOUNDARY";
-    case ManagerCommonFixture::CheckResponseResult::WRONG_NAME:
-      return os << "WRONG_NAME";
-    case ManagerCommonFixture::CheckResponseResult::WRONG_CONTENT_TYPE:
-      return os << "WRONG_CONTENT_TYPE";
-    case ManagerCommonFixture::CheckResponseResult::INVALID_RESPONSE:
-      return os << "INVALID_RESPONSE";
-    case ManagerCommonFixture::CheckResponseResult::WRONG_CODE:
-      return os << "WRONG_CODE";
-    case ManagerCommonFixture::CheckResponseResult::WRONG_TEXT:
-      return os << "WRONG_TEXT";
-    case ManagerCommonFixture::CheckResponseResult::WRONG_BODY_SIZE:
-      return os << "WRONG_BODY_SIZE";
-    case ManagerCommonFixture::CheckResponseResult::WRONG_BODY_VALUE:
-      return os << "WRONG_BODY_VALUE";
+  case ManagerCommonFixture::CheckResponseResult::OK:
+    return os << "OK";
+  case ManagerCommonFixture::CheckResponseResult::OUT_OF_BOUNDARY:
+    return os << "OUT_OF_BOUNDARY";
+  case ManagerCommonFixture::CheckResponseResult::WRONG_NAME:
+    return os << "WRONG_NAME";
+  case ManagerCommonFixture::CheckResponseResult::WRONG_CONTENT_TYPE:
+    return os << "WRONG_CONTENT_TYPE";
+  case ManagerCommonFixture::CheckResponseResult::INVALID_RESPONSE:
+    return os << "INVALID_RESPONSE";
+  case ManagerCommonFixture::CheckResponseResult::WRONG_CODE:
+    return os << "WRONG_CODE";
+  case ManagerCommonFixture::CheckResponseResult::WRONG_TEXT:
+    return os << "WRONG_TEXT";
+  case ManagerCommonFixture::CheckResponseResult::WRONG_BODY_SIZE:
+    return os << "WRONG_BODY_SIZE";
+  case ManagerCommonFixture::CheckResponseResult::WRONG_BODY_VALUE:
+    return os << "WRONG_BODY_VALUE";
   }
-  return os << static_cast<int>(result);
+  return os << ndn::to_underlying(result);
 }
 
 void
diff --git a/tests/daemon/mgmt/manager-common-fixture.hpp b/tests/daemon/mgmt/manager-common-fixture.hpp
index 22d9120..a28611a 100644
--- a/tests/daemon/mgmt/manager-common-fixture.hpp
+++ b/tests/daemon/mgmt/manager-common-fixture.hpp
@@ -84,7 +84,7 @@
  */
 class ManagerCommonFixture : public InterestSignerFixture
 {
-public: // initialize
+public:
   /**
    * @brief Add `/localhost/nfd` as a top prefix to the dispatcher.
    *
@@ -93,21 +93,20 @@
   void
   setTopPrefix();
 
-public: // test
   /**
    * @brief Cause management to receive an Interest.
    *
-   * call DummyClientFace::receive to receive Interest and then call advanceClocks to ensure
-   * the Interest dispatched
-   *
-   * @param interest the Interest to receive
+   * Calls DummyClientFace::receive() to receive the Interest and then calls advanceClocks()
+   * to ensure the Interest is dispatched.
    */
   void
   receiveInterest(const Interest& interest);
 
-public: // verify
   static ControlResponse
-  makeResponse(uint32_t code, const std::string& text, const ControlParameters& parameters);
+  makeResponse(uint32_t code, const std::string& text, const ControlParameters& parameters)
+  {
+    return ControlResponse(code, text).setBody(parameters.wireEncode());
+  }
 
   enum class CheckResponseResult {
     OK,
@@ -118,7 +117,7 @@
     WRONG_CODE,
     WRONG_TEXT,
     WRONG_BODY_SIZE,
-    WRONG_BODY_VALUE
+    WRONG_BODY_VALUE,
   };
 
   /**
diff --git a/tests/daemon/mgmt/rib-manager.t.cpp b/tests/daemon/mgmt/rib-manager.t.cpp
index 2e876d5..6da89d3 100644
--- a/tests/daemon/mgmt/rib-manager.t.cpp
+++ b/tests/daemon/mgmt/rib-manager.t.cpp
@@ -186,11 +186,8 @@
     auto replyFibAddCommand = [this] (const Interest& interest) {
       ControlParameters params(interest.getName().at(4).blockFromValue());
       BOOST_CHECK(params.getName() == "/localhost/nfd/rib" || params.getName() == "/localhop/nfd/rib");
-      params.setFaceId(1)
-            .setCost(0);
-      ControlResponse resp;
-      resp.setCode(200)
-          .setBody(params.wireEncode());
+      params.setFaceId(1).setCost(0);
+      ControlResponse resp = makeResponse(200, "OK", params);
 
       auto data = make_shared<Data>(interest.getName());
       data->setContent(resp.wireEncode());
@@ -603,8 +600,8 @@
   BOOST_REQUIRE_EQUAL(content.elements().size(), nEntries);
 
   std::vector<ndn::nfd::RibEntry> receivedRecords, expectedRecords;
-  for (size_t idx = 0; idx < nEntries; ++idx) {
-    ndn::nfd::RibEntry decodedEntry(content.elements()[idx]);
+  for (const auto& el : content.elements()) {
+    ndn::nfd::RibEntry decodedEntry(el);
     BOOST_TEST_INFO_SCOPE(decodedEntry);
     receivedRecords.push_back(decodedEntry);
     actualPrefixes.erase(decodedEntry.getName());
@@ -613,7 +610,7 @@
     BOOST_REQUIRE(matchedEntryIt != m_rib.end());
 
     auto matchedEntry = matchedEntryIt->second;
-    BOOST_REQUIRE(matchedEntry != nullptr);
+    BOOST_TEST_REQUIRE(matchedEntry != nullptr);
 
     expectedRecords.emplace_back();
     expectedRecords.back().setName(matchedEntry->getName());
@@ -664,8 +661,8 @@
   auto it2 = m_rib.find("/test-remove-invalid-faces-2");
   BOOST_CHECK(it2 == m_rib.end());
   BOOST_REQUIRE(it1 != m_rib.end());
-  BOOST_CHECK(it1->second->hasFaceId(1));
-  BOOST_CHECK(!it1->second->hasFaceId(2));
+  BOOST_TEST(it1->second->hasFaceId(1));
+  BOOST_TEST(!it1->second->hasFaceId(2));
 }
 
 BOOST_AUTO_TEST_CASE(OnNotification)
diff --git a/tests/daemon/mgmt/strategy-choice-manager.t.cpp b/tests/daemon/mgmt/strategy-choice-manager.t.cpp
index 6cd2e70..aff0bee 100644
--- a/tests/daemon/mgmt/strategy-choice-manager.t.cpp
+++ b/tests/daemon/mgmt/strategy-choice-manager.t.cpp
@@ -91,10 +91,7 @@
   ControlParameters expectedParams;
   expectedParams.setName("/A")
                 .setStrategy(strategyNameP); // response should have versioned strategy name
-  ControlResponse expectedResp;
-  expectedResp.setCode(200)
-              .setText("OK")
-              .setBody(expectedParams.wireEncode());
+  ControlResponse expectedResp = makeResponse(200, "OK", expectedParams);
   BOOST_CHECK_EQUAL(checkResponse(0, req.getName(), expectedResp),
                     CheckResponseResult::OK);
 
@@ -146,7 +143,7 @@
 BOOST_AUTO_TEST_CASE(UnsetSuccess)
 {
   auto insertRes = sc.insert("/A", strategyNameP);
-  BOOST_REQUIRE(insertRes);
+  BOOST_TEST_REQUIRE(insertRes);
 
   ControlParameters reqParams;
   reqParams.setName("/A");
@@ -154,10 +151,7 @@
   receiveInterest(req);
 
   ControlParameters expectedParams(reqParams);
-  ControlResponse expectedResp;
-  expectedResp.setCode(200)
-              .setText("OK")
-              .setBody(expectedParams.wireEncode());
+  ControlResponse expectedResp = makeResponse(200, "OK", expectedParams);
   BOOST_CHECK_EQUAL(checkResponse(0, req.getName(), expectedResp),
                     CheckResponseResult::OK);
 
@@ -172,10 +166,7 @@
   receiveInterest(req);
 
   ControlParameters expectedParams(reqParams);
-  ControlResponse expectedResp;
-  expectedResp.setCode(200)
-              .setText("OK")
-              .setBody(expectedParams.wireEncode());
+  ControlResponse expectedResp = makeResponse(200, "OK", expectedParams);
   BOOST_CHECK_EQUAL(checkResponse(0, req.getName(), expectedResp),
                     CheckResponseResult::OK);
 
@@ -201,7 +192,7 @@
 BOOST_AUTO_TEST_CASE(StrategyChoiceDataset)
 {
   std::map<Name, Name> expected; // namespace => strategy instance name
-  for (const strategy_choice::Entry& entry : sc) {
+  for (const auto& entry : sc) {
     expected[entry.getPrefix()] = entry.getStrategyInstanceName();
   }
 
@@ -211,7 +202,7 @@
     Name strategy = DummyStrategy::getStrategyName(i);
 
     auto insertRes = sc.insert(name, strategy);
-    BOOST_CHECK(insertRes);
+    BOOST_TEST(insertRes);
     expected[name] = strategy;
   }
 
@@ -221,8 +212,8 @@
   dataset.parse();
   BOOST_CHECK_EQUAL(dataset.elements_size(), expected.size());
 
-  for (auto i = dataset.elements_begin(); i != dataset.elements_end(); ++i) {
-    ndn::nfd::StrategyChoice record(*i);
+  for (const auto& el : dataset.elements()) {
+    ndn::nfd::StrategyChoice record(el);
     BOOST_TEST_INFO_SCOPE(record);
     auto found = expected.find(record.getName());
     if (found == expected.end()) {