コード例 #1
0
ファイル: test_validate.py プロジェクト: praekelt/junebug
    def test_validate_fail(self):
        class Api(object):
            app = Klein()

            @app.route('/')
            @validate(
                lambda _: errs1,
                lambda _: None,
                lambda _: errs2)
            def route(self, req):
                pass

        errs1 = [{
            'type': '1',
            'message': 'a'
        }]

        errs2 = [{
            'type': 'b',
            'message': 'B'
        }]

        srv = yield ToyServer.from_test(self, Api().app)
        resp = yield treq.get(srv.url, persistent=False)
        self.assertEqual(resp.code, http.BAD_REQUEST)
        content = yield resp.json()
        self.assertEqual(content['result'], {
            'errors': sorted(errs1 + errs2)
        })
        self.assertEqual(content['status'], 400)
        self.assertEqual(content['code'], 'Bad Request')
        self.assertEqual(content['description'], 'api usage error')
コード例 #2
0
ファイル: test_validate.py プロジェクト: praekelt/junebug
    def test_body_schema(self):
        class Api(object):
            app = Klein()

            @app.route('/')
            @json_body
            @validate(body_schema({'properties': {'foo': {'type': 'string'}}}))
            def route(self, req, body):
                pass

        srv = yield ToyServer.from_test(self, Api().app)
        resp = yield treq.get(
            srv.url,
            persistent=False,
            data=json.dumps({'foo': 23}))

        content = yield resp.json()
        self.assertEqual(content['result'], {
            'errors': [{
                'type': 'invalid_body',
                'message': "23 is not of type 'string'",
                'schema_path': ['properties', 'foo', 'type'],
            }]
        })
        self.assertEqual(content['status'], 400)
        self.assertEqual(content['code'], 'Bad Request')
        self.assertEqual(content['description'], 'api usage error')

        resp = yield treq.get(
            srv.url,
            persistent=False,
            data=json.dumps({'foo': 'bar'}))

        self.assertEqual(resp.code, http.OK)
コード例 #3
0
ファイル: test_validate.py プロジェクト: todun/junebug
    def test_body_schema(self):
        class Api(object):
            app = Klein()

            @app.route('/')
            @json_body
            @validate(body_schema({'properties': {'foo': {'type': 'string'}}}))
            def route(self, req, body):
                pass

        srv = yield ToyServer.from_test(self, Api().app)
        resp = yield treq.get(srv.url,
                              persistent=False,
                              data=json.dumps({'foo': 23}))

        content = yield resp.json()
        self.assertEqual(
            content['result'], {
                'errors': [{
                    'type': 'invalid_body',
                    'message': "23 is not of type 'string'",
                    'schema_path': ['properties', 'foo', 'type'],
                }]
            })
        self.assertEqual(content['status'], 400)
        self.assertEqual(content['code'], 'Bad Request')
        self.assertEqual(content['description'], 'api usage error')

        resp = yield treq.get(srv.url,
                              persistent=False,
                              data=json.dumps({'foo': 'bar'}))

        self.assertEqual(resp.code, http.OK)
コード例 #4
0
ファイル: test_utils.py プロジェクト: westerncapelabs/junebug
    def test_response_code(self):
        srv = yield ToyServer.from_test(self)

        @srv.app.route('/')
        def route(req):
            return response(req, '', {}, http.BAD_REQUEST)

        resp = yield treq.get(srv.url, persistent=False)
        self.assertEqual(resp.code, http.BAD_REQUEST)
コード例 #5
0
ファイル: test_utils.py プロジェクト: todun/junebug
    def test_response_code(self):
        srv = yield ToyServer.from_test(self)

        @srv.app.route('/')
        def route(req):
            return response(req, '', {}, http.BAD_REQUEST)

        resp = yield treq.get(srv.url, persistent=False)
        self.assertEqual(resp.code, http.BAD_REQUEST)
コード例 #6
0
ファイル: test_utils.py プロジェクト: todun/junebug
    def test_response_content_type(self):
        srv = yield ToyServer.from_test(self)

        @srv.app.route('/')
        def route(req):
            return response(req, '', {})

        resp = yield treq.get(srv.url, persistent=False)

        self.assertEqual(resp.headers.getRawHeaders('Content-Type'),
                         ['application/json'])
コード例 #7
0
ファイル: test_utils.py プロジェクト: westerncapelabs/junebug
    def test_response_content_type(self):
        srv = yield ToyServer.from_test(self)

        @srv.app.route('/')
        def route(req):
            return response(req, '', {})

        resp = yield treq.get(srv.url, persistent=False)

        self.assertEqual(
            resp.headers.getRawHeaders('Content-Type'),
            ['application/json'])
コード例 #8
0
    def test_validate_pass(self):
        class Api(object):
            app = Klein()

            @app.route("/")
            @validate(lambda _: None, lambda _: None)
            def route(self, req):
                return "ok"

        srv = yield ToyServer.from_test(self, Api().app)
        resp = yield treq.get(srv.url, persistent=False)
        self.assertEqual(resp.code, http.OK)
        self.assertEqual((yield resp.content()), "ok")
