Esempio n. 1
0
    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)
Esempio n. 2
0
    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)
Esempio n. 3
0
    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)
Esempio n. 4
0
 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)
Esempio n. 5
0
    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
Esempio n. 6
0
    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)