refactoring (#13)

* general project refactoring

* various small improvements

* improve imap fixture with helper functions and typing

* add wordpress send email setup

* add wordpress receive email test

* add various documentation

Reviewed-on: local-it-infrastructure/e2e_tests#13
Co-authored-by: Daniel <d.brummerloh@gmail.com>
Co-committed-by: Daniel <d.brummerloh@gmail.com>
This commit is contained in:
Daniel 2023-12-08 18:17:31 +01:00 committed by dan
parent 41a042f07d
commit d1ff1183a5
29 changed files with 323 additions and 175 deletions

View file

@ -1,10 +1,9 @@
import json
import pytest
from dotenv import dotenv_values
from playwright.sync_api import BrowserContext, Page
from pytest_abra.dir_manager import DirManager
from pytest_abra import BaseUrl, DirManager
pytest_plugins = "authentik.tests_authentik.fixtures_authentik"
@ -18,10 +17,7 @@ def wordpress_admin_context(context: BrowserContext, DIR: DirManager) -> Browser
@pytest.fixture
def wordpress_admin_page(wordpress_admin_context: BrowserContext, DIR: DirManager) -> Page:
def wordpress_admin_page(wordpress_admin_context: BrowserContext, URL: BaseUrl) -> Page:
page = wordpress_admin_context.new_page()
env_file = DIR.ENV_FILES / "wordpress"
config: dict[str, str] = dotenv_values(env_file) # type: ignore
url = "https://" + config["DOMAIN"]
page.goto(url)
page.goto(URL.get())
return page

View file

@ -1,26 +1,21 @@
from pytest_abra.runner import Runner, Test
from pytest_abra import ConditionArgs, Runner, Test
def condition_always_true(dotenv_config: dict[str, str]) -> bool:
return True
def condition_always_false(dotenv_config: dict[str, str]) -> bool:
return False
def condition_has_locale(dotenv_config: dict[str, str]) -> bool:
if "LOCALE" in dotenv_config:
if "de" in dotenv_config["LOCALE"]:
return True
def condition_has_locale(args: ConditionArgs) -> bool:
env_config = args.env_config
if "de" in env_config.get("LOCALE", ""):
return True
return False
class RunnerWordpress(Runner):
env_type = "wordpress"
dependencies = ["authentik"]
setups = [Test(test_file="setup_wordpress.py")]
tests = [
Test(test_file="test_wordpress.py"),
Test(condition=condition_has_locale, test_file="test_wordpress_localization.py"),
setups = [
Test(test_file="setup_wordpress.py"),
Test(test_file="setup_wordpress_trigger_email.py"),
]
tests = [
Test(test_file="test_wordpress_receive_email.py", prevent_skip=True),
# Test(condition=condition_has_locale, test_file="test_wordpress_localization.py"),
]

View file

@ -4,10 +4,10 @@ from playwright.sync_api import BrowserContext, Page, expect
from pytest_abra.dir_manager import DirManager
def test_visit_from_domain(authentik_admin_context: BrowserContext, dotenv_config: dict[str, str]):
def test_visit_from_domain(authentik_admin_context: BrowserContext, env_config: dict[str, str]):
"""visit wordpress directly with admin_session, expect not to be logged in"""
page = authentik_admin_context.new_page()
url = "https://" + dotenv_config["DOMAIN"]
url = "https://" + env_config["DOMAIN"]
page.goto(url)
with pytest.raises(AssertionError):
# look for admin bar

View file

@ -0,0 +1,19 @@
import os
from playwright.sync_api import Page, expect
from pytest_abra import BaseUrl
def setup_trigger_email(wordpress_admin_page: Page, URL: BaseUrl):
"""change profile email to EMAIL to trigger email"""
page = wordpress_admin_page
page.goto(URL.get("wp-admin/profile.php"))
EMAIL = os.environ["IMAP_EMAIL"]
print(EMAIL)
# breakpoint()
page.pause()
page.locator("input[id='email']").fill(EMAIL)
page.locator("input[id='submit']").click()
expect(page.locator("div.notice").get_by_text(EMAIL)).to_be_visible()

View file

@ -5,11 +5,11 @@ from playwright.sync_api import BrowserContext, expect
from pytest_abra.dir_manager import DirManager
def test_welcome_message(context: BrowserContext, dotenv_config: dict[str, str], DIR: DirManager):
def test_welcome_message(context: BrowserContext, env_config: dict[str, str], DIR: DirManager):
page = context.new_page()
url = "https://" + dotenv_config["DOMAIN"]
url = "https://" + env_config["DOMAIN"]
page.goto(url)
expect(page.locator(".wp-block-heading")).to_be_visible()
if "locale" in dotenv_config and "de" in dotenv_config["locale"]:
if "locale" in env_config and "de" in env_config["locale"]:
expect(page.get_by_role("heading")).to_have_text("Willkommen bei WordPress!")

View file

@ -0,0 +1,13 @@
from icecream import ic
from pytest_abra.custom_fixtures import Message
def test_demo(imap_recent_messages: list[Message]):
for message in imap_recent_messages:
print(dir(message))
ic(message.subject)
ic(message.body["plain"])
exit()
assert False