Skip to content

Commit

Permalink
fix tests
Browse files Browse the repository at this point in the history
  • Loading branch information
jadbin committed Jul 11, 2018
1 parent f3d06df commit 0f36293
Show file tree
Hide file tree
Showing 13 changed files with 316 additions and 325 deletions.
230 changes: 144 additions & 86 deletions tests/test_downloader.py

Large diffs are not rendered by default.

46 changes: 23 additions & 23 deletions tests/test_downloadermws.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ def __init__(self, loop=None, **kwargs):
class TestImitatingProxyMiddleware:
def test_handle_request(self):
mw = ImitatingProxyMiddleware.from_cluster(Cluster(imitating_proxy_enabled=True))
req = HttpRequest("http://httpbin.org")
req = HttpRequest("http://example.com")
mw.handle_request(req)
assert re.search(r"^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}", req.headers["X-Forwarded-For"])
assert req.headers['Via'] == '{} xpaw'.format(__version__)
Expand All @@ -39,7 +39,7 @@ def test_handle_request(self):
default_headers = {"User-Agent": "xpaw", "Connection": "keep-alive"}
req_headers = {"User-Agent": "xpaw-test", "Connection": "keep-alive"}
mw = DefaultHeadersMiddleware.from_cluster(Cluster(default_headers=default_headers))
req = HttpRequest("http://httpbin.org", headers={"User-Agent": "xpaw-test"})
req = HttpRequest("http://example.com", headers={"User-Agent": "xpaw-test"})
mw.handle_request(req)
assert req_headers == req.headers

Expand All @@ -62,20 +62,20 @@ class TestProxyMiddleware:
def test_proxy_str(self, loop):
proxy = '153.10.32.18:3128'
mw = ProxyMiddleware.from_cluster(Cluster(proxy=proxy, loop=loop))
req = HttpRequest(URL("http://httpbin.org"))
req = HttpRequest(URL("http://example.com"))
mw.handle_request(req)
assert req.meta['proxy'] == '153.10.32.18:3128'

def test_proxy_list(self, monkeypatch, loop):
monkeypatch.setattr(random, 'choice', Random().choice)
proxy_list = ["105.12.103.232:3128", "16.82.3.20:3128"]
mw = ProxyMiddleware.from_cluster(Cluster(proxy=proxy_list, loop=loop))
req = HttpRequest("http://httpbin.org")
req = HttpRequest("http://example.com")
for i in range(len(proxy_list)):
mw.handle_request(req)
assert req.meta['proxy'] == proxy_list[i]

req2 = HttpRequest('ftp://httpbin.org')
req2 = HttpRequest('ftp://example.com')
mw.handle_request(req2)
assert 'proxy' not in req2.meta

Expand All @@ -84,7 +84,7 @@ def test_proxy_dict(self, monkeypatch, loop):
proxy_dict = {'http': ['132.39.13.100:3128', '18.39.9.10:3128'], 'https': '177.13.233.2:3128'}
mw = ProxyMiddleware.from_cluster(Cluster(proxy=proxy_dict, loop=loop))
req_list = []
for i in ['http://httpbin.org', 'https://httpbin.org', 'http://httpbin.org', 'http://httpbin.org']:
for i in ['http://example.com', 'https://example.com', 'http://example.com', 'http://example.com']:
req_list.append(HttpRequest(i))
res = ['132.39.13.100:3128', '177.13.233.2:3128', '132.39.13.100:3128', '18.39.9.10:3128']
for i in range(len(req_list)):
Expand All @@ -99,29 +99,29 @@ async def test_not_enabled(self, loop):
class TestRetryMiddleware:
def test_handle_reponse(self):
mw = RetryMiddleware.from_cluster(Cluster(retry_http_status=(500,)))
req = HttpRequest("http://httpbin.org")
resp = HttpResponse(URL("http://httpbin.org"), 502)
req = HttpRequest("http://example.com")
resp = HttpResponse(URL("http://example.com"), 502)
assert mw.handle_response(req, resp) is None
req2 = HttpRequest("http://httpbin.org")
resp2 = HttpResponse(URL("http://httpbin.org"), 500)
req2 = HttpRequest("http://example.com")
resp2 = HttpResponse(URL("http://example.com"), 500)
retry_req2 = mw.handle_response(req2, resp2)
assert retry_req2.meta['retry_times'] == 1
assert str(retry_req2.url) == str(req2.url)
req3 = HttpRequest("http://httpbin.org")
resp3 = HttpResponse(URL("http://httpbin.org"), 500)
req3 = HttpRequest("http://example.com")
resp3 = HttpResponse(URL("http://example.com"), 500)
req3.meta['retry_times'] = 2
retry_req3 = mw.handle_response(req3, resp3)
assert retry_req3.meta['retry_times'] == 3
assert str(retry_req3.url) == str(req3.url)
req4 = HttpRequest("http://httpbin.org")
req4 = HttpRequest("http://example.com")
req4.meta['retry_times'] = 3
resp4 = HttpResponse(URL("http://httpbin.org"), 500)
resp4 = HttpResponse(URL("http://example.com"), 500)
with pytest.raises(IgnoreRequest):
mw.handle_response(req4, resp4)

