def test_retrieve_data_from_cache(self): test_redis = get_auth_redis_client() self.assertIsNone(_retrieve_data_from_cache(test_redis, url='http://mockurl', tenant='tenant-id', cache_key=None)) retval = _retrieve_data_from_cache(test_redis, url='http://mockurl', tenant='tenant-id', cache_key='cache-key') self.assertIsNone(retval) with mock.patch.object(test_redis, 'get', side_effect=side_effect_exception): self.assertIsNone(_retrieve_data_from_cache(test_redis, url='http://mockurl', tenant='tenant-id', cache_key='cache-key')) with mock.patch.object(test_redis, 'get', side_effect=side_effect_redis_getdata): retval = _retrieve_data_from_cache(test_redis, url='http://mockurl', tenant='tenant-id', cache_key='cache-key') self.assertIsNotNone(retval) self.assertEqual(retval['tenant'], 'tenant-id') self.assertEqual(retval['token'], 'the-token') self.assertEqual(retval['expires'], '2125-09-04T14:09:20.236Z') with mock.patch.object(test_redis, 'get', side_effect=side_effect_redis_getdata_wrong): self.assertIsNone(_retrieve_data_from_cache(test_redis, url='http://mockurl', tenant='tenant-id', cache_key='cache-key'))
def validate_client_token(redis_client, url, tenant, cache_key): """Validate Input Client Token :param redis_client: redis.Redis object connected to the redis cache :param url: Keystone Identity URL to authenticate against :param tenant: tenant id of user data to retrieve :param cache_key: client side auth_token for the tenant_id :returns: True and token-data on success, False and None otherwise """ try: # Try to get the client's access infomration from cache token_data = _retrieve_data_from_cache(redis_client, url, tenant, cache_key) if token_data is not None: norm = TokenBase.normal_time(token_data['expires']) if TokenBase.will_expire_soon(TokenBase. normal_time(token_data['expires'])): LOG.info('Token has expired') else: return True, token_data['token'] LOG.debug(('Unable to get Access information for ' '%(s_tenant)s') % { 's_tenant': tenant }) return False, None except Exception as ex: msg = ('Endpoint: Error while trying to authenticate against' ' %(s_url)s - %(s_except)s') % { 's_url': url, 's_except': str(ex) } LOG.debug(msg) return False, None