src: add SigningInfo and version number to SegmentPublisher

refs: #4783

Change-Id: Id5dc8d6096ff729be0b8d0f971004281e0c09eb1
diff --git a/tests/test-full-sync.cpp b/tests/test-full-sync.cpp
index 01a5375..d8335b0 100644
--- a/tests/test-full-sync.cpp
+++ b/tests/test-full-sync.cpp
@@ -394,6 +394,46 @@
   }
 }
 
+BOOST_AUTO_TEST_CASE(DelayedSecondSegment)
+{
+  addNode(0);
+
+  for (int i = 0; i < 300; i++) {
+    Name prefixToPublish("userNode0-" + to_string(i));
+    nodes[0]->addUserNode(prefixToPublish);
+    nodes[0]->publishName(prefixToPublish);
+  }
+
+  advanceClocks(ndn::time::milliseconds(10), 100);
+
+  Name syncInterestName(syncPrefix);
+  IBLT iblt(40);
+  iblt.appendToName(syncInterestName);
+
+  nodes[0]->onSyncInterest(syncPrefix, Interest(syncInterestName));
+
+  advanceClocks(ndn::time::milliseconds(10));
+
+  BOOST_CHECK_EQUAL(nodes[0]->m_segmentPublisher.m_ims.size(), 2);
+  // Expire contents from segmentPublisher
+  advanceClocks(ndn::time::milliseconds(10), 100);
+  BOOST_CHECK_EQUAL(nodes[0]->m_segmentPublisher.m_ims.size(), 0);
+
+  // Get data name from face and increase segment number to form next interest
+  Name dataName = faces[0]->sentData.front().getName();
+  Name interestName = dataName.getSubName(0, dataName.size() - 1);
+  interestName.appendSegment(1);
+  faces[0]->sentData.clear();
+
+  nodes[0]->onSyncInterest(syncPrefix, Interest(interestName));
+  advanceClocks(ndn::time::milliseconds(10));
+
+  // Should have repopulated SegmentPublisher
+  BOOST_CHECK_EQUAL(nodes[0]->m_segmentPublisher.m_ims.size(), 2);
+  // Should have received the second data segment this time
+  BOOST_CHECK_EQUAL(faces[0]->sentData.front().getName()[-1].toSegment(), 1);
+}
+
 BOOST_AUTO_TEST_SUITE_END()
 
 } // namespace psync
\ No newline at end of file