def decorated(*args, **kwargs): # Recover the auth object auth_type, token = self.get_auth_from_header() # Base header for errors headers = {HTTPAUTH_AUTH_HEADER: self.authenticate_header()} # Internal API 'self' reference decorated_self = Meta.get_self_reference_from_args(*args) if auth_type is None or auth_type.lower() != self._scheme.lower(): # Wrong authentication string msg = "Valid credentials have to be provided " + \ "inside Headers, e.g. %s: '%s %s'" % \ (HTTPAUTH_AUTH_FIELD, HTTPAUTH_DEFAULT_SCHEME, 'TOKEN') # return decorated_self.send_errors( # label="No authentication schema", message=msg, headers=headers, code=hcodes.HTTP_BAD_UNAUTHORIZED) # Handling OPTIONS forwarded to our application: # ignore headers and let go, avoid unwanted interactions with CORS if request.method != 'OPTIONS': # Check authentication token_fn = decorated_self.auth.verify_token if not self.authenticate(token_fn, token): # Clear TCP receive buffer of any pending data request.data # Mimic the response from a normal endpoint # To use the same standards return decorated_self.send_errors( message="Invalid token received '%s'" % token, headers=headers, code=hcodes.HTTP_BAD_UNAUTHORIZED) # Check roles if len(roles) > 0: roles_fn = decorated_self.auth.verify_roles if not self.authenticate_roles(roles_fn, roles, required_roles): return decorated_self.send_errors( message="You are not authorized: missing privileges", code=hcodes.HTTP_BAD_UNAUTHORIZED) return f(*args, **kwargs)
def test(): meta = Meta() cls_name = "Meta" import utilities modules = meta.get_submodules_from_package(utilities) assert "meta" in modules sub_modules = meta.import_submodules_from_package("utilities") assert sub_modules is not None assert isinstance(sub_modules, list) assert len(sub_modules) > 0 module = meta.get_module_from_string("utilities.meta") assert module is not None assert hasattr(module, cls_name) classes = meta.get_classes_from_module(module) assert classes is not None assert isinstance(classes, dict) assert cls_name in classes assert classes[cls_name].__name__ == cls_name new_classes = meta.get_new_classes_from_module(module) assert new_classes is not None assert isinstance(new_classes, dict) assert cls_name in new_classes assert new_classes[cls_name].__name__ == cls_name meta_class = meta.get_class_from_string(cls_name, module) assert meta_class is not None assert meta_class.__name__ == cls_name methods = meta.get_methods_inside_instance(meta, private_methods=True) assert methods is not None assert isinstance(methods, dict) # it is a static method assert "get_methods_inside_instance" not in methods assert "get_authentication_module" in methods metacls = meta.metaclassing(Meta, "Test") assert metacls is not None assert metacls.__name__ == "Test" self_ref = meta.get_self_reference_from_args(meta, "test", 1) assert self_ref == meta