def test_handle_error(self):
mw = RetryMiddleware.from_cluster(Cluster())
req = HttpRequest("http://httpbin.org")
req = HttpRequest("http://example.com")
err = ValueError()
assert mw.handle_error(req, err) is None
err2 = NetworkError()
Expand All @@ -132,7 +132,7 @@ def test_retry(self):
max_retry_times = 2
mw = RetryMiddleware.from_cluster(Cluster(max_retry_times=max_retry_times,
retry_http_status=(500,)))
req = HttpRequest("http://httpbin.org")
req = HttpRequest("http://example.com")
for i in range(max_retry_times):
retry_req = mw.retry(req, "")
assert isinstance(retry_req, HttpRequest) and str(retry_req.url) == str(req.url)
Expand Down Expand Up @@ -259,29 +259,29 @@ def test_not_enabled(self):
def test_static_user_agent(self):
user_agent = 'test user agent'
mw = UserAgentMiddleware.from_cluster(Cluster(user_agent=user_agent))
req = HttpRequest('http://httpbin.org')
req = HttpRequest('http://example.com')
mw.handle_request(req)
assert req.headers.get('User-Agent') == user_agent

def test_gen_user_agent(self):
mw = UserAgentMiddleware.from_cluster(Cluster(user_agent=':desktop,chrome'))
req = HttpRequest('http://httpbin.org')
req = HttpRequest('http://example.com')
mw.handle_request(req)
assert 'Chrome' in req.headers.get('User-Agent')

mw2 = UserAgentMiddleware.from_cluster(Cluster(user_agent=':mobile,chrome'))
req2 = HttpRequest('http://httpbin.org')
req2 = HttpRequest('http://example.com')
mw2.handle_request(req2)
assert 'CriOS' in req2.headers.get('User-Agent') and 'Mobile' in req2.headers.get('User-Agent')

def test_unknown_user_agent_desciprtion(self):
def test_unknown_user_agent_description(self):
with pytest.raises(ValueError):
UserAgentMiddleware.from_cluster(Cluster(user_agent=':unknown'))

def test_random_user_agent(self):
mw = UserAgentMiddleware.from_cluster(Cluster(random_user_agent=True))
req = HttpRequest('http://httpbin.org')
req2 = HttpRequest('http://httpbin.org')
req = HttpRequest('http://example.com')
req2 = HttpRequest('http://example.com')
mw.handle_request(req)
mw.handle_request(req2)
assert 'User-Agent' in req.headers
Expand All @@ -291,7 +291,7 @@ def test_random_user_agent(self):
def test_random_user_agent2(self):
mw = UserAgentMiddleware.from_cluster(Cluster(user_agent=':mobile', random_user_agent=True))
for i in range(30):
req = HttpRequest('http://httpbin.org')
req = HttpRequest('http://example.com')
mw.handle_request(req)
assert 'User-Agent' in req.headers
assert 'CriOS' in req.headers.get('User-Agent') and 'Mobile' in req.headers.get('User-Agent')
32 changes: 16 additions & 16 deletions tests/test_dupefilter.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,20 +5,20 @@


