new-features #5

Merged
dan merged 73 commits from wordpress-nextcloud into dev 2023-12-04 12:46:32 +01:00
6 changed files with 106 additions and 0 deletions
Showing only changes of commit ca974d9024 - Show all commits

View file

@ -0,0 +1,22 @@
import pytest
@pytest.fixture(scope="session", autouse=True)
def delete_nextcloud_user(browser: Browser):
"""Delete Nextcloud Account"""
yield
context = setup_context(browser, f"{STATES}/admin_state.json")
page = context.new_page()
page.goto(CONFIG["domain"])
with page.expect_popup() as nextcloud_info:
page.get_by_role("link", name="Nextcloud").click()
nextcloud = nextcloud_info.value
nextcloud.get_by_role("link", name="Open settings menu").click()
nextcloud.get_by_role("link", name="Users").click()
nextcloud.locator("#app-content div").filter(has_text=testuser["username"]).get_by_role(
"button", name="Toggle user actions menu"
).click()
nextcloud.get_by_role("button", name="Delete user").click()
nextcloud.get_by_role("button", name=f"Delete authentik-{testuser['username']}'s account").click()
context.tracing.stop(path=f"{RECORDS}/nextcloud_delete_user.zip")
context.close()

View file

@ -0,0 +1 @@
from src.tests_authentik.fixtures_authentik import admin_context, authentik_admin_page, user_context

View file

@ -0,0 +1,16 @@
from src.runner import Runner, SubTest
from src.tests_authentik.runner_authentik import RunnerAuthentik
def fake_condition(arg):
return False
class RunnerNextcloud(Runner):
name: str = "nextcloud"
test_dir_name: str = "tests_nextcloud"
main_setup_name = "setup_nextcloud.py"
main_test_name = "tests_nextcloud.py"
main_cleanup_name = "cleanup_nextcloud.py"
dependencies = [RunnerAuthentik]
sub_tests: list[SubTest] = [SubTest(condition=fake_condition, test_file="tests_nextcloud_onlyoffice.py")]

View file

@ -0,0 +1,35 @@
import pytest
@pytest.fixture(scope="session", autouse=True)
def nc_login(browser: Browser):
"""Nextcloud Login"""
context = setup_context(browser, f"{STATES}/user_state.json")
page = context.new_page()
page.goto(CONFIG["domain"])
with page.expect_popup() as nextcloud_info:
link = page.get_by_role("link", name="Nextcloud")
CONFIG["nc_domain"] = link.get_attribute("href")
link.click()
nextcloud = nextcloud_info.value
check_for(nextcloud.get_by_role("link", name="Name"))
if nextcloud.query_selector(".close-icon"):
close_button = nextcloud.get_by_role("button", name="Close modal")
close_button.click()
expect(close_button).to_be_hidden()
nextcloud.wait_for_timeout(2000)
context.storage_state(path=f"{STATES}/nc_user_state.json")
context.tracing.stop(path=f"{RECORDS}/nextcloud_login_user.zip")
context.close()
@pytest.fixture
def nc_session(browser: Browser):
"""Reuse Nextcloud User Session"""
context = setup_context(browser, f"{STATES}/nc_user_state.json")
page = context.new_page()
page.goto(CONFIG["nc_domain"])
if page.query_selector(".close-icon"):
page.get_by_role("button", name="Close modal").click()
yield context, page
context.close()

View file

@ -0,0 +1,13 @@
def test_nextcloud(nc_session):
"""Test Nextcloud"""
context, page = nc_session
# if page.query_selector('.close-icon'):
# page.get_by_role("button", name="Close modal").click()
if CONFIG.get("default_quota"):
quota = int(
page.get_by_role("listitem", name="Storage informations").get_by_role("link").inner_text().split()[3]
)
assert quota == CONFIG["default_quota"]
for app in CONFIG["nc_apps"]:
check_for(page.get_by_role("link", name=app))
context.tracing.stop(path=f"{RECORDS}/nextcloud.zip")

View file

@ -0,0 +1,19 @@
def test_onlyoffice(nc_session):
"""Test Onlyoffice in Nextcloud"""
context, page = nc_session
# if page.query_selector('.close-icon'):
# page.get_by_role("button", name="Close modal").click()
page.get_by_role("link", name="New file/folder menu").click()
page.get_by_role("link", name="New document").click()
page.locator("#view9-input-file").fill("test.docx")
page.get_by_role("button", name="Submit").click()
outer_frame = page.frame_locator("#onlyofficeFrame")
check_for(outer_frame.locator("body"))
inner_frame = outer_frame.frame_locator("#app > iframe")
check_for(inner_frame.locator("body"))
onlyoffice = page.frame("frameEditor")
check_for(onlyoffice.locator('//*[@id="area_id"]'))
onlyoffice.locator("#btn-goback").click()
page.get_by_role("link", name="Not favorited test .docx Share Actions").get_by_role("link", name="Actions").click()
page.get_by_role("link", name="Delete file").click()
context.tracing.stop(path=f"{RECORDS}/onlyoffice.zip")