Skip to content
Snippets Groups Projects
Commit 51df8722 authored by François-Simon Fauteux-Chapleau's avatar François-Simon Fauteux-Chapleau
Browse files

contact_list: fix trust request update bugs

jami-client-qt#1804
Change-Id: I8cb3ffc7d5b1b2b8bbfe018b922c260a569411fb
parent 13e51e88
No related branches found
No related tags found
No related merge requests found
...@@ -327,8 +327,9 @@ ContactList::onTrustRequest(const dht::InfoHash& peer_account, ...@@ -327,8 +327,9 @@ ContactList::onTrustRequest(const dht::InfoHash& peer_account,
.first; .first;
} else { } else {
// Update trust request // Update trust request
if (received < req->second.received) { if (received > req->second.received) {
req->second.device = peer_device; req->second.device = peer_device;
req->second.conversationId = conversationId;
req->second.received = received; req->second.received = received;
req->second.payload = payload; req->second.payload = payload;
} else { } else {
......
...@@ -1657,12 +1657,25 @@ ConversationMembersEventTest::testAddContactTwice() ...@@ -1657,12 +1657,25 @@ ConversationMembersEventTest::testAddContactTwice()
std::cout << "\nRunning test: " << __func__ << std::endl; std::cout << "\nRunning test: " << __func__ << std::endl;
auto aliceAccount = Manager::instance().getAccount<JamiAccount>(aliceId); auto aliceAccount = Manager::instance().getAccount<JamiAccount>(aliceId);
auto aliceUri = aliceAccount->getUsername();
auto bobAccount = Manager::instance().getAccount<JamiAccount>(bobId); auto bobAccount = Manager::instance().getAccount<JamiAccount>(bobId);
auto bobUri = bobAccount->getUsername(); auto bobUri = bobAccount->getUsername();
// Add contact
aliceAccount->addContact(bobUri); aliceAccount->addContact(bobUri);
aliceAccount->sendTrustRequest(bobUri, {}); aliceAccount->sendTrustRequest(bobUri, {});
CPPUNIT_ASSERT(cv.wait_for(lk, 10s, [&]() { return bobData.requestReceived; })); CPPUNIT_ASSERT(cv.wait_for(lk, 10s, [&]() { return bobData.requestReceived; }));
auto oldConversationId = aliceData.conversationId;
CPPUNIT_ASSERT(!oldConversationId.empty());
// Check that the trust request's data is correct
auto bobTrustRequests = bobAccount->getTrustRequests();
CPPUNIT_ASSERT(bobTrustRequests.size() == 1);
auto request = bobTrustRequests[0];
CPPUNIT_ASSERT(request["from"] == aliceUri);
CPPUNIT_ASSERT(request["conversationId"] == oldConversationId);
// Remove and re-add contact
aliceAccount->removeContact(bobUri, false); aliceAccount->removeContact(bobUri, false);
CPPUNIT_ASSERT(cv.wait_for(lk, 10s, [&]() { return aliceData.removed; })); CPPUNIT_ASSERT(cv.wait_for(lk, 10s, [&]() { return aliceData.removed; }));
// wait that connections are closed. // wait that connections are closed.
...@@ -1671,6 +1684,17 @@ ConversationMembersEventTest::testAddContactTwice() ...@@ -1671,6 +1684,17 @@ ConversationMembersEventTest::testAddContactTwice()
aliceAccount->addContact(bobUri); aliceAccount->addContact(bobUri);
aliceAccount->sendTrustRequest(bobUri, {}); aliceAccount->sendTrustRequest(bobUri, {});
CPPUNIT_ASSERT(cv.wait_for(lk, 10s, [&]() { return bobData.requestRemoved && bobData.requestReceived; })); CPPUNIT_ASSERT(cv.wait_for(lk, 10s, [&]() { return bobData.requestRemoved && bobData.requestReceived; }));
auto newConversationId = aliceData.conversationId;
CPPUNIT_ASSERT(!newConversationId.empty());
CPPUNIT_ASSERT(newConversationId != oldConversationId);
// Check that the trust request's data was correctly
// updated when we received the second request
bobTrustRequests = bobAccount->getTrustRequests();
CPPUNIT_ASSERT(bobTrustRequests.size() == 1);
request = bobTrustRequests[0];
CPPUNIT_ASSERT(request["from"] == aliceUri);
CPPUNIT_ASSERT(request["conversationId"] == newConversationId);
} }
void void
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment