mirror of
https://github.com/haiwen/seahub.git
synced 2025-04-28 11:15:58 +00:00
54 lines
1.5 KiB
Python
54 lines
1.5 KiB
Python
|
from contextlib import contextmanager
|
||
|
from pytest import yield_fixture # pylint: disable=E1101
|
||
|
from tests.ui.driver import Browser
|
||
|
from tests.common.common import (
|
||
|
BASE_URL, USERNAME, PASSWORD, ADMIN_USERNAME, ADMIN_PASSWORD
|
||
|
)
|
||
|
|
||
|
@yield_fixture(scope='session')
|
||
|
def browser():
|
||
|
"""Get an instance of a browser that already logged in.
|
||
|
|
||
|
Note this browser instance are shared among all test cases.
|
||
|
"""
|
||
|
with _create_browser(admin=False) as browser:
|
||
|
yield browser
|
||
|
|
||
|
@yield_fixture(scope='session')
|
||
|
def admin_browser():
|
||
|
"""Get an instance of a browser that already logged in with admin credentials.
|
||
|
|
||
|
This browser instance are shared among all test cases.
|
||
|
"""
|
||
|
with _create_browser(admin=True) as browser:
|
||
|
yield browser
|
||
|
|
||
|
@yield_fixture(scope='function')
|
||
|
def admin_browser_once():
|
||
|
"""Get an instance of a browser that already logged in with admin credentials.
|
||
|
|
||
|
This browser instance are created/destroyed for each test case.
|
||
|
"""
|
||
|
with _create_browser(admin=True) as browser:
|
||
|
yield browser
|
||
|
|
||
|
@contextmanager
|
||
|
def _create_browser(admin=False):
|
||
|
username, password = (ADMIN_USERNAME, ADMIN_PASSWORD) \
|
||
|
if admin else (USERNAME, PASSWORD)
|
||
|
b = Browser(BASE_URL)
|
||
|
b.gohome()
|
||
|
assert b.path == '/accounts/login/'
|
||
|
|
||
|
b.fill_form({
|
||
|
'username': username,
|
||
|
'password': password
|
||
|
})
|
||
|
b.submit_by_input_name('username')
|
||
|
assert b.path != '/accounts/login/'
|
||
|
|
||
|
try:
|
||
|
yield b
|
||
|
finally:
|
||
|
b.quit()
|