mirror of
https://github.com/galaxyproject/galaxy.git
synced 2026-09-24 16:30:27 +08:00
127 lines
4.2 KiB
Python
127 lines
4.2 KiB
Python
"""
|
|
"""
|
|
from __future__ import print_function
|
|
|
|
import os
|
|
import imp
|
|
import unittest
|
|
import json
|
|
|
|
test_utils = imp.load_source( 'test_utils',
|
|
os.path.join( os.path.dirname( __file__), '../unittest_utils/utility.py' ) )
|
|
import galaxy_mock
|
|
|
|
from galaxy import eggs
|
|
eggs.require( 'SQLAlchemy >= 0.4' )
|
|
import sqlalchemy
|
|
|
|
from galaxy.managers.users import UserManager
|
|
|
|
# =============================================================================
|
|
admin_email = 'admin@admin.admin'
|
|
admin_users = admin_email
|
|
default_password = '123456'
|
|
|
|
|
|
# =============================================================================
|
|
class BaseTestCase( unittest.TestCase ):
|
|
|
|
@classmethod
|
|
def setUpClass( cls ):
|
|
print( '\n', '-' * 20, 'begin class', cls )
|
|
|
|
@classmethod
|
|
def tearDownClass( cls ):
|
|
print( '\n', '-' * 20, 'end class', cls )
|
|
|
|
def __init__( self, *args ):
|
|
unittest.TestCase.__init__( self, *args )
|
|
|
|
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 ):
|
|
self.trans = galaxy_mock.MockTrans( admin_users=admin_users )
|
|
self.app = self.trans.app
|
|
|
|
def set_up_managers( self ):
|
|
self.user_manager = UserManager( self.app )
|
|
|
|
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 = ( basestring, bool, type( None ), int, float )
|
|
|
|
def assertKeys( self, obj, key_list ):
|
|
self.assertEqual( sorted( obj.keys() ), sorted( key_list ) )
|
|
|
|
def assertHasKeys( self, obj, key_list ):
|
|
for key in key_list:
|
|
if key not in obj:
|
|
self.fail( 'Missing key: ' + key )
|
|
else:
|
|
self.assertTrue( True, 'keys found in object' )
|
|
|
|
def assertNullableBasestring( self, item ):
|
|
if not isinstance( item, ( basestring, type( None ) ) ):
|
|
self.fail( 'Non-nullable basestring: ' + str( type( item ) ) )
|
|
# TODO: len mod 8 and hex re
|
|
self.assertTrue( True, 'is nullable basestring: ' + str( item ) )
|
|
|
|
def assertEncodedId( self, item ):
|
|
if not isinstance( item, basestring ):
|
|
self.fail( 'Non-string: ' + str( type( item ) ) )
|
|
# TODO: len mod 8 and hex re
|
|
self.assertTrue( True, 'is id: ' + item )
|
|
|
|
def assertNullableEncodedId( self, item ):
|
|
if item is None:
|
|
self.assertTrue( True, 'nullable id is None' )
|
|
else:
|
|
self.assertEncodedId( item )
|
|
|
|
def assertDate( self, item ):
|
|
if not isinstance( item, basestring ):
|
|
self.fail( 'Non-string: ' + str( type( item ) ) )
|
|
# TODO: no great way to parse this fully (w/o python-dateutil)
|
|
# TODO: re?
|
|
self.assertTrue( True, 'is date: ' + item )
|
|
|
|
def assertUUID( self, item ):
|
|
if not isinstance( item, basestring ):
|
|
self.fail( 'Non-string: ' + str( type( item ) ) )
|
|
# TODO: re for d4d76d69-80d4-4ed7-80c7-211ebcc1a358
|
|
self.assertTrue( True, 'is uuid: ' + item )
|
|
|
|
def assertORMFilter( self, item, msg=None ):
|
|
if not isinstance( item, sqlalchemy.sql.elements.BinaryExpression ):
|
|
self.fail( 'Not an orm filter: ' + str( type( item ) ) )
|
|
self.assertTrue( True, msg or ( 'is an orm filter: ' + str( item ) ) )
|
|
|
|
def assertFnFilter( self, item, msg=None ):
|
|
if not item or not callable( item ):
|
|
self.fail( 'Not a fn filter: ' + str( type( item ) ) )
|
|
self.assertTrue( True, msg or ( 'is a fn filter: ' + str( item ) ) )
|
|
|
|
def assertIsJsonifyable( self, item ):
|
|
# TODO: use galaxy's override
|
|
self.assertIsInstance( json.dumps( item ), basestring )
|
|
|
|
|
|
# =============================================================================
|
|
if __name__ == '__main__':
|
|
# or more generally, nosetests test_resourcemanagers.py -s -v
|
|
unittest.main()
|