diff --git a/CHANGELOG.md b/CHANGELOG.md index e71440e64..a6c5a398c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,7 +2,7 @@ ## Unreleased -- switch back from `sqlx` to `rusqlite` due to performance regressions #2380 #2381 #2385 +- switch back from `sqlx` to `rusqlite` due to performance regressions #2380 #2381 #2385 #2387 - global search performance improvement #2364 #2365 #2366 @@ -20,7 +20,7 @@ - place user avatar directly into `Chat-User-Avatar` header #2232 -- improve tests #2360 #2362 #2370 #2377 +- improve tests #2360 #2362 #2370 #2377 #2387 - cleanup #2359 #2361 #2374 #2376 #2379 #2388 diff --git a/python/tests/test_account.py b/python/tests/test_account.py index 8ed394f06..30ee625cc 100644 --- a/python/tests/test_account.py +++ b/python/tests/test_account.py @@ -1713,7 +1713,7 @@ class TestOnlineAccount: ac1._evtracker.wait_securejoin_inviter_progress(1000) def test_qr_verified_group_and_chatting(self, acfactory, lp): - ac1, ac2 = acfactory.get_two_online_accounts() + ac1, ac2, ac3 = acfactory.get_many_online_accounts(3) lp.sec("ac1: create verified-group QR, ac2 scans and joins") chat1 = ac1.create_group_chat("hello", verified=True) assert chat1.is_protected() @@ -1744,6 +1744,29 @@ class TestOnlineAccount: assert msg.text == "world" assert msg.is_encrypted() + lp.sec("ac1: create QR code and let ac3 scan it, starting the securejoin") + qr = ac1.get_setup_contact_qr() + + lp.sec("ac3: start QR-code based setup contact protocol") + ch = ac3.qr_setup_contact(qr) + assert ch.id >= 10 + ac1._evtracker.wait_securejoin_inviter_progress(1000) + + lp.sec("ac1: add ac3 to verified group") + chat1.add_contact(ac3) + msg = ac2._evtracker.wait_next_incoming_message() + assert msg.is_encrypted() + assert msg.is_system_message() + assert not msg.error + + lp.sec("ac2: send message and let ac3 read it") + chat2.send_text("hi") + # Skip system message about added member + ac3._evtracker.wait_next_incoming_message() + msg = ac3._evtracker.wait_next_incoming_message() + assert msg.text == "hi" + assert msg.is_encrypted() + def test_set_get_contact_avatar(self, acfactory, data, lp): lp.sec("configuring ac1 and ac2") ac1, ac2 = acfactory.get_two_online_accounts() diff --git a/src/dc_receive_imf.rs b/src/dc_receive_imf.rs index 22f074aff..c6c8239b1 100644 --- a/src/dc_receive_imf.rs +++ b/src/dc_receive_imf.rs @@ -1929,7 +1929,7 @@ async fn check_verified_properties( paramsv![], |row| { let to_addr: String = row.get(0)?; - let is_verified: i32 = row.get(1)?; + let is_verified: i32 = row.get(1).unwrap_or(0); Ok((to_addr, is_verified != 0)) }, |rows| {