From 2f0dd4cf1c2faa0a12645109eb73bb4d2e0e7d30 Mon Sep 17 00:00:00 2001 From: Stefan Haun Date: Tue, 1 Dec 2020 20:55:30 +0100 Subject: [PATCH 1/4] Fix dependency on auth_provider --- app.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app.py b/app.py index 3515974..2510298 100644 --- a/app.py +++ b/app.py @@ -68,7 +68,7 @@ class Oas3Handler(tornado.web.RequestHandler, metaclass=ABCMeta): self.finish() -def make_app(_auth_provider=None): +def make_app(): version_path = r"/v[0-9]" return tornado.web.Application([ (version_path + r"/health", HealthHandler), @@ -81,7 +81,7 @@ def main(): # Setup - util.run_tornado_server(make_app(auth_provider), + util.run_tornado_server(make_app(), server_port=port) # Teardown From 31b9859aebc7cb207f20926f63cde932affe4620 Mon Sep 17 00:00:00 2001 From: Stefan Haun Date: Tue, 1 Dec 2020 20:55:49 +0100 Subject: [PATCH 2/4] Add validate handler --- app.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/app.py b/app.py index 2510298..f9300df 100644 --- a/app.py +++ b/app.py @@ -68,6 +68,21 @@ class Oas3Handler(tornado.web.RequestHandler, metaclass=ABCMeta): self.finish() +class ValidateHandler(tornado.web.RequestHandler, metaclass=ABCMeta): + def post(self): + self.set_header("Content-Type", "application/json") + + entity = self.request.body.decode() + + # TODO call validator + validation_result = { + "valid": "true" + } + + self.write(validation_result) + self.finish() + + def make_app(): version_path = r"/v[0-9]" return tornado.web.Application([ From de96888d40bd3a04498f93561cc7ec5d11444b71 Mon Sep 17 00:00:00 2001 From: Stefan Haun Date: Tue, 1 Dec 2020 20:56:21 +0100 Subject: [PATCH 3/4] Integrate Validate Handler with make_app --- app.py | 1 + 1 file changed, 1 insertion(+) diff --git a/app.py b/app.py index f9300df..96a27ef 100644 --- a/app.py +++ b/app.py @@ -88,6 +88,7 @@ def make_app(): return tornado.web.Application([ (version_path + r"/health", HealthHandler), (version_path + r"/oas3", Oas3Handler), + (version_path + r"/validate", ValidateHandler), ]) From 2106256f89794bc7334ecf1c62b982b5c5c83dcd Mon Sep 17 00:00:00 2001 From: Stefan Haun Date: Tue, 1 Dec 2020 21:03:11 +0100 Subject: [PATCH 4/4] Add simple validation test case --- test.py | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/test.py b/test.py index 84a6315..ee268d3 100644 --- a/test.py +++ b/test.py @@ -38,5 +38,25 @@ class TestBaseAPI(tornado.testing.AsyncHTTPTestCase): self.assertEqual(response.body.decode(), oas3f.read(), "OAS3 content differs from spec file!") +class TestValidation(tornado.testing.AsyncHTTPTestCase): + """Validation test cases""" + def get_app(self): + return make_app() + + def test_null_validation(self): + entity = {} + + response = self.fetch('/v0/validate', + method='POST', + body=json.dumps(entity)) + + self.assertEqual(200, response.code, "Validation must always return 200") + + validation_result = json.loads(response.body.decode()) + + self.assertIn('valid', validation_result, "Key 'valid' expected in validation result") + self.assertTrue(validation_result['valid'], "Validation result is expected to be valid==true") + + if __name__ == "__main__": unittest.main()