Changeset View
Changeset View
Standalone View
Standalone View
swh/loader/package/tests/test_utils.py
Show First 20 Lines • Show All 148 Lines • ▼ Show 20 Lines | def test_download_with_redirection(tmp_path, requests_mock): | ||||
requests_mock.get(url, status_code=302, headers={"location": redirection_url}) | requests_mock.get(url, status_code=302, headers={"location": redirection_url}) | ||||
requests_mock.get( | requests_mock.get( | ||||
redirection_url, text=_data, headers={"content-length": str(len(_data))} | redirection_url, text=_data, headers={"content-length": str(len(_data))} | ||||
) | ) | ||||
_check_download_ok(url, dest=str(tmp_path)) | _check_download_ok(url, dest=str(tmp_path)) | ||||
def test_download_extracting_filename_from_url(tmp_path, requests_mock): | |||||
"""Extracting filename from url must sanitize the filename first""" | |||||
url = "https://example.org/project/requests-0.0.1.tar.gz?a=b&c=d&foo=bar" | |||||
requests_mock.get( | |||||
url, status_code=200, text=_data, headers={"content-length": str(len(_data))} | |||||
) | |||||
_check_download_ok(url, dest=str(tmp_path)) | |||||
@pytest.mark.fs | @pytest.mark.fs | ||||
@pytest.mark.parametrize( | @pytest.mark.parametrize( | ||||
"filename", [f'"{_filename}"', _filename, '"filename with spaces.tar.gz"'] | "filename", [f'"{_filename}"', _filename, '"filename with spaces.tar.gz"'] | ||||
) | ) | ||||
def test_download_filename_from_content_disposition(tmp_path, requests_mock, filename): | def test_download_filename_from_content_disposition(tmp_path, requests_mock, filename): | ||||
"""Filename should be extracted from content-disposition request header | """Filename should be extracted from content-disposition request header | ||||
when available.""" | when available.""" | ||||
url = "https://example.org/download/requests/tar.gz/v0.0.1" | url = "https://example.org/download/requests/tar.gz/v0.0.1" | ||||
▲ Show 20 Lines • Show All 63 Lines • Show Last 20 Lines |