diff --git a/test/unitTest/syncHistory/syncHistory.cpp b/test/unitTest/syncHistory/syncHistory.cpp index d8a8f36c79ceafcfa7cdfe5c714e235d2f1f86e6..9da0f30a0f91dda96907b170f8d6f43e1e4051bb 100644 --- a/test/unitTest/syncHistory/syncHistory.cpp +++ b/test/unitTest/syncHistory/syncHistory.cpp @@ -208,11 +208,39 @@ void SyncHistoryTest::testCreateConversationWithMessagesThenAddDevice() { auto aliceAccount = Manager::instance().getAccount<JamiAccount>(aliceId); - // Start conversation auto convId = aliceAccount->startConversation(); + + std::mutex mtx; + std::unique_lock<std::mutex> lk {mtx}; + std::condition_variable cv; + std::map<std::string, std::shared_ptr<DRing::CallbackWrapperBase>> confHandlers; + auto conversationReady = false; + auto messageReceived = false; + confHandlers.insert(DRing::exportable_callback<DRing::ConversationSignal::MessageReceived>( + [&](const std::string& accountId, + const std::string& /* conversationId */, + std::map<std::string, std::string> /*message*/) { + messageReceived = true; + cv.notify_one(); + })); + confHandlers.insert(DRing::exportable_callback<DRing::ConversationSignal::ConversationReady>( + [&](const std::string& accountId, const std::string& conversationId) { + if (accountId == alice2Id && conversationId == convId) { + conversationReady = true; + cv.notify_one(); + } + })); + DRing::registerSignalHandlers(confHandlers); + confHandlers.clear(); + + // Start conversation + messageReceived = false; aliceAccount->sendMessage(convId, std::string("Message 1")); + CPPUNIT_ASSERT(cv.wait_for(lk, std::chrono::seconds(10), [&] { return messageReceived; })); aliceAccount->sendMessage(convId, std::string("Message 2")); + CPPUNIT_ASSERT(cv.wait_for(lk, std::chrono::seconds(10), [&] { return messageReceived; })); aliceAccount->sendMessage(convId, std::string("Message 3")); + CPPUNIT_ASSERT(cv.wait_for(lk, std::chrono::seconds(10), [&] { return messageReceived; })); // Now create alice2 auto aliceArchive = std::filesystem::current_path().string() + "/alice.gz"; @@ -228,21 +256,6 @@ SyncHistoryTest::testCreateConversationWithMessagesThenAddDevice() details[ConfProperties::ARCHIVE_PATH] = aliceArchive; alice2Id = Manager::instance().addAccount(details); - std::mutex mtx; - std::unique_lock<std::mutex> lk {mtx}; - std::condition_variable cv; - std::map<std::string, std::shared_ptr<DRing::CallbackWrapperBase>> confHandlers; - auto conversationReady = false; - confHandlers.insert(DRing::exportable_callback<DRing::ConversationSignal::ConversationReady>( - [&](const std::string& accountId, const std::string& conversationId) { - if (accountId == alice2Id && conversationId == convId) { - conversationReady = true; - cv.notify_one(); - } - })); - DRing::registerSignalHandlers(confHandlers); - confHandlers.clear(); - // Check if conversation is ready CPPUNIT_ASSERT(cv.wait_for(lk, std::chrono::seconds(60), [&]() { return conversationReady; })); auto alice2Account = Manager::instance().getAccount<JamiAccount>(alice2Id);