Пример #1
0
    def test_parse_required(self, app):
        parser = RequestParser()
        parser.add_argument("foo", required=True, location="values")

        expected = {
            "foo":
            "Missing required parameter in the post body or the query string"
        }
        with pytest.raises(BadRequest) as cm:
            parser.parse_args()

        assert cm.value.data["message"] == "Input payload validation failed"
        assert cm.value.data["errors"] == expected

        parser = RequestParser()
        parser.add_argument("bar",
                            required=True,
                            location=["values", "cookies"])

        expected = {
            "bar": ("Missing required parameter in the post body or the query "
                    "string or the request's cookies")
        }

        with pytest.raises(BadRequest) as cm:
            parser.parse_args()
        assert cm.value.data["message"] == "Input payload validation failed"
        assert cm.value.data["errors"] == expected
Пример #2
0
    def test_parse_required(self, app):
        parser = RequestParser()
        parser.add_argument('foo', required=True, location='values')

        expected = {
            'foo':
            'Missing required parameter in the post body or the query string'
        }
        with pytest.raises(BadRequest) as cm:
            parser.parse_args()

        assert cm.value.data['message'] == 'Input payload validation failed'
        assert cm.value.data['errors'] == expected

        parser = RequestParser()
        parser.add_argument('bar',
                            required=True,
                            location=['values', 'cookies'])

        expected = {
            'bar': ("Missing required parameter in the post body or the query "
                    "string or the request's cookies")
        }

        with pytest.raises(BadRequest) as cm:
            parser.parse_args()
        assert cm.value.data['message'] == 'Input payload validation failed'
        assert cm.value.data['errors'] == expected
Пример #3
0
class ProjectInviteResource(Resource):
    parser = RequestParser()
    parser.add_argument("users",
                        type=argument_list_type(int),
                        location="json",
                        required=True)

    @api.expect(parser)
    @api.response(
        200,
        "List of users who were sent an invitaion",
        api.model("ProjectUsers",
                  {"users": fields.Nested(user_model, as_list=True)}),
    )
    @api.response(401, "Invalid users' data supplied")
    def post(self, project_slug: str):

        users_ids: List[int] = self.parser.parse_args()

        users: List[User] = User.query.filter(User.id.in_(users_ids)).all()

        if len(users) != len(users_ids):
            raise InvalidUsage.custom_error("Users data supplied are invalid",
                                            401)

        return [{
            "id": user.id,
            "name": user.name,
            "email": user.email,
        } for user in users]
Пример #4
0
    def test_parse_unicode_app(self, app):
        parser = RequestParser()
        parser.add_argument('foo')

        with app.test_request_context('/bubble?foo=barß'):
            args = parser.parse_args()
            assert args['foo'] == 'barß'
Пример #5
0
    def test_parse_unicode(self, app):
        req = Request.from_values('/bubble?foo=barß')
        parser = RequestParser()
        parser.add_argument('foo')

        args = parser.parse_args(req)
        assert args['foo'] == 'barß'
Пример #6
0
    def test_viewargs(self, mocker):
        req = Request.from_values()
        req.view_args = {'foo': 'bar'}
        parser = RequestParser()
        parser.add_argument('foo', location=['view_args'])
        args = parser.parse_args(req)
        assert args['foo'] == 'bar'

        req = mocker.Mock()
        req.values = ()
        req.json = None
        req.view_args = {'foo': 'bar'}
        parser = RequestParser()
        parser.add_argument('foo', store_missing=True)
        args = parser.parse_args(req)
        assert args['foo'] is None
Пример #7
0
    def test_trim_request_parser(self, app):
        req = Request.from_values('/bubble?foo= 1 &bar=bees&n=22')
        parser = RequestParser(trim=False)
        parser.add_argument('foo')
        args = parser.parse_args(req)
        assert args['foo'] == ' 1 '

        parser = RequestParser(trim=True)
        parser.add_argument('foo')
        args = parser.parse_args(req)
        assert args['foo'] == '1'

        parser = RequestParser(trim=True)
        parser.add_argument('foo', type=int)
        args = parser.parse_args(req)
        assert args['foo'] == 1
