From bc0ce3d7368d69b6c0b6f45c0c27159a1d4b4887 Mon Sep 17 00:00:00 2001 From: mehrdad1373pedramfar Date: Wed, 27 Jun 2018 11:39:18 +0430 Subject: [PATCH] Write test for mockup, #16 --- bddrest/mockup_server.py | 21 +++++++++++++++++++++ bddrest/tests/test_mockup_server.py | 27 +++++++++++++++++++++++++++ setup.py | 4 +++- 3 files changed, 51 insertions(+), 1 deletion(-) create mode 100644 bddrest/mockup_server.py create mode 100644 bddrest/tests/test_mockup_server.py diff --git a/bddrest/mockup_server.py b/bddrest/mockup_server.py new file mode 100644 index 0000000..1e534e5 --- /dev/null +++ b/bddrest/mockup_server.py @@ -0,0 +1,21 @@ +import contextlib +import threading +from wsgiref.simple_server import WSGIRequestHandler, WSGIServer + + +@contextlib.contextmanager +def http_server(app=None, handler_class=WSGIRequestHandler, + server_class=WSGIServer, bind=('localhost', 8082)): + + server = server_class(bind, handler_class) + if app: + assert isinstance(server, WSGIServer) + server.set_app(app) + thread = threading.Thread( + target=server.serve_forever, name='sa-media test server.', daemon=True + ) + thread.start() + url = f'http://{server.server_address[0]}:{server.server_address[1]}' + yield server, url + server.shutdown() + thread.join() diff --git a/bddrest/tests/test_mockup_server.py b/bddrest/tests/test_mockup_server.py new file mode 100644 index 0000000..5421086 --- /dev/null +++ b/bddrest/tests/test_mockup_server.py @@ -0,0 +1,27 @@ +import unittest + +import requests +from nanohttp import Controller, html, Application + +from bddrest.mockup_server import http_server + + +class App(Application): + def __init__(self): + super().__init__(root=Root()) + + +class Root(Controller): + @html + def index(self): + return 'test' + + +class MockUpServerTestCase(unittest.TestCase): + with http_server(app=App(), bind=('localhost', 8087)) as (server, url): + response = requests.get(url) + assert response.content == b'test' + + +if __name__ == '__main__': + unittest.main() diff --git a/setup.py b/setup.py index edd9a14..18e740c 100644 --- a/setup.py +++ b/setup.py @@ -10,9 +10,11 @@ dependencies = [ + 'nanohttp', 'webtest', 'pyyaml', - 'argcomplete' + 'argcomplete', + 'requests' ]