Esempio n. 1
0
    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])
Esempio n. 2
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])
Esempio n. 3
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)
Esempio n. 4
0
    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)
Esempio n. 5
0
    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])
Esempio n. 6
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)
Esempio n. 7
0
    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:])
Esempio n. 8
0
    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])
Esempio n. 9
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])
Esempio n. 10
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)
Esempio n. 11
0
    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)
Esempio n. 12
0
    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)
Esempio n. 13
0
    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)
Esempio n. 14
0
    def test_check_all(self, mock_logging_error):
        """No problems with internal URLs."""

        maintenance.check_urls(self._db)
        self.assertFalse(mock_logging_error.called)