Example #1
0
 def test_validate_url_param_number(self):
     request = self._prepare_request_mock()
     try:
         validate_url_param(request, 'param', 5, force_absolute=False)
         self.fail('ErrorResponse not raised by validate_url_param')
     except ErrorResponse as e:
         self.assertEqual(e.response.status_code, 422)
Example #2
0
    def create(self, request):

        received_data = parse_json_request(request)

        if 'options' not in received_data:
            return build_error_response(request, 400, _("Missing marketplace options"))

        validate_url_param(request, 'options.url', received_data['options']['url'])

        if 'user' not in received_data['options'] or received_data['options']['user'] == request.user.username:
            user_entry = request.user
        elif received_data['options'].get('user', None) is not None:
            user_entry = User.objects.get(username=received_data['options']['user'])
        else:
            user_entry = None

        if (user_entry is None or user_entry != request.user) and not request.user.is_superuser:
            return build_error_response(request, 403, _("You don't have permissions for adding public marketplaces"))

        if 'user' in received_data['options']:
            del received_data['options']['user']

        try:
            Market.objects.create(user=user_entry, name=received_data['name'], options=received_data['options'])
        except IntegrityError:
            return build_error_response(request, 409, 'Market name already in use')

        return HttpResponse(status=201)
Example #3
0
 def test_validate_url_param_string_relative_urls_not_allowed(self):
     request = self._prepare_request_mock()
     try:
         validate_url_param(request, 'param', 'index.html', force_absolute=True)
         self.fail('ErrorResponse not raised by validate_url_param')
     except ErrorResponse as e:
         self.assertEqual(e.response.status_code, 422)
Example #4
0
    def test_validate_url_param_string_force_absolute(self):

        request = self._prepare_request_mock()
        validate_url_param(request,
                           'param',
                           'http://example.com/index.html',
                           force_absolute=True)
Example #5
0
    def create(self, request):

        try:
            received_data = json.loads(request.body)
        except ValueError as e:
            msg = _("malformed json data: %s") % e
            return build_error_response(request, 400, msg)

        if 'options' not in received_data:
            return build_error_response(request, 400, _("Missing marketplace options"))

        try:
            validate_url_param('options.url', received_data['options']['url'])
        except (TypeError, ValueError) as e:
            return build_error_response(request, 422, text_type(e))

        if 'user' not in received_data['options'] or received_data['options']['user'] == request.user.username:
            user_entry = request.user
        elif received_data['options'].get('user', None) is not None:
            user_entry = User.objects.get(username=received_data['options']['user'])
        else:
            user_entry = None

        if (user_entry is None or user_entry != request.user) and not request.user.is_superuser:
            return build_error_response(request, 403, _("You don't have permissions for adding public marketplaces"))

        if 'user' in received_data['options']:
            del received_data['options']['user']

        try:
            Market.objects.create(user=user_entry, name=received_data['name'], options=json.dumps(received_data['options']))
        except IntegrityError:
            return build_error_response(request, 409, 'Market name already in use')

        return HttpResponse(status=201)
Example #6
0
 def test_validate_url_param_number(self):
     request = self._prepare_request_mock()
     try:
         validate_url_param(request, 'param', 5, force_absolute=False)
         self.fail('ErrorResponse not raised by validate_url_param')
     except ErrorResponse as e:
         self.assertEqual(e.response.status_code, 422)
Example #7
0
    def test_validate_url_param_string(self):

        request = self._prepare_request_mock()
        validate_url_param(request,
                           'param',
                           'index.html',
                           force_absolute=False)
Example #8
0
 def test_validate_url_param_string_relative_urls_not_allowed(self):
     request = self._prepare_request_mock()
     try:
         validate_url_param(request, 'param', 'index.html', force_absolute=True)
         self.fail('ErrorResponse not raised by validate_url_param')
     except ErrorResponse as e:
         self.assertEqual(e.response.status_code, 422)
Example #9
0
    def test_validate_url_param_string_invalid_schema(self):

        request = self._prepare_request_mock()
        try:
            validate_url_param(request, 'param', 'file:///etc/password', force_absolute=False)
            self.fail('ErrorResponse not raised by validate_url_param')
        except ErrorResponse as e:
            self.assertEqual(e.response.status_code, 422)
Example #10
0
    def test_validate_url_param_string_empty_and_required(self):

        request = self._prepare_request_mock()
        try:
            validate_url_param(request, 'param', '', force_absolute=False, required=True)
            self.fail('ErrorResponse not raised by validate_url_param')
        except ErrorResponse as e:
            self.assertEqual(e.response.status_code, 422)
Example #11
0
    def test_validate_url_param_string_invalid_schema(self):

        request = self._prepare_request_mock()
        try:
            validate_url_param(request, 'param', 'file:///etc/password', force_absolute=False)
            self.fail('ErrorResponse not raised by validate_url_param')
        except ErrorResponse as e:
            self.assertEqual(e.response.status_code, 422)
Example #12
0
    def test_validate_url_param_string_empty_and_required(self):

        request = self._prepare_request_mock()
        try:
            validate_url_param(request, 'param', '', force_absolute=False, required=True)
            self.fail('ErrorResponse not raised by validate_url_param')
        except ErrorResponse as e:
            self.assertEqual(e.response.status_code, 422)
Example #13
0
    def create(self, request):

        received_data = parse_json_request(request)
        received_data.setdefault("public", False)

        validate_url_param(request, 'url', received_data['url'])

        if 'user' not in received_data or received_data[
                'user'] == request.user.username:
            target_user = request.user
        else:
            try:
                target_user = User.objects.get(username=received_data['user'])
            except:
                return build_error_response(request, 422,
                                            _("invalid user option"))

        if target_user != request.user and not request.user.is_superuser:
            return build_error_response(
                request, 403,
                _("You don't have permissions for adding marketplaces in name of other user"
                  ))

        received_data['user'] = target_user.username

        try:
            Market.objects.create(user=target_user,
                                  name=received_data['name'],
                                  public=received_data['public'],
                                  options=received_data)
        except IntegrityError:
            return build_error_response(request, 409,
                                        'Market name already in use')

        market_managers = get_market_managers(target_user)
        market_managers[target_user.username + '/' +
                        received_data['name']].create(target_user)

        return HttpResponse(status=201)
Example #14
0
    def create(self, request):

        received_data = parse_json_request(request)

        if 'options' not in received_data:
            return build_error_response(request, 400,
                                        _("Missing marketplace options"))

        validate_url_param(request, 'options.url',
                           received_data['options']['url'])

        if 'user' not in received_data['options'] or received_data['options'][
                'user'] == request.user.username:
            user_entry = request.user
        elif received_data['options'].get('user', None) is not None:
            user_entry = User.objects.get(
                username=received_data['options']['user'])
        else:
            user_entry = None

        if (user_entry is None or
                user_entry != request.user) and not request.user.is_superuser:
            return build_error_response(
                request, 403,
                _("You don't have permissions for adding public marketplaces"))

        if 'user' in received_data['options']:
            del received_data['options']['user']

        try:
            Market.objects.create(user=user_entry,
                                  name=received_data['name'],
                                  options=received_data['options'])
        except IntegrityError:
            return build_error_response(request, 409,
                                        'Market name already in use')

        return HttpResponse(status=201)
Example #15
0
    def test_validate_url_param_string_force_absolute(self):

        request = self._prepare_request_mock()
        validate_url_param(request, 'param', 'http://example.com/index.html', force_absolute=True)
Example #16
0
    def test_validate_url_param_string(self):

        request = self._prepare_request_mock()
        validate_url_param(request, 'param', 'index.html', force_absolute=False)