def test_validate_buildly_wfl1_not_authenticated_user(self): request = self.get_mock_request('/', APIGatewayView) wflvl1 = factories.WorkflowLevel1() error_message = 'Authentication credentials were not provided.' with self.assertRaisesMessage(NotAuthenticated, error_message): validate_object_access(request, wflvl1)
def test_validate_buildly_wfl1_no_permission(self): request = self.get_mock_request('/', APIGatewayView, self.core_user) wflvl1 = factories.WorkflowLevel1() error_message = 'You do not have permission to perform this action.' with self.assertRaisesMessage(PermissionDenied, error_message): validate_object_access(request, wflvl1)
def test_validate_buildly_wfl1_access_superuser(self): self.core_user.is_staff = True self.core_user.is_superuser = True self.core_user.save() request = self.get_mock_request('/', APIGatewayView, self.core_user) wflvl1 = factories.WorkflowLevel1( organization=self.core_user.organization) validate_object_access(request, wflvl1)
def test_validate_core_user_access(self): request = self.get_mock_request('/a-jedis-path/', APIGatewayView, self.core_user) request.resolver_match = Mock(url_name='obi-wan-kenobi') core_user = factories.CoreUser() ret = validate_object_access(request, core_user) self.assertIsNone(ret)
def _expand_data(self, request: Request, extend_models: list): """ Use extension maps to fetch data from different services and replace the relationship key by real data. :param Request request: incoming request :param list extend_models: list of dicts with relationships info :return dict: relations with their data """ result = dict() for extend_model in extend_models: data = None if extend_model['service'] == 'buildly': if hasattr(wfm, extend_model['model']): cls = getattr(wfm, extend_model['model']) uuid_name = self._get_buildly_uuid_name(cls) lookup = {uuid_name: extend_model['pk']} try: obj = cls.objects.get(**lookup) except cls.DoesNotExist as e: logger.info(e) except ValueError: logger.info(f' Not found: {extend_model["model"]} with' f' uuid_name={extend_model["pk"]}') else: utils.validate_object_access(request, obj) data = model_to_dict(obj) else: app = self._load_swagger_resource(extend_model['service']) # remove query_params from original request request._request.GET = QueryDict(mutable=True) # create and perform a service request res = self._perform_service_request(app=app, request=request, **extend_model) data = res.data if data is not None: result[extend_model['relationship_key']] = data return result
def test_validate_buildly_logic_module_no_viewset(self): request = self.get_mock_request('/', APIGatewayView, self.core_user) lm = factories.LogicModule() with self.assertRaises(GatewayError): validate_object_access(request, lm)