Source code for univention.testing.browser.ldap_directory

#!/usr/bin/python3
# SPDX-FileCopyrightText: 2024-2025 Univention GmbH
# SPDX-License-Identifier: AGPL-3.0-only


from playwright.sync_api import Locator, Page, expect

from univention.config_registry import ucr
from univention.lib.i18n import Translation
from univention.testing.browser.lib import UMCBrowserTest


_ = Translation('ucs-test-framework').translate


[docs] class LDAPDirectory: """Class for the UMC LDAP Directory module""" def __init__(self, tester: UMCBrowserTest) -> None: self.tester: UMCBrowserTest = tester self.page: Page = tester.page self.module_name = _('LDAP directory')
[docs] def navigate(self, username=ucr.get('tests/domainadmin/username', 'Administrator'), password=ucr.get('tests/domainadmin/pwd', 'univention')): self.tester.login(username, password) self.tester.open_module(self.module_name)
def _get_directory_locator(self, name: str, exact: bool = False) -> Locator: entry = self.page.get_by_role('gridcell', name=name, exact=exact) expect(entry, f"LDAP directory entry with name '{name} not visible'").to_be_visible() return entry
[docs] def open_directory(self, name: str, exact: bool = True): directory = self._get_directory_locator(name, exact) directory.click()
[docs] def expand_directory(self, name: str, exact: bool = True): directory = self._get_directory_locator(name, exact) expand = directory.locator('div').first expand.click()
[docs] def open_entry(self, name: str, exact=True): entry_grid = self.page.get_by_role('grid').nth(1) entry = entry_grid.get_by_role('gridcell', name=name, exact=exact) clickable_text = entry.get_by_text(name, exact=exact) clickable_text.click()
[docs] def edit_container(self, name: str, exact=True): directory = self._get_directory_locator(name, exact=exact) directory.click(button='right') edit_button = self.page.get_by_role('region').get_by_role('cell', name='Edit') expect(edit_button, 'edit button not visible').to_be_visible() edit_button.click()