From 36653928f77bcc8e47dd67d18fe44d23281fc8b9 Mon Sep 17 00:00:00 2001 From: adbenitez Date: Tue, 6 Apr 2021 20:38:21 -0400 Subject: [PATCH 1/6] add html API --- python/src/deltachat/message.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/python/src/deltachat/message.py b/python/src/deltachat/message.py index 4b320da24..774c76cf6 100644 --- a/python/src/deltachat/message.py +++ b/python/src/deltachat/message.py @@ -86,6 +86,23 @@ class Message(object): """set text of this message. """ lib.dc_msg_set_text(self._dc_msg, as_dc_charpointer(text)) + @props.with_doc + def html(self): + """html text of this messages (might be empty if not an html message). """ + return from_dc_charpointer( + lib.dc_get_msg_html(self.account._dc_context, self.id)) or "" + + def has_html(self): + """return True if this message has an html part, False otherwise.""" + return lib.dc_msg_has_html(self._dc_msg) + + def set_html(self, html_text): + """set the html part of this message. + + It is possible to have text and html part at the same time. + """ + lib.dc_msg_set_html(self._dc_msg, as_dc_charpointer(html_text)) + @props.with_doc def filename(self): """filename if there was an attachment, otherwise empty string. """ From 6601015a095c6c9682dd25f9d231d185dceb4ba2 Mon Sep 17 00:00:00 2001 From: adbenitez Date: Tue, 13 Apr 2021 02:35:54 -0400 Subject: [PATCH 2/6] add test_html_message() --- python/tests/test_account.py | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/python/tests/test_account.py b/python/tests/test_account.py index e0f91c6ac..664000091 100644 --- a/python/tests/test_account.py +++ b/python/tests/test_account.py @@ -816,6 +816,37 @@ class TestOnlineAccount: assert open(msg.filename).read() == content assert msg.filename.endswith(basename) + def test_html_message(self, acfactory, lp): + ac1, ac2 = acfactory.get_two_online_accounts() + html_text = "

hello HTML world

" + + lp.sec("ac1: create chat with ac2") + chat = ac1.create_chat(ac2) + + lp.sec("ac1: prepare and send HTML+text message to ac2") + msg1 = Message.new_empty(ac1, "text") + msg1.set_text("message1") + msg1.set_html(html_text) + msg1 = chat.send_msg(msg1) + ac1._evtracker.wait_msg_delivered(msg1) + + lp.sec("wait for ac2 to receive first message") + msg2 = ac2._evtracker.wait_next_messages_changed() + assert msg2.text == "message1" + assert html_text in msg2.html + + lp.sec("ac1: prepare and send HTML-only message to ac2") + msg1 = Message.new_empty(ac1, "text") + msg1.set_html(html_text) + msg1 = chat.send_msg(msg1) + ac1._evtracker.wait_msg_delivered(msg1) + + lp.sec("wait for ac2 to receive second message") + msg2 = ac2._evtracker.wait_next_messages_changed() + assert "

" not in msg2.text + assert "Hello HTML world" in msg2.text + assert html_text in msg2.html + def test_mvbox_sentbox_threads(self, acfactory, lp): lp.sec("ac1: start with mvbox thread") ac1 = acfactory.get_online_configuring_account(mvbox=True, move=True, sentbox=True) From 26d9addc5d137621290dec2dda4379a35e89b90d Mon Sep 17 00:00:00 2001 From: adbenitez Date: Tue, 13 Apr 2021 02:49:56 -0400 Subject: [PATCH 3/6] improve test, test has_html() --- python/tests/test_account.py | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/python/tests/test_account.py b/python/tests/test_account.py index 664000091..631c2e226 100644 --- a/python/tests/test_account.py +++ b/python/tests/test_account.py @@ -823,16 +823,33 @@ class TestOnlineAccount: lp.sec("ac1: create chat with ac2") chat = ac1.create_chat(ac2) + lp.sec("ac1: prepare and send text message to ac2") + msg1 = Message.new_empty(ac1, "text") + msg1.set_text("message0") + msg1 = chat.send_msg(msg1) + assert not msg1.has_html() + assert msg1.html == "" + ac1._evtracker.wait_msg_delivered(msg1) + + lp.sec("wait for ac2 to receive message") + msg2 = ac2._evtracker.wait_next_messages_changed() + assert msg2.text == "message0" + assert not msg2.has_html() + assert msg2.html == "" + lp.sec("ac1: prepare and send HTML+text message to ac2") msg1 = Message.new_empty(ac1, "text") msg1.set_text("message1") msg1.set_html(html_text) msg1 = chat.send_msg(msg1) + assert msg1.has_html() + assert html_text in msg1.html ac1._evtracker.wait_msg_delivered(msg1) - lp.sec("wait for ac2 to receive first message") + lp.sec("wait for ac2 to receive message") msg2 = ac2._evtracker.wait_next_messages_changed() assert msg2.text == "message1" + assert msg2.has_html() assert html_text in msg2.html lp.sec("ac1: prepare and send HTML-only message to ac2") @@ -841,10 +858,11 @@ class TestOnlineAccount: msg1 = chat.send_msg(msg1) ac1._evtracker.wait_msg_delivered(msg1) - lp.sec("wait for ac2 to receive second message") + lp.sec("wait for ac2 to receive message") msg2 = ac2._evtracker.wait_next_messages_changed() assert "

