diff --git a/src/jamidht/conversationrepository.cpp b/src/jamidht/conversationrepository.cpp index 767ca35a737ccf4e915fce1ad7ef8f60f01078e7..a390a85629ed3be56b89515bce4592b5f28058e6 100644 --- a/src/jamidht/conversationrepository.cpp +++ b/src/jamidht/conversationrepository.cpp @@ -2064,7 +2064,7 @@ ConversationRepository::Impl::search(const Filter& filter) const if (filter.type.empty() && !isSearchable) { // Not searchable, at least for now return; - } else if (contentType == filter.type) { + } else if (contentType == filter.type || filter.type.empty()) { if (isSearchable) { // If it's a text match the body, else the display name auto body = contentType == "text/plain" ? content->at("body") diff --git a/test/unitTest/conversation/conversation.cpp b/test/unitTest/conversation/conversation.cpp index b69512d80d03fd858590e9bbc9759c6cbb8fd678..9ced2bdb6a386f837ebfc43ec280369f10fed751 100644 --- a/test/unitTest/conversation/conversation.cpp +++ b/test/unitTest/conversation/conversation.cpp @@ -2063,7 +2063,7 @@ ConversationTest::testUnknownModeDetected() const std::string& /* conversationId */, int code, const std::string& /* what */) { - if (code == 1) + if (code == 2) errorDetected = true; cv.notify_one(); })); diff --git a/test/unitTest/conversation/conversationMembersEvent.cpp b/test/unitTest/conversation/conversationMembersEvent.cpp index 4e47c28a65381c2a4d0450e1f8133a6b8645e3f6..9f9e64008b6712f7e1dc70131de04d467c523a3c 100644 --- a/test/unitTest/conversation/conversationMembersEvent.cpp +++ b/test/unitTest/conversation/conversationMembersEvent.cpp @@ -2448,12 +2448,16 @@ ConversationMembersEventTest::testBanUnbanGotFirstConv() } cv.notify_one(); })); - auto bobMsgReceived = false, bob2MsgReceived = false; + auto bobMsgReceived = false, bob2MsgReceived = false, memberMessageGenerated = false; 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 == bobId && conversationId == convId) + if (accountId == aliceId && conversationId == convId) { + auto itFind = message.find("type"); + if (itFind != message.end() && itFind->second == "member") + memberMessageGenerated = true; + } else if (accountId == bobId && conversationId == convId) bobMsgReceived = true; else if (accountId == bob2Id && conversationId == convId) bob2MsgReceived = true; @@ -2469,6 +2473,7 @@ ConversationMembersEventTest::testBanUnbanGotFirstConv() } cv.notify_one(); })); + DRing::registerSignalHandlers(confHandlers); // Bob creates a second device @@ -2511,8 +2516,8 @@ ConversationMembersEventTest::testBanUnbanGotFirstConv() // Bobs re-add Alice contactAddedBob = false, contactAddedBob2 = false; bobAccount->addContact(aliceUri); + bobAccount->sendTrustRequest(aliceUri, {}); CPPUNIT_ASSERT(cv.wait_for(lk, 30s, [&]() { return contactAddedBob && contactAddedBob2; })); - std::this_thread::sleep_for(10s); // Alice can sends some messages now bobMsgReceived = false, bob2MsgReceived = false; diff --git a/test/unitTest/conversation/conversationRequest.cpp b/test/unitTest/conversation/conversationRequest.cpp index c7cf8b5744508e31b485e096e9614f1ab72d1b01..b65caef297ecf3f5fcb3411f63ac1cb9fbf2a90c 100644 --- a/test/unitTest/conversation/conversationRequest.cpp +++ b/test/unitTest/conversation/conversationRequest.cpp @@ -227,8 +227,7 @@ ConversationRequestTest::acceptConvReqAlsoAddContact() CPPUNIT_ASSERT(cv.wait_for(lk, 30s, [&]() { return requestReceived; })); DRing::acceptConversationRequest(bobId, convId2); - CPPUNIT_ASSERT( - cv.wait_for(lk, 30s, [&]() { return conversationReady == 2; })); + CPPUNIT_ASSERT(cv.wait_for(lk, 30s, [&]() { return conversationReady == 2; })); CPPUNIT_ASSERT(bobAccount->getTrustRequests().size() == 0); } @@ -352,9 +351,8 @@ ConversationRequestTest::testAddContact() CPPUNIT_ASSERT(fileutils::isDirectory(repoPath)); CPPUNIT_ASSERT(cv.wait_for(lk, 30s, [&]() { return requestReceived; })); CPPUNIT_ASSERT(bobAccount->acceptTrustRequest(aliceUri)); - CPPUNIT_ASSERT(cv.wait_for(lk, 30s, [&]() { - return conversationReady && memberMessageGenerated; - })); + CPPUNIT_ASSERT( + cv.wait_for(lk, 30s, [&]() { return conversationReady && memberMessageGenerated; })); auto clonedPath = fileutils::get_data_dir() + DIR_SEPARATOR_STR + bobAccount->getAccountID() + DIR_SEPARATOR_STR + "conversations" + DIR_SEPARATOR_STR + convId; CPPUNIT_ASSERT(fileutils::isDirectory(clonedPath)); @@ -410,9 +408,8 @@ ConversationRequestTest::testAddContactDeleteAndReAdd() aliceAccount->sendTrustRequest(bobUri, {}); CPPUNIT_ASSERT(cv.wait_for(lk, 30s, [&]() { return requestReceived; })); CPPUNIT_ASSERT(bobAccount->acceptTrustRequest(aliceUri)); - CPPUNIT_ASSERT(cv.wait_for(lk, 30s, [&]() { - return conversationReady && memberMessageGenerated; - })); + CPPUNIT_ASSERT( + cv.wait_for(lk, 30s, [&]() { return conversationReady && memberMessageGenerated; })); // removeContact aliceAccount->removeContact(bobUri, false); @@ -474,9 +471,8 @@ ConversationRequestTest::testInviteFromMessageAfterRemoved() aliceAccount->sendTrustRequest(bobUri, {}); CPPUNIT_ASSERT(cv.wait_for(lk, 30s, [&]() { return requestReceived; })); CPPUNIT_ASSERT(bobAccount->acceptTrustRequest(aliceUri)); - CPPUNIT_ASSERT(cv.wait_for(lk, 30s, [&]() { - return conversationReady && memberMessageGenerated; - })); + CPPUNIT_ASSERT( + cv.wait_for(lk, 30s, [&]() { return conversationReady && memberMessageGenerated; })); // removeContact bobAccount->removeContact(aliceUri, false); @@ -545,14 +541,11 @@ ConversationRequestTest::testRemoveContact() aliceAccount->addContact(bobUri); aliceAccount->sendTrustRequest(bobUri, {}); // Check created files - CPPUNIT_ASSERT(cv.wait_for(lk, 30s, [&]() { - return !convId.empty() && requestReceived; - })); + CPPUNIT_ASSERT(cv.wait_for(lk, 30s, [&]() { return !convId.empty() && requestReceived; })); memberMessageGenerated = false; CPPUNIT_ASSERT(bobAccount->acceptTrustRequest(aliceUri)); - CPPUNIT_ASSERT(cv.wait_for(lk, 30s, [&]() { - return conversationReady && memberMessageGenerated; - })); + CPPUNIT_ASSERT( + cv.wait_for(lk, 30s, [&]() { return conversationReady && memberMessageGenerated; })); conversationRemovedBob = false; bobAccount->removeContact(aliceUri, false); @@ -565,7 +558,8 @@ ConversationRequestTest::testRemoveContact() aliceAccount->removeContact(bobUri, false); CPPUNIT_ASSERT(cv.wait_for(lk, 20s, [&]() { return conversationRemovedAlice; })); - std::this_thread::sleep_for(10s); // There is no signal, but daemon should then erase the repository + std::this_thread::sleep_for( + 10s); // There is no signal, but daemon should then erase the repository auto repoPath = fileutils::get_data_dir() + DIR_SEPARATOR_STR + aliceAccount->getAccountID() + DIR_SEPARATOR_STR + "conversations" + DIR_SEPARATOR_STR + convId; @@ -628,19 +622,15 @@ ConversationRequestTest::testRemoveSelfDoesntRemoveConversation() aliceAccount->addContact(bobUri); aliceAccount->sendTrustRequest(bobUri, {}); // Check created files - CPPUNIT_ASSERT(cv.wait_for(lk, 30s, [&]() { - return !convId.empty() && requestReceived; - })); + CPPUNIT_ASSERT(cv.wait_for(lk, 30s, [&]() { return !convId.empty() && requestReceived; })); memberMessageGenerated = false; CPPUNIT_ASSERT(bobAccount->acceptTrustRequest(aliceUri)); - CPPUNIT_ASSERT(cv.wait_for(lk, 30s, [&]() { - return conversationReady && memberMessageGenerated; - })); + CPPUNIT_ASSERT( + cv.wait_for(lk, 30s, [&]() { return conversationReady && memberMessageGenerated; })); conversationRemoved = false; aliceAccount->removeContact(aliceUri, false); - CPPUNIT_ASSERT( - !cv.wait_for(lk, 10s, [&]() { return conversationRemoved; })); + CPPUNIT_ASSERT(!cv.wait_for(lk, 10s, [&]() { return conversationRemoved; })); auto repoPath = fileutils::get_data_dir() + DIR_SEPARATOR_STR + aliceAccount->getAccountID() + DIR_SEPARATOR_STR + "conversations" + DIR_SEPARATOR_STR + convId; CPPUNIT_ASSERT(fileutils::isDirectory(repoPath)); @@ -698,14 +688,11 @@ ConversationRequestTest::testRemoveConversationUpdateContactDetails() aliceAccount->addContact(bobUri); aliceAccount->sendTrustRequest(bobUri, {}); // Check created files - CPPUNIT_ASSERT(cv.wait_for(lk, 30s, [&]() { - return !convId.empty() && requestReceived; - })); + CPPUNIT_ASSERT(cv.wait_for(lk, 30s, [&]() { return !convId.empty() && requestReceived; })); memberMessageGenerated = false; CPPUNIT_ASSERT(bobAccount->acceptTrustRequest(aliceUri)); - CPPUNIT_ASSERT(cv.wait_for(lk, 30s, [&]() { - return conversationReady && memberMessageGenerated; - })); + CPPUNIT_ASSERT( + cv.wait_for(lk, 30s, [&]() { return conversationReady && memberMessageGenerated; })); conversationRemoved = false; DRing::removeConversation(bobId, convId); @@ -765,13 +752,11 @@ ConversationRequestTest::testBanContact() memberMessageGenerated = false; CPPUNIT_ASSERT(bobAccount->acceptTrustRequest(aliceUri)); CPPUNIT_ASSERT(cv.wait_for(lk, 30s, [&]() { return conversationReady; })); - CPPUNIT_ASSERT( - cv.wait_for(lk, 30s, [&]() { return memberMessageGenerated; })); + CPPUNIT_ASSERT(cv.wait_for(lk, 30s, [&]() { return memberMessageGenerated; })); memberMessageGenerated = false; bobAccount->removeContact(aliceUri, true); - CPPUNIT_ASSERT( - !cv.wait_for(lk, 30s, [&]() { return memberMessageGenerated; })); + CPPUNIT_ASSERT(!cv.wait_for(lk, 30s, [&]() { return memberMessageGenerated; })); auto repoPath = fileutils::get_data_dir() + DIR_SEPARATOR_STR + bobAccount->getAccountID() + DIR_SEPARATOR_STR + "conversations" + DIR_SEPARATOR_STR + convId; CPPUNIT_ASSERT(fileutils::isDirectory(repoPath)); @@ -879,9 +864,8 @@ ConversationRequestTest::testAddOfflineContactThenConnect() CPPUNIT_ASSERT(cv.wait_for(lk, std::chrono::seconds(60), [&]() { return requestReceived; })); memberMessageGenerated = false; CPPUNIT_ASSERT(carlaAccount->acceptTrustRequest(aliceUri)); - CPPUNIT_ASSERT(cv.wait_for(lk, 30s, [&]() { - return conversationReady && memberMessageGenerated; - })); + CPPUNIT_ASSERT( + cv.wait_for(lk, 30s, [&]() { return conversationReady && memberMessageGenerated; })); } void @@ -996,6 +980,14 @@ ConversationRequestTest::testRemoveContactRemoveSyncing() } cv.notify_one(); })); + bool contactRemoved = false; + confHandlers.insert(DRing::exportable_callback<DRing::ConfigurationSignal::ContactRemoved>( + [&](const std::string& accountId, const std::string& uri, bool) { + if (accountId == bobId && uri == aliceUri) { + contactRemoved = true; + } + cv.notify_one(); + })); DRing::registerSignalHandlers(confHandlers); aliceAccount->addContact(bobUri); aliceAccount->sendTrustRequest(bobUri, {}); @@ -1007,6 +999,7 @@ ConversationRequestTest::testRemoveContactRemoveSyncing() CPPUNIT_ASSERT(DRing::getConversations(bobId).size() == 1); bobAccount->removeContact(aliceUri, false); + CPPUNIT_ASSERT(cv.wait_for(lk, 30s, [&]() { return contactRemoved; })); CPPUNIT_ASSERT(DRing::getConversations(bobId).size() == 0); } @@ -1250,9 +1243,7 @@ ConversationRequestTest::testRemoveContactRemoveTrustRequest() aliceAccount->addContact(bobUri); aliceAccount->sendTrustRequest(bobUri, {}); CPPUNIT_ASSERT(cv.wait_for(lk, 5s, [&]() { return !convId.empty(); })); - CPPUNIT_ASSERT(cv.wait_for(lk, 30s, [&]() { - return requestB1Received && requestB2Received; - })); + CPPUNIT_ASSERT(cv.wait_for(lk, 30s, [&]() { return requestB1Received && requestB2Received; })); // Bob1 accepts, both device should get it CPPUNIT_ASSERT(bobAccount->acceptTrustRequest(aliceUri)); @@ -1262,11 +1253,9 @@ ConversationRequestTest::testRemoveContactRemoveTrustRequest() // Bob2 remove Alice ; Bob1 should not have any trust requests bob2Account->removeContact(aliceUri, false); - CPPUNIT_ASSERT(cv.wait_for(lk, 30s, [&]() { - return conversationB1Removed && conversationB2Removed; - })); - std::this_thread::sleep_for( - 10s); // Wait a bit to ensure that everything is update (via synced) + CPPUNIT_ASSERT( + cv.wait_for(lk, 30s, [&]() { return conversationB1Removed && conversationB2Removed; })); + std::this_thread::sleep_for(10s); // Wait a bit to ensure that everything is update (via synced) CPPUNIT_ASSERT(bobAccount->getTrustRequests().size() == 0); CPPUNIT_ASSERT(bob2Account->getTrustRequests().size() == 0); }