Add validation stub #5

Merged
dkdent merged 4 commits from validation_stub into master 2020-12-01 23:53:32 +01:00
2 changed files with 38 additions and 2 deletions

20
app.py
View file

@ -68,11 +68,27 @@ class Oas3Handler(tornado.web.RequestHandler, metaclass=ABCMeta):
self.finish()
def make_app(_auth_provider=None):
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([
(version_path + r"/health", HealthHandler),
(version_path + r"/oas3", Oas3Handler),
(version_path + r"/validate", ValidateHandler),
])
@ -81,7 +97,7 @@ def main():
# Setup
util.run_tornado_server(make_app(auth_provider),
util.run_tornado_server(make_app(),
server_port=port)
# Teardown

20
test.py
View file

@ -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")
Review

sollte die empty entity valid sein?

sollte die empty entity valid sein?
Review

In diesem Stub ja. Es gibt ja noch keine Validierung.

Sobald wir eine haben, müssen da natürlich auch die passenden Testcases stehen.

In diesem Stub ja. Es gibt ja noch keine Validierung. Sobald wir eine haben, müssen da natürlich auch die passenden Testcases stehen.
if __name__ == "__main__":
unittest.main()