probe redirection CA side unittest
diff --git a/tests/unit-tests/ca-module.t.cpp b/tests/unit-tests/ca-module.t.cpp
index ff139c6..15e48df 100644
--- a/tests/unit-tests/ca-module.t.cpp
+++ b/tests/unit-tests/ca-module.t.cpp
@@ -161,6 +161,56 @@
BOOST_CHECK_EQUAL(count, 1);
}
+BOOST_AUTO_TEST_CASE(HandleProbeRedirection)
+{
+ auto identity = addIdentity(Name("/ndn"));
+ auto key = identity.getDefaultKey();
+ auto cert = key.getDefaultCertificate();
+
+ util::DummyClientFace face(io, m_keyChain, {true, true});
+ CaModule ca(face, m_keyChain, "tests/unit-tests/config-files/config-ca-5", "ca-storage-memory");
+ ca.setNameAssignmentFunction([&](const std::vector<std::tuple<std::string, std::string>>) -> std::vector<std::string> {
+ std::vector<std::string> result;
+ result.push_back("example");
+ return result;
+ });
+ advanceClocks(time::milliseconds(20), 60);
+
+ Interest interest("/ndn/CA/PROBE");
+ interest.setCanBePrefix(false);
+
+ Block paramTLV = makeEmptyBlock(tlv::ApplicationParameters);
+ paramTLV.push_back(makeStringBlock(tlv_parameter_key, "name"));
+ paramTLV.push_back(makeStringBlock(tlv_parameter_value, "zhiyi"));
+ paramTLV.encode();
+
+ interest.setApplicationParameters(paramTLV);
+
+ int count = 0;
+ face.onSendData.connect([&](const Data& response) {
+ count++;
+ BOOST_CHECK(security::verifySignature(response, cert));
+ Block contentBlock = response.getContent();
+ contentBlock.parse();
+
+ // Test CA sent redirections
+ BOOST_CHECK_EQUAL(true, contentBlock.get(tlv_probe_redirect).hasValue());
+ Block probeRedirect = contentBlock.get(tlv_probe_redirect);
+ probeRedirect.parse();
+ // Test the case where we have multiple probeRedirects
+ BOOST_CHECK_EQUAL(probeRedirect.elements().size(), 2)
+ for (const auto& item : probeRedirect.elements()) {
+ Name caName;
+ caName.wireDecode(item.get(tlv::Name));
+ // TODO: Checkout the format of the name
+ BOOST_CHECK_EQUAL(caName, "/ndn/example");
+ }
+ });
+ face.receive(interest);
+ advanceClocks(time::milliseconds(20), 60);
+ BOOST_CHECK_EQUAL(count, 1);
+}
+
BOOST_AUTO_TEST_CASE(HandleNew)
{
auto identity = addIdentity(Name("/ndn"));