From 7a834b3aa210e1d968607b9f48324bc007261500 Mon Sep 17 00:00:00 2001 From: Aurélien Bompard Date: Mar 13 2018 10:52:48 +0000 Subject: Handle exception when FAS auth is invalid --- diff --git a/hubs/feed.py b/hubs/feed.py index 1797fcb..88f3efc 100644 --- a/hubs/feed.py +++ b/hubs/feed.py @@ -5,6 +5,7 @@ import logging import re import fedmsg.meta +import fedora.client import flask import pymongo import requests.exceptions @@ -23,7 +24,9 @@ def get_hubs_for_msg(msg): # User hubs try: usernames = fedmsg.meta.msg2usernames(msg) - except requests.exceptions.ConnectionError: + except (requests.exceptions.ConnectionError, fedora.client.AuthError) as e: + log.warning("Could not extract usernames from message: %s", + e, exc_info=True) usernames = [] for username in usernames: user = User.query.get(username) diff --git a/hubs/tests/test_feed.py b/hubs/tests/test_feed.py index 0c38ced..ae9fea6 100644 --- a/hubs/tests/test_feed.py +++ b/hubs/tests/test_feed.py @@ -2,7 +2,9 @@ from __future__ import unicode_literals import json +import fedora.client import pymongo +import requests.exceptions from mock import MagicMock, Mock, patch from hubs.app import app @@ -363,3 +365,20 @@ class GetHubsForMsgTestCase(APPTest): "msg": {}, } self.assertListEqual(get_hubs_for_msg(msg), []) + + @patch("hubs.feed.fedmsg.meta.msg2usernames") + def test_connection_error(self, msg2usernames): + msg2usernames.side_effect = requests.exceptions.ConnectionError( + "Test connection error") + try: + self.assertListEqual(get_hubs_for_msg(self.dummy_msg), []) + except requests.exceptions.ConnectionError: + self.fail("ConnectionError was not caught") + + @patch("hubs.feed.fedmsg.meta.msg2usernames") + def test_auth_error(self, msg2usernames): + msg2usernames.side_effect = fedora.client.AuthError("Test auth error") + try: + self.assertListEqual(get_hubs_for_msg(self.dummy_msg), []) + except fedora.client.AuthError: + self.fail("AuthError was not caught")