don't associate user if PhantomJS response is erroneous (#14813)

This commit is contained in:
Josue Kouka 2017-01-31 16:46:04 +01:00
parent 8d483be9e0
commit 9d1f6af57c
3 changed files with 6 additions and 3 deletions

View File

@ -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'])

View File

@ -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

View File

@ -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')