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)
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)
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)
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)
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)
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)
def test_validate_url_param_string(self): request = self._prepare_request_mock() validate_url_param(request, 'param', 'index.html', force_absolute=False)
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)
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)
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)
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)
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)
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)
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)
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)
def test_validate_url_param_string(self): request = self._prepare_request_mock() validate_url_param(request, 'param', 'index.html', force_absolute=False)