From e4846fc6bb6149fd2725989d4faace2e3b39fac4 Mon Sep 17 00:00:00 2001 From: Daniel Date: Thu, 7 Dec 2023 22:49:26 +0100 Subject: [PATCH] update imap fixture, now using Imbox --- pytest_abra/pytest_abra.py | 43 ++++++++++++++++++++++++++++++-------- 1 file changed, 34 insertions(+), 9 deletions(-) diff --git a/pytest_abra/pytest_abra.py b/pytest_abra/pytest_abra.py index 8762ad3..a52526a 100644 --- a/pytest_abra/pytest_abra.py +++ b/pytest_abra/pytest_abra.py @@ -3,11 +3,12 @@ import os import re -from imaplib import IMAP4_SSL +from datetime import datetime, timedelta from pathlib import Path import pytest from dotenv import dotenv_values +from imbox import Imbox from playwright.sync_api import BrowserContext, expect from pytest import Parser @@ -94,15 +95,39 @@ def URL(env_config: dict[str, str]) -> BaseUrl: @pytest.fixture(scope="session") -def imap_ssl_email_client() -> None: +def imap_client() -> None: + """imap email client using credentials from environment variables""" + assert os.environ["IMAP_HOST"] assert os.environ["IMAP_PORT"] assert os.environ["IMAP_USER"] assert os.environ["IMAP_PASS"] - port = int(os.environ["IMAP_PORT"]) - imap_client = IMAP4_SSL(host=os.environ["IMAP_HOST"], port=port) - imap_client.login(os.environ["IMAP_USER"], os.environ["IMAP_PASS"]) - imap_client.select("INBOX") - yield imap_client - imap_client.close() - imap_client.logout() + + imbox = Imbox( + hostname=os.environ["IMAP_HOST"], + port=os.environ["IMAP_PORT"], + username=os.environ["IMAP_USER"], + password=os.environ["IMAP_PASS"], + ssl=True, + ssl_context=None, + starttls=False, + ) + + yield imbox + + imbox.logout() + + +@pytest.fixture +def imap_recent_messages(imap_client: Imbox, n_minutes: int): + """Get all messages from [n_minutes] ago till now. + + # iterate with + for uid, message in messages: + print(uid, message.subject, message.date)""" + + n_minutes_ago = datetime.now() - timedelta(minutes=n_minutes) + uids_and_messages = imap_client.messages(date__gt=n_minutes_ago) + uids, messages = zip(*uids_and_messages) + print(type(messages)) + return messages