From ef755b65375fbf1668bb55eb93ccc6bf97c7c7f9 Mon Sep 17 00:00:00 2001 From: Aurélien Bompard Date: Aug 25 2017 09:59:19 +0000 Subject: Don't traceback when the PlusPlus service isn't reachable --- diff --git a/hubs/tests/widgets/test_contact.py b/hubs/tests/widgets/test_contact.py index 8bea137..7e06862 100644 --- a/hubs/tests/widgets/test_contact.py +++ b/hubs/tests/widgets/test_contact.py @@ -3,6 +3,7 @@ from __future__ import unicode_literals import json import mock +import requests import hubs from hubs.models import Hub, Widget @@ -172,3 +173,11 @@ class ContactsTest(WidgetTest): result = self.app.get(url) self.assertEqual(result.status_code, 404) self.assertEqual(result.get_data(as_text=True), 'User does not exist') + + @mock.patch('requests.get') + def test_plus_plus_connection_error(self, mock_get): + mock_get.side_effect = requests.ConnectionError("connection error") + url = "/ralph/w/contact/%d/plus-plus/%s/status" % ( + self.widget_idx, "decause") + result = self.app.get(url) + self.assertEqual(result.status_code, 504) diff --git a/hubs/widgets/contact/__init__.py b/hubs/widgets/contact/__init__.py index 0d6c6b3..288fc92 100644 --- a/hubs/widgets/contact/__init__.py +++ b/hubs/widgets/contact/__init__.py @@ -93,6 +93,8 @@ class PlusPlusStatus(WidgetView): req = requests.get(pp_url, timeout=5) except requests.Timeout: return 'The request to {url} timed out'.format(url=pp_url), 504 + except requests.ConnectionError: + return 'Could not connect to {url}'.format(url=pp_url), 504 if req.status_code == 200: return flask.jsonify(req.json()) else: