예제 #1
0
 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")
예제 #2
0
 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)")
예제 #3
0
 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)
예제 #4
0
 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)
예제 #5
0
        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)