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')
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)
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)
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)
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'])
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'])
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")
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')
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')
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}])
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}])
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")
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')
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)