def test_offline(self): """Test offline after 3 retries""" global token_1 _mock_request([_request_offline]) try: client = AstakosClient("https://example.com", retry=3) client.get_user_info(token_1) except AstakosClientException: pass else: self.fail("Should have raised AstakosClientException exception")
def _invalid_token(self, pool): token = "skaksaFlBl+fasFdaf24sx" _mock_request([_request_ok]) try: client = AstakosClient("https://example.com", use_pool=pool) client.get_user_info(token) except Unauthorized: pass except Exception: self.fail("Should have returned 401 (Invalid X-Auth-Token)") else: self.fail("Should have returned 401 (Invalid X-Auth-Token)")
def _auth_user(self, token, user_info, usage, pool): _mock_request([_request_ok]) try: client = AstakosClient("https://example.com", use_pool=pool) auth_info = client.get_user_info(token, usage=usage) except: self.fail("Shouldn't raise an Exception") self.assertEqual(user_info, auth_info)
def test_offline_retry(self): """Test retry functionality for getUserInfo""" global token_1, user_1 _mock_request([_request_offline, _request_offline, _request_ok]) try: client = AstakosClient("https://example.com", retry=2) auth_info = client.get_user_info(token_1, usage=True) except: self.fail("Shouldn't raise an Exception") self.assertEqual(user_1, auth_info)
def wrapper(request, *args, **kwargs): try: # Get the requested serialization format serialization = get_serialization( request, format_allowed, serializations[0]) # If guessed serialization is not supported, fallback to # the default serialization or return an API error in case # strict serialization flag is set. if not serialization in serializations: if strict_serlization: raise faults.BadRequest(("%s serialization not " "supported") % serialization) serialization = serializations[0] request.serialization = serialization # Check HTTP method if http_method and request.method != http_method: raise faults.BadRequest("Method not allowed") # Get authentication token request.x_auth_token = None if token_required or user_required: token = get_token(request) if not token: msg = "Access denied. No authentication token" raise faults.Unauthorized(msg) request.x_auth_token = token # Authenticate if user_required: assert(token_required), "Can not get user without token" astakos = astakos_url or settings.ASTAKOS_BASE_URL astakos = AstakosClient(astakos, use_pool=True, retry=2, logger=logger) user_info = astakos.get_user_info(token) request.user_uniq = user_info["uuid"] request.user = user_info # Get the response object response = func(request, *args, **kwargs) # Fill in response variables update_response_headers(request, response) return response except faults.Fault, fault: if fault.code >= 500: logger.exception("API ERROR") return render_fault(request, fault)