Пример #8
0
    def test_passing_arguments_object(self, app):
        req = Request.from_values('/bubble?foo=bar')
        parser = RequestParser()
        parser.add_argument(Argument('foo'))

        args = parser.parse_args(req)
        assert args['foo'] == 'bar'
Пример #9
0
 def test_location(self):
     parser = RequestParser()
     parser.add_argument("default", type=int)
     parser.add_argument("in_values", type=int, location="values")
     parser.add_argument("in_query", type=int, location="args")
     parser.add_argument("in_headers", type=int, location="headers")
     parser.add_argument("in_cookie", type=int, location="cookie")
     assert parser.__schema__ == [
         {
             "name": "default",
             "type": "integer",
             "in": "query",
         },
         {
             "name": "in_values",
             "type": "integer",
             "in": "query",
         },
         {
             "name": "in_query",
             "type": "integer",
             "in": "query",
         },
         {
             "name": "in_headers",
             "type": "integer",
             "in": "header",
         },
     ]
Пример #10
0
    def test_parse_default_append(self):
        parser = RequestParser()
        parser.add_argument("foo", default="bar", action="append", store_missing=True)

        args = parser.parse_args()

        assert args["foo"] == "bar"
Пример #11
0
    def test_parse_unicode(self, app):
        req = Request.from_values("/bubble?foo=barß")
        parser = RequestParser()
        parser.add_argument("foo")

        args = parser.parse_args(req)
        assert args["foo"] == "barß"
Пример #12
0
    def test_trim_request_parser(self, app):
        req = Request.from_values("/bubble?foo= 1 &bar=bees&n=22")
        parser = RequestParser(trim=False)
        parser.add_argument("foo")
        args = parser.parse_args(req)
        assert args["foo"] == " 1 "

        parser = RequestParser(trim=True)
        parser.add_argument("foo")
        args = parser.parse_args(req)
        assert args["foo"] == "1"

        parser = RequestParser(trim=True)
        parser.add_argument("foo", type=int)
        args = parser.parse_args(req)
        assert args["foo"] == 1
Пример #13
0
    def test_viewargs(self, mocker):
        req = Request.from_values()
        req.view_args = {"foo": "bar"}
        parser = RequestParser()
        parser.add_argument("foo", location=["view_args"])
        args = parser.parse_args(req)
        assert args["foo"] == "bar"

        req = mocker.Mock()
        req.values = ()
        req.json = None
        req.view_args = {"foo": "bar"}
        parser = RequestParser()
        parser.add_argument("foo", store_missing=True)
        args = parser.parse_args(req)
        assert args["foo"] is None
Пример #14
0
    def test_passing_arguments_object(self, app):
        req = Request.from_values("/bubble?foo=bar")
        parser = RequestParser()
        parser.add_argument(Argument("foo"))

        args = parser.parse_args(req)
        assert args["foo"] == "bar"
Пример #15
0
    def test_parse_unicode_app(self, app):
        parser = RequestParser()
        parser.add_argument("foo")

        with app.test_request_context("/bubble?foo=barß"):
            args = parser.parse_args()
            assert args["foo"] == "barß"
Пример #16
0
    def test_primitive_types(self):
        parser = RequestParser()
        parser.add_argument("int", type=int, help="Some integer")
        parser.add_argument("str", type=str, help="Some string")
        parser.add_argument("float", type=float, help="Some float")

        assert parser.__schema__ == [
            {
                "description": "Some integer",
                "type": "integer",
                "name": "int",
                "in": "query",
            },
            {
                "description": "Some string",
                "type": "string",
                "name": "str",
                "in": "query",
            },
            {
                "description": "Some float",
                "type": "number",
                "name": "float",
                "in": "query",
            },
        ]
