def test_caching_client(self): client = britney_utils.get_client('test', self.description, reset=True) client2 = britney_utils.get_client('test', self.description) self.assertEqual(client, client2) client2 = britney_utils.get_client('test2', self.description) self.assertNotEqual(client, client2) client3 = britney_utils.get_client('test', self.description, reset=True) self.assertNotEqual(client, client3)
def generate_client_and_get_data(spore, token, method_name, method_args): """ Generate a britney client and get data from method """ client_name = hashlib.sha1(('%s%s' % (spore, token)).encode('utf-8')).hexdigest() data = None try: middlewares = ( (auth.ApiKey, {'key_name': 'Authorization', 'key_value': 'Token %s' % (token,)}), ) client = britney_utils.get_client(client_name, spore, middlewares=middlewares) func = getattr(client, method_name) res = func(**method_args) data = res.json() except SporeMethodStatusError: raise except SporeMethodCallError: raise else: return data
def get_client(source, middlewares=None, reset=False, suffix='json', name='', **kwargs): global _clients source = source.upper() name = name or source # TODO: base_middlewares in settings base_middlewares = (('ApiKey', { 'key_name': 'Authorization', 'key_value': 'Token {}'.format(getattr(settings, f'{source}WS_TOKEN')) }), ) middlewares = base_middlewares + (middlewares or ()) if source not in _clients: client = britney_utils.get_client( name, getattr(settings, f'{source}WS_DESCRIPTION'), base_url=getattr(settings, f'{source}WS_BASE_URL'), middlewares=middlewares, reset=reset, **kwargs) if suffix: client.add_default('format', suffix) _clients[source] = client return _clients[source]
def test_adding_middlewares(self): middlewares = ( (format.Json, {'predicate': lambda: True}), (auth.Basic, {'username': '******', 'password': '******'}) ) client = britney_utils.get_client('test', self.description, reset=True, middlewares=middlewares) self.assertEqual(len(client.middlewares), 2) self.assertIsInstance(client.middlewares[0][1], format.Json) self.assertIsInstance(client.middlewares[1][1], auth.Basic)
def test_changing_base_url(self): client = britney_utils.get_client('test2', self.description, base_url='http://test.api.org/v2/', reset=True) self.assertEqual(client.base_url, u('http://test.api.org/v2/'))
def test_basic_client(self): client = britney_utils.get_client('test', self.description, reset=True) self.assertEqual(client.base_url, u('http://test.api.org/')) self.assertIsInstance(client.test, britney.core.SporeMethod)