diff --git a/test/unitTest/conversation/conversation.cpp b/test/unitTest/conversation/conversation.cpp index 790d487255af5b615b8582620b2ff1c0cad636d8..904a45ed6d22ea7a7d2a737870df751fa6b5ad3c 100644 --- a/test/unitTest/conversation/conversation.cpp +++ b/test/unitTest/conversation/conversation.cpp @@ -1428,9 +1428,9 @@ ConversationTest::testBanDevice() voteMessageGenerated = false, bob2GetMessage = false, bobGetMessage = false; confHandlers.insert( DRing::exportable_callback<DRing::ConversationSignal::ConversationRequestReceived>( - [&](const std::string& /*accountId* /, - const std::string& /* conversationId * /, - std::map<std::string, std::string> /*metadatas* /) { + [&](const std::string&, + const std::string&, + std::map<std::string, std::string>) { requestReceived = true; cv.notify_one(); })); @@ -2182,9 +2182,7 @@ ConversationTest::testMemberCannotBanOther() carlaConnected = false; confHandlers.insert( DRing::exportable_callback<DRing::ConversationSignal::ConversationRequestReceived>( - [&](const std::string& accountId, - const std::string& /* conversationId */, - std::map<std::string, std::string> /*metadatas*/) { + [&](const std::string&, const std::string&, std::map<std::string, std::string>) { requestReceived = true; cv.notify_one(); })); @@ -3010,7 +3008,8 @@ ConversationTest::testMemberJoinsNoBadFile() std::unique_lock<std::mutex> lk {mtx}; std::condition_variable cv; std::map<std::string, std::shared_ptr<DRing::CallbackWrapperBase>> confHandlers; - bool conversationReady = false, errorDetected = false, carlaConnected = false; + bool conversationReady = false, errorDetected = false, carlaConnected = false, + memberMessageGenerated = false; confHandlers.insert(DRing::exportable_callback<DRing::ConversationSignal::ConversationReady>( [&](const std::string& accountId, const std::string& /* conversationId */) { if (accountId == carlaId) { @@ -3018,12 +3017,21 @@ ConversationTest::testMemberJoinsNoBadFile() cv.notify_one(); } })); + confHandlers.insert(DRing::exportable_callback<DRing::ConversationSignal::MessageReceived>( + [&](const std::string& accountId, + const std::string& conversationId, + std::map<std::string, std::string> message) { + if (accountId == aliceId && conversationId == convId && message["type"] == "member") { + memberMessageGenerated = true; + cv.notify_one(); + } + })); confHandlers.insert( DRing::exportable_callback<DRing::ConfigurationSignal::VolatileDetailsChanged>( [&](const std::string&, const std::map<std::string, std::string>&) { auto details = carlaAccount->getVolatileAccountDetails(); - auto daemonStatus = details[DRing::Account::ConfProperties::Registration::STATUS]; - if (daemonStatus == "REGISTERED") { + auto deviceAnnounced = details[DRing::Account::VolatileProperties::DEVICE_ANNOUNCED]; + if (deviceAnnounced == "true") { carlaConnected = true; cv.notify_one(); } @@ -3040,6 +3048,7 @@ ConversationTest::testMemberJoinsNoBadFile() DRing::registerSignalHandlers(confHandlers); aliceAccount->addConversationMember(convId, carlaUri, false); + CPPUNIT_ASSERT(cv.wait_for(lk, std::chrono::seconds(5), [&] { return memberMessageGenerated; })); // Cp conversations & convInfo auto repoPathAlice = fileutils::get_data_dir() + DIR_SEPARATOR_STR @@ -3057,15 +3066,14 @@ ConversationTest::testMemberJoinsNoBadFile() // Accept for alice and makes different heads addFile(carlaAccount, convId, "BADFILE"); ConversationRepository repo(carlaAccount, convId); - repo.join(); // Start Carla, should merge and all messages should be there - Manager::instance().sendRegister(carlaId, true); carlaAccount->loadConversations(); // Because of the copy + Manager::instance().sendRegister(carlaId, true); CPPUNIT_ASSERT(cv.wait_for(lk, std::chrono::seconds(30), [&] { return carlaConnected; })); - carlaAccount->sendMessage(convId, "hi"s); errorDetected = false; + carlaAccount->sendMessage(convId, "hi"s); CPPUNIT_ASSERT(cv.wait_for(lk, std::chrono::seconds(60), [&] { return errorDetected; })); DRing::unregisterSignalHandlers(); @@ -3084,7 +3092,8 @@ ConversationTest::testMemberAddedNoCertificate() std::unique_lock<std::mutex> lk {mtx}; std::condition_variable cv; std::map<std::string, std::shared_ptr<DRing::CallbackWrapperBase>> confHandlers; - bool conversationReady = false, errorDetected = false, carlaConnected = false; + bool conversationReady = false, errorDetected = false, carlaConnected = false, + memberMessageGenerated = false; confHandlers.insert(DRing::exportable_callback<DRing::ConversationSignal::ConversationReady>( [&](const std::string& accountId, const std::string& /* conversationId */) { if (accountId == carlaId) { @@ -3092,12 +3101,21 @@ ConversationTest::testMemberAddedNoCertificate() cv.notify_one(); } })); + confHandlers.insert(DRing::exportable_callback<DRing::ConversationSignal::MessageReceived>( + [&](const std::string& accountId, + const std::string& conversationId, + std::map<std::string, std::string> message) { + if (accountId == aliceId && conversationId == convId && message["type"] == "member") { + memberMessageGenerated = true; + cv.notify_one(); + } + })); confHandlers.insert( DRing::exportable_callback<DRing::ConfigurationSignal::VolatileDetailsChanged>( [&](const std::string&, const std::map<std::string, std::string>&) { auto details = carlaAccount->getVolatileAccountDetails(); - auto daemonStatus = details[DRing::Account::ConfProperties::Registration::STATUS]; - if (daemonStatus == "REGISTERED") { + auto deviceAnnounced = details[DRing::Account::VolatileProperties::DEVICE_ANNOUNCED]; + if (deviceAnnounced == "true") { carlaConnected = true; cv.notify_one(); } @@ -3114,6 +3132,7 @@ ConversationTest::testMemberAddedNoCertificate() DRing::registerSignalHandlers(confHandlers); aliceAccount->addConversationMember(convId, carlaUri, false); + CPPUNIT_ASSERT(cv.wait_for(lk, std::chrono::seconds(5), [&] { return memberMessageGenerated; })); // Cp conversations & convInfo auto repoPathAlice = fileutils::get_data_dir() + DIR_SEPARATOR_STR @@ -3167,7 +3186,8 @@ ConversationTest::testMemberJoinsInviteRemoved() std::unique_lock<std::mutex> lk {mtx}; std::condition_variable cv; std::map<std::string, std::shared_ptr<DRing::CallbackWrapperBase>> confHandlers; - bool conversationReady = false, errorDetected = false, carlaConnected = false; + bool conversationReady = false, errorDetected = false, carlaConnected = false, + memberMessageGenerated = false; confHandlers.insert(DRing::exportable_callback<DRing::ConversationSignal::ConversationReady>( [&](const std::string& accountId, const std::string& /* conversationId */) { if (accountId == carlaId) { @@ -3175,12 +3195,21 @@ ConversationTest::testMemberJoinsInviteRemoved() cv.notify_one(); } })); + confHandlers.insert(DRing::exportable_callback<DRing::ConversationSignal::MessageReceived>( + [&](const std::string& accountId, + const std::string& conversationId, + std::map<std::string, std::string> message) { + if (accountId == aliceId && conversationId == convId && message["type"] == "member") { + memberMessageGenerated = true; + cv.notify_one(); + } + })); confHandlers.insert( DRing::exportable_callback<DRing::ConfigurationSignal::VolatileDetailsChanged>( [&](const std::string&, const std::map<std::string, std::string>&) { auto details = carlaAccount->getVolatileAccountDetails(); - auto daemonStatus = details[DRing::Account::ConfProperties::Registration::STATUS]; - if (daemonStatus == "REGISTERED") { + auto deviceAnnounced = details[DRing::Account::VolatileProperties::DEVICE_ANNOUNCED]; + if (deviceAnnounced == "true") { carlaConnected = true; cv.notify_one(); } @@ -3197,6 +3226,7 @@ ConversationTest::testMemberJoinsInviteRemoved() DRing::registerSignalHandlers(confHandlers); aliceAccount->addConversationMember(convId, carlaUri, false); + CPPUNIT_ASSERT(cv.wait_for(lk, std::chrono::seconds(5), [&] { return memberMessageGenerated; })); // Cp conversations & convInfo auto repoPathAlice = fileutils::get_data_dir() + DIR_SEPARATOR_STR