Пример #17
0
    def test_not_json_location_and_content_type_json(self, app):
        parser = RequestParser()
        parser.add_argument("foo", location="args")

        with app.test_request_context("/bubble",
                                      method="get",
                                      content_type="application/json"):
            parser.parse_args()  # Should not raise a 400: BadRequest
Пример #18
0
    def test_parse_gte_lte_eq(self):
        parser = RequestParser()
        parser.add_argument("foo",
                            operators=[">=", "<=", "="],
                            action="append"),

        args = parser.parse_args()
        assert args["foo"] == ["bar", "bat", "foo"]
Пример #19
0
    def test_parse_choices_insensitive(self, app):
        req = Request.from_values("/bubble?foo=BAT")

        parser = RequestParser()
        parser.add_argument("foo", choices=["bat"], case_sensitive=False),

        args = parser.parse_args(req)
        assert "bat" == args.get("foo")

        # both choices and args are case_insensitive
        req = Request.from_values("/bubble?foo=bat")

        parser = RequestParser()
        parser.add_argument("foo", choices=["BAT"], case_sensitive=False),

        args = parser.parse_args(req)
        assert "bat" == args.get("foo")
Пример #20
0
    def test_parse_choices_sensitive(self, app):
        req = Request.from_values("/bubble?foo=BAT")

        parser = RequestParser()
        parser.add_argument("foo", choices=["bat"], case_sensitive=True),

        with pytest.raises(BadRequest):
            parser.parse_args(req)
Пример #21
0
    def test_parse_choices(self, app):
        req = Request.from_values("/bubble?foo=bar")

        parser = RequestParser()
        parser.add_argument("foo", choices=["bat"]),

        with pytest.raises(BadRequest):
            parser.parse_args(req)
Пример #22
0
 def test_location_json(self):
     parser = RequestParser()
     parser.add_argument("in_json", type=str, location="json")
     assert parser.__schema__ == [{
         "name": "in_json",
         "type": "string",
         "in": "body",
     }]
Пример #23
0
    def test_parse_store_missing(self, app):
        req = Request.from_values("/bubble")

        parser = RequestParser()
        parser.add_argument("foo", store_missing=False)

        args = parser.parse_args(req)
        assert "foo" not in args
Пример #24
0
 def test_location_form(self):
     parser = RequestParser()
     parser.add_argument("in_form", type=int, location="form")
     assert parser.__schema__ == [{
         "name": "in_form",
         "type": "integer",
         "in": "formData",
     }]
Пример #25
0
    def test_parse_lte_gte_mock(self, mocker):
        mock_type = mocker.Mock()

        parser = RequestParser()
        parser.add_argument("foo", type=mock_type, operators=["<="])

        parser.parse_args()
        mock_type.assert_called_with("bar", "foo", "<=")
Пример #26
0
    def test_parse_ignore(self, app):
        req = Request.from_values("/bubble?foo=bar")

        parser = RequestParser()
        parser.add_argument("foo", type=int, ignore=True, store_missing=True),

        args = parser.parse_args(req)
        assert args["foo"] is None
Пример #27
0
 def test_unknown_type(self):
     parser = RequestParser()
     parser.add_argument("unknown", type=lambda v: v)
     assert parser.__schema__ == [{
         "name": "unknown",
         "type": "string",
         "in": "query",
     }]
Пример #28
0
    def test_type_callable(self, app):
        req = Request.from_values("/bubble?foo=1")

        parser = RequestParser()
        parser.add_argument("foo", type=lambda x: x, required=False),

        args = parser.parse_args(req)
        assert args["foo"] == "1"
Пример #29
0
    def test_parse_choices_correct(self, app):
        req = Request.from_values("/bubble?foo=bat")

        parser = RequestParser()
        parser.add_argument("foo", choices=["bat"]),

        args = parser.parse_args(req)
        assert args["foo"] == "bat"
Пример #30
0
 def test_location_files(self):
     parser = RequestParser()
     parser.add_argument("in_files", type=FileStorage, location="files")
     assert parser.__schema__ == [{
         "name": "in_files",
         "type": "file",
         "in": "formData",
     }]