def test_missing_collection(self, mock_logging_error): """A collection from the config is missing.""" # Note it could be any of the collection of _URL_FIELDS. self._db.associations.drop() maintenance.check_urls(self._db) mock_logging_error.assert_called_once() self.assertIn('associations', mock_logging_error.call_args[0])
def test_missing_collection(self, mock_logging_error: mock.MagicMock) -> None: """A collection from the config is missing.""" # Note it could be any of the collection of _URL_FIELDS. self._db.has_url_link.drop() maintenance.check_urls(self._db) mock_logging_error.assert_called_once() self.assertIn('has_url_link', mock_logging_error.call_args[0])
def test_actual_link(self, mock_logging_error, mock_requests): """Check with an external working link.""" mock_requests.get('https://www.google.com', status_code=200) # Note it could be any of the collection of _URL_FIELDS. self._db.associations.insert_one({'link': 'https://www.google.com'}) maintenance.check_urls(self._db) self.assertFalse(mock_logging_error.called, msg=mock_logging_error.call_args)
def test_link_raise_ssl_exception(self, mock_logging_error, mock_requests): """Check with a link that blocks on an SSL exception.""" mock_requests.get('https://www.gooooogle.com', exc=requests.exceptions.SSLError) # Note it could be any of the collection of _URL_FIELDS. self._db.associations.insert_one({ '_id': 'bad-ssl-link', 'link': 'https://www.gooooogle.com'}) maintenance.check_urls(self._db) self.assertFalse(mock_logging_error.called)
def test_only_empty_fields(self, mock_logging_error): """A collection from the config has only empty fields.""" # Note it could be any of the collection of _URL_FIELDS. self._db.associations.drop() self._db.associations.insert_one({'link': ''}) maintenance.check_urls(self._db) mock_logging_error.assert_called_once() self.assertIn('associations', mock_logging_error.call_args[0])
def test_actual_link( self, mock_logging_error: mock.MagicMock, mock_requests: 'requests_mock._RequestObjectProxy') -> None: """Check with an external working link.""" mock_requests.get('https://www.google.com', status_code=200) self._db.has_url_link.insert_one({'link': 'https://www.google.com'}) maintenance.check_urls(self._db) self.assertFalse(mock_logging_error.called, msg=mock_logging_error.call_args)
def test_malformed_link(self, mock_logging_error: mock.MagicMock) -> None: """A collection from the config has only empty fields.""" self._db.has_url_link.drop() self._db.has_url_link.insert_one({'link': 'htp:/www.google.fr/malformed.html'}) maintenance.check_urls(self._db) mock_logging_error.assert_called_once() self.assertIn( 'has_url_link', mock_logging_error.call_args[0][0] % mock_logging_error.call_args[0][1:])
def test_link_raise_exception(self, mock_logging_error, mock_requests): """Check with a link that cannot be resolved in time.""" mock_requests.get('https://www.gooooogle.com', exc=requests.exceptions.ConnectTimeout) # Note it could be any of the collection of _URL_FIELDS. self._db.associations.insert_one({ '_id': 'timeout-link', 'link': 'https://www.gooooogle.com'}) maintenance.check_urls(self._db) mock_logging_error.assert_called_once() self.assertIn('associations', mock_logging_error.call_args[0]) self.assertIn('timeout-link', mock_logging_error.call_args[0]) self.assertIn('ConnectTimeout', mock_logging_error.call_args[0]) self.assertIn('https://www.gooooogle.com', mock_logging_error.call_args[0])
def test_link_to_missing_page(self, mock_logging_error, mock_requests): """Check with a link to a missing page.""" mock_requests.get('http://does-not-exist.com', status_code=404) # Note it could be any of the collection of _URL_FIELDS. self._db.associations.insert_one({ '_id': 'link-to-missing', 'link': 'http://does-not-exist.com'}) maintenance.check_urls(self._db) mock_logging_error.assert_called_once() self.assertIn('associations', mock_logging_error.call_args[0]) self.assertIn('link-to-missing', mock_logging_error.call_args[0]) self.assertIn(404, mock_logging_error.call_args[0]) self.assertIn('http://does-not-exist.com', mock_logging_error.call_args[0])
def test_link_raise_exception( self, mock_logging_error: mock.MagicMock, mock_requests: 'requests_mock._RequestObjectProxy') -> None: """Check with a link that cannot be resolved in time.""" mock_requests.get('https://www.gooooogle.com', exc=requests.exceptions.ConnectTimeout) self._db.has_url_link.insert_one({ '_id': 'timeout-link', 'link': 'https://www.gooooogle.com'}) maintenance.check_urls(self._db) mock_logging_error.assert_called_once() logging_error = mock_logging_error.call_args[0][0] % mock_logging_error.call_args[0][1:] self.assertIn('has_url_link', logging_error) self.assertIn('timeout-link', logging_error) self.assertIn('ConnectTimeout', logging_error) self.assertIn('https://www.gooooogle.com', logging_error)
def test_link_to_missing_page( self, mock_logging_error: mock.MagicMock, mock_requests: 'requests_mock._RequestObjectProxy') -> None: """Check with a link to a missing page.""" mock_requests.get('http://does-not-exist.com', status_code=404) self._db.has_url_link.insert_one({ '_id': 'link-to-missing', 'link': 'http://does-not-exist.com'}) maintenance.check_urls(self._db) mock_logging_error.assert_called_once() logging_error = mock_logging_error.call_args[0][0] % mock_logging_error.call_args[0][1:] self.assertIn('has_url_link', logging_error) self.assertIn('link-to-missing', logging_error) self.assertIn('404', logging_error) self.assertIn('http://does-not-exist.com', logging_error)
def test_url_in_client( self, mock_logging_error: mock.MagicMock, mock_requests: 'requests_mock._RequestObjectProxy') -> None: """Check websites linked by URLs extracted from client.""" mock_requests.get('https://does-not-exist.com', status_code=404) mock_requests.get('https://exists.com') maintenance.check_urls( self._db, client_urls_json=os.path.join( os.path.dirname(__file__), 'testdata', 'extracted_urls.json')) mock_logging_error.assert_called_once() mock_logging_error.assert_called_once() logging_error = mock_logging_error.call_args[0][0] % mock_logging_error.call_args[0][1:] self.assertIn('HTTP Error 404', logging_error) self.assertIn('src/bob.ts', logging_error) self.assertIn('https://does-not-exist.com', logging_error)
def test_url_in_translation( self, mock_logging_error: mock.MagicMock, mock_requests: 'requests_mock._RequestObjectProxy') -> None: """Check URLs embedded in translaltions.""" mock_requests.get('http://does-not-exist.com', status_code=404) self._db.translations.insert_one({ 'string': 'Look at this link: http://does-not-exist.com', 'origin': 'advisor.json', 'origin_id': 'line 123'}) maintenance.check_urls(self._db) mock_logging_error.assert_called_once() mock_logging_error.assert_called_once() logging_error = mock_logging_error.call_args[0][0] % mock_logging_error.call_args[0][1:] self.assertIn('advisor.json', logging_error) self.assertIn('line 123', logging_error) self.assertIn('HTTP Error 404', logging_error) self.assertIn('http://does-not-exist.com', logging_error)
def test_check_all(self, mock_logging_error): """No problems with internal URLs.""" maintenance.check_urls(self._db) self.assertFalse(mock_logging_error.called)