diff --git a/tests/api/v1/generator/base_case.py b/tests/api/v1/generator/base_case.py index cad0089..a380ed7 100644 --- a/tests/api/v1/generator/base_case.py +++ b/tests/api/v1/generator/base_case.py @@ -1,3 +1,4 @@ +from ptero_petri.implementation.petri.webhooks import _retry as retry import abc import collections import errno @@ -157,7 +158,7 @@ def _assemble_callback_url(self, callback_name, request_data): return urlparse.urlunparse(( 'http', 'localhost:%d' % self.callback_port, - '/' + callback_name, + '/callbacks/' + callback_name, '', urllib.urlencode(request_data), '', @@ -197,6 +198,16 @@ def _start_callback_receipt_webserver(self): '--port', str(self.callback_port), ], stdout=subprocess.PIPE, stderr=subprocess.PIPE) + self._wait_for_callback_webserver() + + def _wait_for_callback_webserver(self): + response = retry(requests.get, self._callback_ping_url()) + if response.status_code != 200: + raise RuntimeError('Failed to spin up callback webserver: %s' + % response.text) + + def _callback_ping_url(self): + return 'http://localhost:%d/ping' % self.callback_port def _stop_callback_receipt_webserver(self): _stop_subprocess(self._callback_webserver) diff --git a/tests/api/v1/generator/callback_webserver.py b/tests/api/v1/generator/callback_webserver.py index 7e46c64..b519aa5 100755 --- a/tests/api/v1/generator/callback_webserver.py +++ b/tests/api/v1/generator/callback_webserver.py @@ -26,7 +26,12 @@ def parse_arguments(): app = Flask(__name__) -@app.route('/', methods=['PUT']) +@app.route('/ping', methods=['GET']) +def ping(): + return 'PONG' + + +@app.route('/callbacks/', methods=['PUT']) def log_request(callback_name): try: print callback_name