-
Notifications
You must be signed in to change notification settings - Fork 23
Expand file tree
/
Copy pathtest_httpcache.py
More file actions
71 lines (50 loc) · 1.88 KB
/
test_httpcache.py
File metadata and controls
71 lines (50 loc) · 1.88 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
from time import time
import pytest
from apify.scrapy.extensions._httpcache import from_gzip, get_kvs_name, read_gzip_time, to_gzip
FIXTURE_DICT = {'name': 'Alice'}
FIXTURE_BYTES = (
b'\x1f\x8b\x08\x00\x00\x00\x00\x00\x02\xffk`\x99*\xcc\x00\x01\xb5SzX\xf2\x12s'
b'S\xa7\xf4\xb0:\xe6d&\xa7N)\xd6\x03\x00\x1c\xe8U\x9c\x1e\x00\x00\x00'
)
def test_gzip() -> None:
assert from_gzip(to_gzip(FIXTURE_DICT)) == FIXTURE_DICT
def test_to_gzip() -> None:
data_bytes = to_gzip(FIXTURE_DICT, mtime=0)
assert data_bytes == FIXTURE_BYTES
def test_from_gzip() -> None:
data_dict = from_gzip(FIXTURE_BYTES)
assert data_dict == FIXTURE_DICT
def test_read_gzip_time() -> None:
assert read_gzip_time(FIXTURE_BYTES) == 0
def test_read_gzip_time_non_zero() -> None:
current_time = int(time())
data_bytes = to_gzip(FIXTURE_DICT, mtime=current_time)
assert read_gzip_time(data_bytes) == current_time
@pytest.mark.parametrize(
('spider_name', 'expected'),
[
('test', 'httpcache-test'),
('123', 'httpcache-123'),
('test-spider', 'httpcache-test-spider'),
('test_spider', 'httpcache-test-spider'),
('test spider', 'httpcache-test-spider'),
('test👻spider', 'httpcache-test-spider'),
('test@spider', 'httpcache-test-spider'),
(' test spider ', 'httpcache-test-spider'),
('testspider.com', 'httpcache-testspider-com'),
('t' * 100, 'httpcache-tttttttttttttttttttttttttttttttttttttttttttttttttt'),
],
)
def test_get_kvs_name(spider_name: str, expected: str) -> None:
assert get_kvs_name(spider_name) == expected
@pytest.mark.parametrize(
('spider_name'),
[
'',
'-',
'-@-/-',
],
)
def test_get_kvs_name_raises(spider_name: str) -> None:
with pytest.raises(ValueError, match=r'Unsupported spider name'):
assert get_kvs_name(spider_name)