From d07aab03b9252ee98110e591b69906c0b72b8172 Mon Sep 17 00:00:00 2001 From: holger krekel Date: Sat, 14 Oct 2023 13:54:31 +0200 Subject: [PATCH] add basic delta chat tests --- online-tests/conftest.py | 43 ++++++++++++++++++++++++++++++++++ online-tests/test_deltachat.py | 13 ++++++++++ 2 files changed, 56 insertions(+) create mode 100644 online-tests/test_deltachat.py diff --git a/online-tests/conftest.py b/online-tests/conftest.py index 577e239b..ab6d2b1a 100644 --- a/online-tests/conftest.py +++ b/online-tests/conftest.py @@ -1,4 +1,5 @@ import os +import io import imaplib import smtplib import itertools @@ -56,3 +57,45 @@ def gencreds(maildomain): yield f"user{num}@{maildomain}", f"password{num}" return lambda: next(gen()) + + +# +# Delta Chat testplugin re-use +# use the cmfactory fixture to get chatmail instance accounts +# + +class ChatmailTestProcess: + """Provider for chatmail instance accounts as used by deltachat.testplugin.acfactory """ + def __init__(self, pytestconfig, maildomain, gencreds): + self.pytestconfig = pytestconfig + self.maildomain = maildomain + self.gencreds = gencreds + self._addr2files = {} + + def get_liveconfig_producer(self): + while 1: + user, password = self.gencreds() + config = {"addr": user, "mail_pw": password} + yield config + + def cache_maybe_retrieve_configured_db_files(self, cache_addr, db_target_path): + pass + + def cache_maybe_store_configured_db_files(self, acc): + pass + + +@pytest.fixture +def cmfactory(request, maildomain, gencreds, tmpdir, data): + # cloned from deltachat.testplugin.amfactory + pytest.importorskip("deltachat") + from deltachat.testplugin import ACFactory + testproc = ChatmailTestProcess(request.config, maildomain, gencreds) + am = ACFactory(request=request, tmpdir=tmpdir, testprocess=testproc, data=data) + yield am + if hasattr(request.node, "rep_call") and request.node.rep_call.failed: + if testprocess.pytestconfig.getoption("--extra-info"): + logfile = io.StringIO() + am.dump_imap_summary(logfile=logfile) + print(logfile.getvalue()) + # request.node.add_report_section("call", "imap-server-state", s) diff --git a/online-tests/test_deltachat.py b/online-tests/test_deltachat.py new file mode 100644 index 00000000..5366b2b7 --- /dev/null +++ b/online-tests/test_deltachat.py @@ -0,0 +1,13 @@ + + +class TestMailSending: + def test_one_on_one(self, cmfactory, lp): + ac1, ac2 = cmfactory.get_online_accounts(2) + chat = cmfactory.get_accepted_chat(ac1, ac2) + + lp.sec("ac1: prepare and send text message to ac2") + msg1 = chat.send_text("message0") + + lp.sec("wait for ac2 to receive message") + msg2 = ac2._evtracker.wait_next_incoming_message() + assert msg2.text == "message0"