" not in msg2.text assert "Hello HTML world" in msg2.text + assert msg2.has_html() assert html_text in msg2.html def test_mvbox_sentbox_threads(self, acfactory, lp): From 19c1e6efc301af5a5e3f5aa955a30d3b628c11e7 Mon Sep 17 00:00:00 2001 From: adbenitez Date: Tue, 13 Apr 2021 03:00:02 -0400 Subject: [PATCH 4/6] try to fix test --- python/tests/test_account.py | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/python/tests/test_account.py b/python/tests/test_account.py index 631c2e226..41f16bd8c 100644 --- a/python/tests/test_account.py +++ b/python/tests/test_account.py @@ -818,21 +818,18 @@ class TestOnlineAccount: def test_html_message(self, acfactory, lp): ac1, ac2 = acfactory.get_two_online_accounts() + chat = acfactory.get_accepted_chat(ac1, ac2) html_text = "

hello HTML world

" - lp.sec("ac1: create chat with ac2") - chat = ac1.create_chat(ac2) - lp.sec("ac1: prepare and send text message to ac2") msg1 = Message.new_empty(ac1, "text") msg1.set_text("message0") msg1 = chat.send_msg(msg1) assert not msg1.has_html() assert msg1.html == "" - ac1._evtracker.wait_msg_delivered(msg1) 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 == "message0" assert not msg2.has_html() assert msg2.html == "" @@ -844,10 +841,9 @@ class TestOnlineAccount: msg1 = chat.send_msg(msg1) assert msg1.has_html() assert html_text in msg1.html - ac1._evtracker.wait_msg_delivered(msg1) 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.has_html() assert html_text in msg2.html @@ -856,10 +852,9 @@ class TestOnlineAccount: msg1 = Message.new_empty(ac1, "text") msg1.set_html(html_text) 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() + msg2 = ac2._evtracker.wait_next_incoming_message() assert "

" not in msg2.text assert "Hello HTML world" in msg2.text assert msg2.has_html() From e6d2b1052c9f4a47133ea25704800436c586496c Mon Sep 17 00:00:00 2001 From: adbenitez Date: Tue, 13 Apr 2021 04:23:36 -0400 Subject: [PATCH 5/6] fix typo --- python/tests/test_account.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/python/tests/test_account.py b/python/tests/test_account.py index 41f16bd8c..aef78b7f9 100644 --- a/python/tests/test_account.py +++ b/python/tests/test_account.py @@ -856,7 +856,7 @@ class TestOnlineAccount: lp.sec("wait for ac2 to receive message") msg2 = ac2._evtracker.wait_next_incoming_message() assert "

" not in msg2.text - assert "Hello HTML world" in msg2.text + assert "hello HTML world" in msg2.text assert msg2.has_html() assert html_text in msg2.html From cfdc841c7e62aa61e0c2ca0e9b653f4b3d154438 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Asiel=20D=C3=ADaz=20Ben=C3=ADtez?= Date: Sat, 17 Apr 2021 12:45:50 -0400 Subject: [PATCH 6/6] Update python/tests/test_account.py Co-authored-by: Hocuri --- python/tests/test_account.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/python/tests/test_account.py b/python/tests/test_account.py index aef78b7f9..f19404de3 100644 --- a/python/tests/test_account.py +++ b/python/tests/test_account.py @@ -822,9 +822,7 @@ class TestOnlineAccount: html_text = "

hello HTML world

" lp.sec("ac1: prepare and send text message to ac2") - msg1 = Message.new_empty(ac1, "text") - msg1.set_text("message0") - msg1 = chat.send_msg(msg1) + msg1 = chat.send_text("message0") assert not msg1.has_html() assert msg1.html == ""