def run_any_dupe_filter(f):
r_get = HttpRequest("http://httpbin.org")
r_get_port_80 = HttpRequest("http://httpbin.org:80")
r_get_port_81 = HttpRequest("http://httpbin.org:81")
r_get_dont_filter = HttpRequest("http://httpbin.org", dont_filter=True)
r_get_dir = HttpRequest("http://httpbin.org/")
r_get_post = HttpRequest("http://httpbin.org/post")
r_post = HttpRequest("http://httpbin.org/post", "POST")
r_post_dir = HttpRequest("http://httpbin.org/post/", "POST")
r_post_data = HttpRequest("http://httpbin.org/post", "POST", body=b'data')
r_get_param = HttpRequest("http://httpbin.org/get", params={'k1': 'v1'})
r_get_query = HttpRequest("http://httpbin.org/get?k1=v1")
r_get_param_2 = HttpRequest("http://httpbin.org/get", params={'k1': 'v1', 'k2': 'v2'})
r_get_query_2 = HttpRequest("http://httpbin.org/get?k2=v2&k1=v1")
r_get_query_param = HttpRequest("http://httpbin.org/get?k1=v1", params={'k2': 'v2'})
r_get = HttpRequest("http://example.com")
r_get_port_80 = HttpRequest("http://example.com:80")
r_get_port_81 = HttpRequest("http://example.com:81")
r_get_dont_filter = HttpRequest("http://example.com", dont_filter=True)
r_get_dir = HttpRequest("http://example.com/")
r_get_post = HttpRequest("http://example.com/post")
r_post = HttpRequest("http://example.com/post", "POST")
r_post_dir = HttpRequest("http://example.com/post/", "POST")
r_post_data = HttpRequest("http://example.com/post", "POST", body=b'data')
r_get_param = HttpRequest("http://example.com/get", params={'k1': 'v1'})
r_get_query = HttpRequest("http://example.com/get?k1=v1")
r_get_param_2 = HttpRequest("http://example.com/get", params={'k1': 'v1', 'k2': 'v2'})
r_get_query_2 = HttpRequest("http://example.com/get?k2=v2&k1=v1")
r_get_query_param = HttpRequest("http://example.com/get?k1=v1", params={'k2': 'v2'})
assert f.is_duplicated(r_get) is False
assert f.is_duplicated(r_get_port_80) is True
assert f.is_duplicated(r_get_port_81) is False
Expand All @@ -42,15 +42,15 @@ def test_is_duplicated(self):

def test_clear(self):
f = SetDupeFilter()
r_get = HttpRequest("http://httpbin.org")
r_get = HttpRequest("http://example.com")
assert f.is_duplicated(r_get) is False
assert f.is_duplicated(r_get) is True
f.clear()
assert f.is_duplicated(r_get) is False

def test_dump(self, tmpdir):
f = SetDupeFilter(dump_dir=str(tmpdir))
r_get = HttpRequest("http://httpbin.org")
r_get = HttpRequest("http://example.com")
assert f.is_duplicated(r_get) is False
assert f.is_duplicated(r_get) is True
f.close()
Expand Down
26 changes: 13 additions & 13 deletions tests/test_eventbus.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
event2 = object()


class MyClass:
class FooClass:
def __init__(self):
self.count1 = 0
self.count2 = 0
Expand Down Expand Up @@ -48,13 +48,13 @@ def func():
with pytest.raises(ValueError):
eventbus.subscribe(func, event1)
with pytest.raises(ValueError):
eventbus.subscribe(MyClass().staticmethod, event1)
eventbus.subscribe(MyClass().method, event1)
eventbus.subscribe(FooClass().staticmethod, event1)
eventbus.subscribe(FooClass().method, event1)


async def test_subscribe():
eventbus = EventBus()
obj = MyClass()
obj = FooClass()
eventbus.subscribe(obj.method1, event1)
eventbus.subscribe(obj.method2, event2)
await eventbus.send(event1)
Expand All @@ -65,7 +65,7 @@ async def test_subscribe():

async def test_subscribe_multi_times():
eventbus = EventBus()
obj = MyClass()
obj = FooClass()
eventbus.subscribe(obj.method1, event1)
eventbus.subscribe(obj.method1, event1)
await eventbus.send(event1)
Expand All @@ -74,7 +74,7 @@ async def test_subscribe_multi_times():

async def test_unsubscribe():
eventbus = EventBus()
obj = MyClass()
obj = FooClass()
eventbus.subscribe(obj.method1, event1)
await eventbus.send(event1)
assert obj.count1 == 1
Expand All @@ -85,23 +85,23 @@ async def test_unsubscribe():

async def test_unsubscribe_multi_times():
eventbus = EventBus()
obj = MyClass()
obj = FooClass()
eventbus.subscribe(obj.method1, event1)
eventbus.unsubscribe(obj.method1, event1)
eventbus.unsubscribe(obj.method1, event1)


async def test_send_with_parameters():
eventbus = EventBus()
obj = MyClass()
obj = FooClass()
eventbus.subscribe(obj.method_set_value, event1)
await eventbus.send(event1, value=-1)
assert obj.value == -1


async def test_send_unknown_event():
eventbus = EventBus()
obj = MyClass()
obj = FooClass()
await eventbus.send(event1)
eventbus.subscribe(obj.method1, event1)
await eventbus.send(event2)
Expand All @@ -110,7 +110,7 @@ async def test_send_unknown_event():

