Changeset View
Changeset View
Standalone View
Standalone View
swh/deposit/tests/cli/test_client.py
Show All 12 Lines | |||||
import pytest | import pytest | ||||
import yaml | import yaml | ||||
from swh.deposit.api.checks import check_metadata | from swh.deposit.api.checks import check_metadata | ||||
from swh.deposit.cli import deposit as cli | from swh.deposit.cli import deposit as cli | ||||
from swh.deposit.cli.client import ( | from swh.deposit.cli.client import ( | ||||
InputError, | InputError, | ||||
_client, | |||||
_collection, | _collection, | ||||
_url, | _url, | ||||
generate_metadata, | generate_metadata, | ||||
generate_slug, | generate_slug, | ||||
) | ) | ||||
from swh.deposit.client import MaintenanceError, PublicApiDepositClient | from swh.deposit.client import MaintenanceError, PublicApiDepositClient | ||||
from swh.deposit.parsers import parse_xml | from swh.deposit.parsers import parse_xml | ||||
from ..conftest import TEST_USER | from ..conftest import TEST_USER | ||||
@pytest.fixture | @pytest.fixture | ||||
def deposit_config(): | |||||
return { | |||||
"url": "https://deposit.swh.test/1", | |||||
"auth": {"username": "test", "password": "test",}, | |||||
} | |||||
@pytest.fixture | |||||
def datadir(request): | def datadir(request): | ||||
"""Override default datadir to target main test datadir""" | """Override default datadir to target main test datadir""" | ||||
return os.path.join(os.path.dirname(str(request.fspath)), "../data") | return os.path.join(os.path.dirname(str(request.fspath)), "../data") | ||||
@pytest.fixture | @pytest.fixture | ||||
def slug(): | def slug(): | ||||
return generate_slug() | return generate_slug() | ||||
Show All 9 Lines | |||||
@pytest.fixture | @pytest.fixture | ||||
def client_mock_api_down(mocker, slug): | def client_mock_api_down(mocker, slug): | ||||
"""A mock client whose connection with api fails due to maintenance issue | """A mock client whose connection with api fails due to maintenance issue | ||||
""" | """ | ||||
mock_client = MagicMock() | mock_client = MagicMock() | ||||
mocker.patch("swh.deposit.cli.client._client", return_value=mock_client) | mocker.patch("swh.deposit.client.PublicApiDepositClient", return_value=mock_client) | ||||
mock_client.service_document.side_effect = MaintenanceError( | mock_client.service_document.side_effect = MaintenanceError( | ||||
"Database backend maintenance: Temporarily unavailable, try again later." | "Database backend maintenance: Temporarily unavailable, try again later." | ||||
) | ) | ||||
return mock_client | return mock_client | ||||
def test_cli_url(): | def test_cli_url(): | ||||
assert _url("http://deposit") == "http://deposit/1" | assert _url("http://deposit") == "http://deposit/1" | ||||
assert _url("https://other/1") == "https://other/1" | assert _url("https://other/1") == "https://other/1" | ||||
def test_cli_client(): | |||||
client = _client("http://deposit", "user", "pass") | |||||
assert isinstance(client, PublicApiDepositClient) | |||||
def test_cli_collection_error(): | def test_cli_collection_error(): | ||||
mock_client = MagicMock() | mock_client = MagicMock() | ||||
mock_client.service_document.return_value = {"error": "something went wrong"} | mock_client.service_document.return_value = {"error": "something went wrong"} | ||||
with pytest.raises(InputError) as e: | with pytest.raises(InputError) as e: | ||||
_collection(mock_client) | _collection(mock_client) | ||||
assert "Service document retrieval: something went wrong" == str(e.value) | assert "Service document retrieval: something went wrong" == str(e.value) | ||||
def test_cli_collection_ok(deposit_config, requests_mock_datadir): | def test_cli_collection_ok(requests_mock_datadir): | ||||
client = PublicApiDepositClient(deposit_config) | client = PublicApiDepositClient( | ||||
url="https://deposit.swh.test/1", auth=("test", "test") | |||||
) | |||||
collection_name = _collection(client) | collection_name = _collection(client) | ||||
assert collection_name == "test" | assert collection_name == "test" | ||||
def test_cli_collection_ko_because_downtime(): | def test_cli_collection_ko_because_downtime(): | ||||
mock_client = MagicMock() | mock_client = MagicMock() | ||||
mock_client.service_document.side_effect = MaintenanceError("downtime") | mock_client.service_document.side_effect = MaintenanceError("downtime") | ||||
with pytest.raises(MaintenanceError, match="downtime"): | with pytest.raises(MaintenanceError, match="downtime"): | ||||
▲ Show 20 Lines • Show All 644 Lines • Show Last 20 Lines |