-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgrab_transport.py
71 lines (54 loc) · 1.88 KB
/
grab_transport.py
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 unittest import TestCase
from grab import Grab
from .tornado_util import SERVER
from grab.transport.curl import CurlTransport
import pickle
class FakeTransport(CurlTransport):
def prepare_response(self, grab):
resp = super(FakeTransport, self).prepare_response(grab)
resp.body = 'Faked ' + resp.body
return resp
def get_curl_transport():
return CurlTransport()
def get_fake_transport():
return FakeTransport()
class TestTransportTestCase(TestCase):
def setUp(self):
SERVER.reset()
SERVER.RESPONSE['get'] = 'XYZ'
def transport_option_logic(self, curl_transport, fake_transport):
g = Grab(transport=curl_transport)
g.go(SERVER.BASE_URL)
self.assertEqual(g.response.body, 'XYZ')
g2 = g.clone()
g.go(SERVER.BASE_URL)
self.assertEqual(g.response.body, 'XYZ')
g2_data = pickle.dumps(g2)
g3 = pickle.loads(g2_data)
g3.go(SERVER.BASE_URL)
self.assertEqual(g3.response.body, 'XYZ')
g = Grab(transport=fake_transport)
g.go(SERVER.BASE_URL)
self.assertEqual(g.response.body, 'Faked XYZ')
g2 = g.clone()
g.go(SERVER.BASE_URL)
self.assertEqual(g.response.body, 'Faked XYZ')
g2_data = pickle.dumps(g2)
g3 = pickle.loads(g2_data)
g3.go(SERVER.BASE_URL)
self.assertEqual(g3.response.body, 'Faked XYZ')
def test_transport_option_as_string(self):
self.transport_option_logic(
'grab.transport.curl.CurlTransport',
'test.grab_transport.FakeTransport',
)
def test_transport_option_as_class(self):
self.transport_option_logic(
CurlTransport,
FakeTransport,
)
def test_transport_option_as_function(self):
self.transport_option_logic(
get_curl_transport,
get_fake_transport,
)