async def test_unknown_unsubscribe():
eventbus = EventBus()
obj = MyClass()
obj = FooClass()
eventbus.subscribe(obj.method1, event1)
eventbus.unsubscribe(obj.method1, event2)
eventbus.unsubscribe(obj.method2, event1)
Expand All @@ -121,15 +121,15 @@ async def test_unknown_unsubscribe():

async def test_raise_error_in_callback():
eventbus = EventBus()
obj = MyClass()
obj = FooClass()
eventbus.subscribe(obj.method_raise_error, event1)
await eventbus.send(event1)


async def test_del_weak_ref():
eventbus = EventBus()
obj1 = MyClass()
obj2 = MyClass()
obj1 = FooClass()
obj2 = FooClass()
eventbus.subscribe(obj1.method1, event1)
eventbus.subscribe(obj2.method1, event1)
await eventbus.send(event1)
Expand Down
10 changes: 5 additions & 5 deletions tests/test_extension.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
from xpaw import events


class MyExtension:
class FooExtension:
def __init__(self, d):
self.d = d

Expand All @@ -18,7 +18,7 @@ def close(self):
self.d['close'] = ''


class MyEmptyExtension:
class DummyExtension:
"""
no method
"""
Expand All @@ -32,8 +32,8 @@ def __init__(self, **kwargs):

async def test_extension_manager():
data = {}
cluster = Cluster(extensions=[lambda d=data: MyExtension(d),
MyEmptyExtension],
cluster = Cluster(extensions=[lambda d=data: FooExtension(d),
DummyExtension],
extensions_base=None,
data=data)
extension = ExtensionManager.from_cluster(cluster)
Expand All @@ -42,7 +42,7 @@ async def test_extension_manager():
assert 'open' in data and 'close' in data

data2 = {}
cluster2 = Cluster(extensions={lambda d=data2: MyExtension(d): 0},
cluster2 = Cluster(extensions={lambda d=data2: FooExtension(d): 0},
extensions_base=None,
data=data2)
extension2 = ExtensionManager.from_cluster(cluster2)
Expand Down
20 changes: 10 additions & 10 deletions tests/test_http.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,34 +4,34 @@


def test_copy_http_request():
req = HttpRequest('http://httpbin.org/get', params={'show_env': 1}, meta={'depth': 0})
req = HttpRequest('http://example.com/', params={'key': 'value'}, meta={'depth': 0})
copy_req = req.copy()
assert copy_req.url == req.url
assert 'show_env' in copy_req.params and copy_req.params['show_env'] == 1
assert 'key' in copy_req.params and copy_req.params['key'] == 'value'
assert 'depth' in copy_req.meta and copy_req.meta['depth'] == 0
req.meta['depth'] = 1
assert req.meta['depth'] == 1 and copy_req.meta['depth'] == 0


def test_replace_http_request():
req = HttpRequest('http://httpbin.org/post', 'POST', body=b'body1')
new_req = req.replace(url='https://httpbin.org/post', body=b'body2')
assert new_req.url == 'https://httpbin.org/post'
req = HttpRequest('http://example.com/', 'POST', body=b'body1')
new_req = req.replace(url='https://example.com/', body=b'body2')
assert new_req.url == 'https://example.com/'
assert new_req.body == b'body2'
assert new_req.method == 'POST'


def test_copy_http_response():
resp = HttpResponse('http://httpbin.org/get', 200, body=b'body')
resp = HttpResponse('http://example.com/', 200, body=b'body')
copy_resp = resp.copy()
assert copy_resp.url == 'http://httpbin.org/get'
assert copy_resp.url == 'http://example.com/'
assert copy_resp.status == 200
assert copy_resp.body == b'body'


def test_replace_http_response():
resp = HttpResponse('http://httpbin.org/get', 200, body=b'body1')
new_resp = resp.replace(url='https://httpbin.org/get', body=b'body2')
assert new_resp.url == 'https://httpbin.org/get'
resp = HttpResponse('http://example.com/', 200, body=b'body1')
new_resp = resp.replace(url='https://example.com/', body=b'body2')
assert new_resp.url == 'https://example.com/'
assert new_resp.status == 200
assert new_resp.body == b'body2'
6 changes: 3 additions & 3 deletions tests/test_item.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,15 +5,15 @@
from xpaw.item import Item, Field


class MyItem(Item):
class FooItem(Item):
f1 = Field()
f2 = Field()


def test_item():
with pytest.raises(KeyError):
MyItem(f3='v3')
item = MyItem(f1='v1')
FooItem(f3='v3')
item = FooItem(f1='v1')
assert len(item) == 1 and 'f1' in item
assert item['f1'] == 'v1'
item['f2'] = 'v2'
Expand Down
Loading

0 comments on commit 0f36293

Please sign in to comment.