update imap fixture, now using Imbox

This commit is contained in:
Daniel 2023-12-07 22:49:26 +01:00
parent b7a8ed1f86
commit e4846fc6bb

View file

@ -3,11 +3,12 @@
import os import os
import re import re
from imaplib import IMAP4_SSL from datetime import datetime, timedelta
from pathlib import Path from pathlib import Path
import pytest import pytest
from dotenv import dotenv_values from dotenv import dotenv_values
from imbox import Imbox
from playwright.sync_api import BrowserContext, expect from playwright.sync_api import BrowserContext, expect
from pytest import Parser from pytest import Parser
@ -94,15 +95,39 @@ def URL(env_config: dict[str, str]) -> BaseUrl:
@pytest.fixture(scope="session") @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_HOST"]
assert os.environ["IMAP_PORT"] assert os.environ["IMAP_PORT"]
assert os.environ["IMAP_USER"] assert os.environ["IMAP_USER"]
assert os.environ["IMAP_PASS"] assert os.environ["IMAP_PASS"]
port = int(os.environ["IMAP_PORT"])
imap_client = IMAP4_SSL(host=os.environ["IMAP_HOST"], port=port) imbox = Imbox(
imap_client.login(os.environ["IMAP_USER"], os.environ["IMAP_PASS"]) hostname=os.environ["IMAP_HOST"],
imap_client.select("INBOX") port=os.environ["IMAP_PORT"],
yield imap_client username=os.environ["IMAP_USER"],
imap_client.close() password=os.environ["IMAP_PASS"],
imap_client.logout() 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