From dc6fb7d481083a7809ef69a7ae502db5359fbbda Mon Sep 17 00:00:00 2001 From: adbenitez Date: Tue, 6 Apr 2021 21:16:35 -0400 Subject: [PATCH 1/5] add "override_sender_name" API --- python/src/deltachat/message.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/python/src/deltachat/message.py b/python/src/deltachat/message.py index 07906ff32..a13dca895 100644 --- a/python/src/deltachat/message.py +++ b/python/src/deltachat/message.py @@ -227,6 +227,20 @@ class Message(object): chat_id = lib.dc_msg_get_chat_id(self._dc_msg) return Chat(self.account, chat_id) + @props.with_doc + def override_sender_name(self): + """the name that should be shown over the message instead of the contact display name. + + Usually used to impersonate someone else. + """ + return from_dc_charpointer( + lib.dc_msg_get_override_sender_name(self._dc_msg)) + + def set_override_sender_name(self, name): + """set different sender name for a message. """ + lib.dc_msg_set_override_sender_name( + self._dc_msg, as_dc_charpointer(name)) + def get_sender_chat(self): """return the 1:1 chat with the sender of this message. From 27714f596ebd881145180743b041faafc195e943 Mon Sep 17 00:00:00 2001 From: adbenitez Date: Tue, 13 Apr 2021 02:14:53 -0400 Subject: [PATCH 2/5] add test_message_override_sender_name() --- python/tests/test_account.py | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/python/tests/test_account.py b/python/tests/test_account.py index e0f91c6ac..496a138df 100644 --- a/python/tests/test_account.py +++ b/python/tests/test_account.py @@ -991,6 +991,27 @@ class TestOnlineAccount: except queue.Empty: pass # mark_seen_messages() has generated events before it returns + def test_message_override_sender_name(self, acfactory, lp): + ac1, ac2 = acfactory.get_two_online_accounts() + overridden_name = "someone else" + + ac1.set_config("displayname", "ac1") + + lp.sec("ac1: create chat with ac2") + chat = ac1.create_chat(ac2) + + lp.sec("sending text message with overridden name from ac1 to ac2") + msg1 = Message.new_empty(ac1, "text") + msg1.set_override_sender_name(overridden_name) + msg1 = chat.send_msg(msg1) + ac1._evtracker.wait_msg_delivered(msg1) + + lp.sec("wait for ac2 to receive message") + msg2 = ac2._evtracker.wait_next_messages_changed() + assert msg2.text == "text" + assert msg2.get_sender_contact().name == ac1.get_config("displayname") + assert msg2.override_sender_name == overridden_name + @pytest.mark.parametrize("mvbox_move", [True, False]) def test_markseen_message_and_mdn(self, acfactory, mvbox_move): # Please only change this test if you are very sure that it will still catch the issues it catches now. From d6a6ba01e49ef6e539e90a4ff6c7144f5d82cdae Mon Sep 17 00:00:00 2001 From: adbenitez Date: Tue, 13 Apr 2021 02:38:42 -0400 Subject: [PATCH 3/5] fix test --- python/tests/test_account.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/python/tests/test_account.py b/python/tests/test_account.py index 496a138df..a78302ec5 100644 --- a/python/tests/test_account.py +++ b/python/tests/test_account.py @@ -1003,12 +1003,13 @@ class TestOnlineAccount: lp.sec("sending text message with overridden name from ac1 to ac2") msg1 = Message.new_empty(ac1, "text") msg1.set_override_sender_name(overridden_name) + msg1.set_text("message1") msg1 = chat.send_msg(msg1) ac1._evtracker.wait_msg_delivered(msg1) lp.sec("wait for ac2 to receive message") msg2 = ac2._evtracker.wait_next_messages_changed() - assert msg2.text == "text" + assert msg2.text == "message1" assert msg2.get_sender_contact().name == ac1.get_config("displayname") assert msg2.override_sender_name == overridden_name From d4a1858d41be95bd45f82e730fd8617c6dd9055c Mon Sep 17 00:00:00 2001 From: adbenitez Date: Tue, 13 Apr 2021 03:53:21 -0400 Subject: [PATCH 4/5] try to fix test --- python/tests/test_account.py | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/python/tests/test_account.py b/python/tests/test_account.py index a78302ec5..cfcbeb87c 100644 --- a/python/tests/test_account.py +++ b/python/tests/test_account.py @@ -993,22 +993,20 @@ class TestOnlineAccount: def test_message_override_sender_name(self, acfactory, lp): ac1, ac2 = acfactory.get_two_online_accounts() + chat = acfactory.get_accepted_chat(ac1, ac2) overridden_name = "someone else" ac1.set_config("displayname", "ac1") - lp.sec("ac1: create chat with ac2") - chat = ac1.create_chat(ac2) - lp.sec("sending text message with overridden name from ac1 to ac2") msg1 = Message.new_empty(ac1, "text") msg1.set_override_sender_name(overridden_name) msg1.set_text("message1") msg1 = chat.send_msg(msg1) - ac1._evtracker.wait_msg_delivered(msg1) + assert msg1.override_sender_name == overridden_name lp.sec("wait for ac2 to receive message") - msg2 = ac2._evtracker.wait_next_messages_changed() + msg2 = ac2._evtracker.wait_next_incoming_message() assert msg2.text == "message1" assert msg2.get_sender_contact().name == ac1.get_config("displayname") assert msg2.override_sender_name == overridden_name From 2e015e685f3f1d5701ad04b769bdb70ceefd17ea Mon Sep 17 00:00:00 2001 From: adbenitez Date: Tue, 13 Apr 2021 03:53:37 -0400 Subject: [PATCH 5/5] add aditional check --- python/tests/test_account.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/python/tests/test_account.py b/python/tests/test_account.py index cfcbeb87c..a726d3dbb 100644 --- a/python/tests/test_account.py +++ b/python/tests/test_account.py @@ -1011,6 +1011,18 @@ class TestOnlineAccount: assert msg2.get_sender_contact().name == ac1.get_config("displayname") assert msg2.override_sender_name == overridden_name + lp.sec("sending normal text message from ac1 to ac2") + msg1 = Message.new_empty(ac1, "text") + msg1.set_text("message2") + msg1 = chat.send_msg(msg1) + assert not msg1.override_sender_name + + lp.sec("wait for ac2 to receive message") + msg2 = ac2._evtracker.wait_next_incoming_message() + assert msg2.text == "message2" + assert msg2.get_sender_contact().name == ac1.get_config("displayname") + assert not msg2.override_sender_name + @pytest.mark.parametrize("mvbox_move", [True, False]) def test_markseen_message_and_mdn(self, acfactory, mvbox_move): # Please only change this test if you are very sure that it will still catch the issues it catches now.