From 9d1f6af57ce28239a83042a8b534bd9f9f277693 Mon Sep 17 00:00:00 2001 From: Josue Kouka Date: Tue, 31 Jan 2017 16:46:04 +0100 Subject: [PATCH 1/2] don't associate user if PhantomJS response is erroneous (#14813) --- mandayejs/mandaye/utils.py | 4 ++-- mandayejs/mandaye/views.py | 3 +++ tests/test_mandayejs.py | 2 +- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/mandayejs/mandaye/utils.py b/mandayejs/mandaye/utils.py index 0cd1979..0341b2a 100644 --- a/mandayejs/mandaye/utils.py +++ b/mandayejs/mandaye/utils.py @@ -44,8 +44,8 @@ def exec_phantom(data, script='do_login.js'): try: result = json.loads(stdout) except (ValueError,): - result = {"result": "failure, couldn't decode JSON"} - logger.error(stdout) + result = {"result": "json_error"} + logger.error("invalid json: %s" % stdout) if result.get('stderr'): logger.warning(result['stderr']) diff --git a/mandayejs/mandaye/views.py b/mandayejs/mandaye/views.py index 79a2c45..34a1615 100644 --- a/mandayejs/mandaye/views.py +++ b/mandayejs/mandaye/views.py @@ -159,6 +159,9 @@ def post_login_do(request, *args, **kwargs): elif result.get('result') == 'timeout': messages.error(request, _('server took too long to respond')) url = resolve_url('associate') + elif result.get('result') == 'json_error': + messages.error(request, _('invalid response from server')) + url = resolve_url('associate') elif result.get('result') == 'redirect': url = urlparse(result.get('url', '/')) url = url.path diff --git a/tests/test_mandayejs.py b/tests/test_mandayejs.py index 1735040..32ed6b8 100644 --- a/tests/test_mandayejs.py +++ b/tests/test_mandayejs.py @@ -255,7 +255,7 @@ def test_phantom_invalid_json(mocked_popen, caplog): assert record.levelname == 'ERROR' assert record.message == 'This is not a valid JSON' - assert result['result'] == "failure, couldn't decode JSON" + assert result['result'] == "json_error" @mock.patch('mandayejs.mandaye.utils.subprocess.Popen') -- 2.11.0