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)
Esempio n. 2
0
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
Esempio n. 3
0
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)