|
6 | 6 |
|
7 | 7 | import pytest |
8 | 8 |
|
| 9 | +import zimscraperlib |
| 10 | +from zimscraperlib.constants import CONTACT |
9 | 11 | from zimscraperlib.constants import ( |
10 | 12 | MAXIMUM_DESCRIPTION_METADATA_LENGTH as MAX_DESC_LENGTH, |
11 | 13 | ) |
12 | 14 | from zimscraperlib.constants import ( |
13 | 15 | MAXIMUM_LONG_DESCRIPTION_METADATA_LENGTH as MAX_LONG_DESC_LENGTH, |
14 | 16 | ) |
| 17 | +from zimscraperlib.constants import ( |
| 18 | + NAME as PROJECT_NAME, |
| 19 | +) |
15 | 20 | from zimscraperlib.inputs import compute_descriptions, handle_user_provided_file |
16 | 21 |
|
17 | 22 |
|
@@ -80,6 +85,54 @@ def test_remote_indir(tmp_path, valid_http_url): |
80 | 85 | assert fpath.parent == tmp_path |
81 | 86 |
|
82 | 87 |
|
| 88 | +def test_remote_default_user_agent(valid_http_url, monkeypatch): |
| 89 | + def mock_stream_file(**kwargs): |
| 90 | + headers = kwargs.get("headers") |
| 91 | + assert headers is not None |
| 92 | + user_agent = headers.get("User-Agent") |
| 93 | + assert isinstance(user_agent, str) |
| 94 | + assert user_agent.startswith(f"{PROJECT_NAME}/") |
| 95 | + assert user_agent.endswith(f"({CONTACT})") |
| 96 | + |
| 97 | + monkeypatch.setattr( |
| 98 | + zimscraperlib.inputs, # pyright: ignore[reportAttributeAccessIssue] |
| 99 | + "stream_file", |
| 100 | + mock_stream_file, |
| 101 | + raising=True, |
| 102 | + ) |
| 103 | + handle_user_provided_file(source=valid_http_url) |
| 104 | + |
| 105 | + |
| 106 | +def test_remote_provided_user_agent(valid_http_url, valid_user_agent, monkeypatch): |
| 107 | + def mock_stream_file(**kwargs): |
| 108 | + headers = kwargs.get("headers") |
| 109 | + assert headers is not None |
| 110 | + user_agent = headers.get("User-Agent") |
| 111 | + assert isinstance(user_agent, str) |
| 112 | + assert user_agent == valid_user_agent |
| 113 | + |
| 114 | + monkeypatch.setattr( |
| 115 | + zimscraperlib.inputs, # pyright: ignore[reportAttributeAccessIssue] |
| 116 | + "stream_file", |
| 117 | + mock_stream_file, |
| 118 | + raising=True, |
| 119 | + ) |
| 120 | + handle_user_provided_file(source=valid_http_url, user_agent=valid_user_agent) |
| 121 | + |
| 122 | + |
| 123 | +def test_remote_provided_none_user_agent(valid_http_url, monkeypatch): |
| 124 | + def mock_stream_file(**kwargs): |
| 125 | + assert kwargs.get("headers") is None |
| 126 | + |
| 127 | + monkeypatch.setattr( |
| 128 | + zimscraperlib.inputs, # pyright: ignore[reportAttributeAccessIssue] |
| 129 | + "stream_file", |
| 130 | + mock_stream_file, |
| 131 | + raising=True, |
| 132 | + ) |
| 133 | + handle_user_provided_file(source=valid_http_url, user_agent=None) |
| 134 | + |
| 135 | + |
83 | 136 | TEXT_NOT_USED = "text not used" |
84 | 137 |
|
85 | 138 | LONG_TEXT = ( |
|
0 commit comments