From afd8bcae61290ed7025cbb6e6da4e8dcd1055e4f Mon Sep 17 00:00:00 2001 From: Cody Logan Date: Tue, 7 Nov 2023 11:35:39 -0800 Subject: Test query_api when an APIError is raised --- tests/test_client.py | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) (limited to 'tests') diff --git a/tests/test_client.py b/tests/test_client.py index e17c17a..4cbf702 100644 --- a/tests/test_client.py +++ b/tests/test_client.py @@ -19,7 +19,7 @@ import logging from unittest.mock import MagicMock, patch, sentinel import pytest -from mwclient import InvalidResponse +from mwclient import APIError, InvalidResponse from requests import ConnectionError, HTTPError from wikiget import DEFAULT_SITE @@ -145,3 +145,31 @@ class TestQueryApi: image = query_api("Example.jpg", mock_site) assert image == sentinel.mock_image + + def test_query_api_error(self, caplog: pytest.LogCaptureFixture) -> None: + """ + The query_api function should log an error if an APIError exception is caught, + as well as debug log entries with additional information about the error. + """ + caplog.set_level(logging.DEBUG) + + mock_site = MagicMock() + mock_site.images = MagicMock() + mock_site.images.__getitem__.side_effect = APIError( + "error code", "error info", "error kwargs" + ) + + with pytest.raises(APIError): + _ = query_api("Example.jpg", mock_site) + + assert caplog.record_tuples == [ + ( + "wikiget.client", + logging.ERROR, + "Access denied. Try providing credentials with " + "--username and --password.", + ), + ("wikiget.client", logging.DEBUG, "error code"), + ("wikiget.client", logging.DEBUG, "error info"), + ("wikiget.client", logging.DEBUG, "error kwargs"), + ] -- cgit v1.2.3