コード例 #9
0
ファイル: test_utils.py プロジェクト: westerncapelabs/junebug
    def test_response_data(self):
        srv = yield ToyServer.from_test(self)

        @srv.app.route('/')
        def route(req):
            return response(req, 'bar', {'foo': 23})

        resp = yield treq.get(srv.url, persistent=False)
        content = yield resp.json()
        self.assertEqual(content['result'], {'foo': 23})
        self.assertEqual(content['code'], 'OK')
        self.assertEqual(content['status'], 200)
        self.assertEqual(content['description'], 'bar')
コード例 #10
0
ファイル: test_validate.py プロジェクト: todun/junebug
    def test_validate_pass(self):
        class Api(object):
            app = Klein()

            @app.route('/')
            @validate(lambda _: None, lambda _: None)
            def route(self, req):
                return 'ok'

        srv = yield ToyServer.from_test(self, Api().app)
        resp = yield treq.get(srv.url, persistent=False)
        self.assertEqual(resp.code, http.OK)
        self.assertEqual((yield resp.content()), 'ok')
コード例 #11
0
ファイル: test_utils.py プロジェクト: todun/junebug
    def test_response_data(self):
        srv = yield ToyServer.from_test(self)

        @srv.app.route('/')
        def route(req):
            return response(req, 'bar', {'foo': 23})

        resp = yield treq.get(srv.url, persistent=False)
        content = yield resp.json()
        self.assertEqual(content['result'], {'foo': 23})
        self.assertEqual(content['code'], 'OK')
        self.assertEqual(content['status'], 200)
        self.assertEqual(content['description'], 'bar')
コード例 #12
0
ファイル: test_utils.py プロジェクト: todun/junebug
    def test_json_body(self):
        class Api(object):
            app = Klein()

            @app.route('/')
            @json_body
            def route(self, req, body):
                bodies.append(body)

        bodies = []
        srv = yield ToyServer.from_test(self, Api().app)

        yield treq.get(srv.url, persistent=False, data=json.dumps({'foo': 23}))

        self.assertEqual(bodies, [{'foo': 23}])
コード例 #13
0
ファイル: test_utils.py プロジェクト: westerncapelabs/junebug
    def test_json_body(self):
        class Api(object):
            app = Klein()

            @app.route('/')
            @json_body
            def route(self, req, body):
                bodies.append(body)

        bodies = []
        srv = yield ToyServer.from_test(self, Api().app)

        yield treq.get(
            srv.url,
            persistent=False,
            data=json.dumps({'foo': 23}))

        self.assertEqual(bodies, [{'foo': 23}])
コード例 #14
0
    def test_validate_fail(self):
        class Api(object):
            app = Klein()

            @app.route("/")
            @validate(lambda _: errs1, lambda _: None, lambda _: errs2)
            def route(self, req):
                pass

        errs1 = [{"type": "1", "message": "a"}]

        errs2 = [{"type": "b", "message": "B"}]

        srv = yield ToyServer.from_test(self, Api().app)
        resp = yield treq.get(srv.url, persistent=False)
        self.assertEqual(resp.code, http.BAD_REQUEST)
        content = yield resp.json()
        self.assertEqual(content["result"], {"errors": errs1 + errs2})
        self.assertEqual(content["status"], 400)
        self.assertEqual(content["code"], "Bad Request")
        self.assertEqual(content["description"], "api usage error")
コード例 #15
0
ファイル: test_validate.py プロジェクト: todun/junebug
    def test_validate_fail(self):
        class Api(object):
            app = Klein()

            @app.route('/')
            @validate(lambda _: errs1, lambda _: None, lambda _: errs2)
            def route(self, req):
                pass

        errs1 = [{'type': '1', 'message': 'a'}]

        errs2 = [{'type': 'b', 'message': 'B'}]

        srv = yield ToyServer.from_test(self, Api().app)
        resp = yield treq.get(srv.url, persistent=False)
        self.assertEqual(resp.code, http.BAD_REQUEST)
        content = yield resp.json()
        self.assertEqual(content['result'], {'errors': sorted(errs1 + errs2)})
        self.assertEqual(content['status'], 400)
        self.assertEqual(content['code'], 'Bad Request')
        self.assertEqual(content['description'], 'api usage error')
コード例 #16
0
    def test_body_schema(self):
        class Api(object):
            app = Klein()

            @app.route("/")
            @json_body
            @validate(body_schema({"properties": {"foo": {"type": "string"}}}))
            def route(self, req, body):
                pass

        srv = yield ToyServer.from_test(self, Api().app)
        resp = yield treq.get(srv.url, persistent=False, data=json.dumps({"foo": 23}))

        content = yield resp.json()
        self.assertEqual(
            content["result"], {"errors": [{"type": "invalid_body", "message": "23 is not of type 'string'"}]}
        )
        self.assertEqual(content["status"], 400)
        self.assertEqual(content["code"], "Bad Request")
        self.assertEqual(content["description"], "api usage error")

        resp = yield treq.get(srv.url, persistent=False, data=json.dumps({"foo": "bar"}))

        self.assertEqual(resp.code, http.OK)