Files
galaxy/test/unit/app/managers/base.py
T

120 lines
3.7 KiB
Python

"""
"""
import json
from typing import cast
import sqlalchemy
from galaxy.app_unittest_utils import galaxy_mock
from galaxy.managers.users import UserManager
from galaxy.util.unittest import TestCase
from galaxy.work.context import SessionRequestContext
# =============================================================================
admin_email = "admin@admin.admin"
admin_users = admin_email
default_password = "123456"
# =============================================================================
class BaseTestCase(TestCase):
@classmethod
def setUpClass(cls):
print("\n", "-" * 20, "begin class", cls)
@classmethod
def tearDownClass(cls):
print("\n", "-" * 20, "end class", cls)
def setUp(self):
self.log("." * 20, "begin test", self)
self.set_up_mocks()
self.set_up_managers()
self.set_up_trans()
def set_up_mocks(self):
admin_users_list = [u for u in admin_users.split(",") if u]
self.mock_trans = galaxy_mock.MockTrans(admin_users=admin_users, admin_users_list=admin_users_list)
self.trans = cast(SessionRequestContext, self.mock_trans)
self.app = self.trans.app
def init_user_in_database(self):
self.mock_trans.init_user_in_database()
def set_up_managers(self):
self.user_manager = self.app[UserManager]
def set_up_trans(self):
self.admin_user = self.user_manager.create(email=admin_email, username="admin", password=default_password)
self.trans.set_user(self.admin_user)
self.trans.set_history(None)
def tearDown(self):
self.log("." * 20, "end test", self, "\n")
def log(self, *args, **kwargs):
print(*args, **kwargs)
# ---- additional test types
TYPES_NEEDING_NO_SERIALIZERS = (str, bool, type(None), int, float)
def assertKeys(self, obj, key_list):
assert sorted(obj.keys()) == sorted(key_list)
def assertHasKeys(self, obj, key_list):
for key in key_list:
assert key in obj
def assertNullableBasestring(self, item):
assert isinstance(item, (str, type(None)))
# TODO: len mod 8 and hex re
def assertEncodedId(self, item):
assert isinstance(item, str)
# TODO: len mod 8 and hex re
def assertNullableEncodedId(self, item):
if item is not None:
self.assertEncodedId(item)
def assertDate(self, item):
assert isinstance(item, str)
# TODO: no great way to parse this fully (w/o python-dateutil)
# TODO: re?
def assertUUID(self, item):
assert isinstance(item, str)
# TODO: re for d4d76d69-80d4-4ed7-80c7-211ebcc1a358
def assertORMFilter(self, item):
assert isinstance(
item.filter, (sqlalchemy.sql.elements.BinaryExpression, sqlalchemy.sql.elements.BooleanClauseList)
), "Not an orm filter"
def assertORMFunctionFilter(self, item):
assert item.filter_type == "orm_function"
assert callable(item.filter)
def assertFnFilter(self, item):
assert item.filter and callable(item.filter), "Not a fn filter"
def assertIsJsonifyable(self, item):
# TODO: use galaxy's override
assert isinstance(json.dumps(item), str)
class CreatesCollectionsMixin:
trans: SessionRequestContext
def build_element_identifiers(self, elements):
identifier_list = []
for element in elements:
src = "hda"
# if isinstance( element, model.DatasetCollection ):
# src = 'collection'#?
# elif isinstance( element, model.LibraryDatasetDatasetAssociation ):
# src = 'ldda'#?
identifier_list.append(dict(src=src, name=element.name, id=element.id))
return identifier_list