1212RESPONSE_HEADERS = b"HTTP/1.0 200 OK\r \n Content-Length: 0\r \n \r \n "
1313
1414
15- def test_json ():
15+ def test_host ():
16+ pool = mocket .MocketPool ()
17+ pool .getaddrinfo .return_value = ((None , None , None , None , (IP , 80 )),)
18+ sock = mocket .Mocket (RESPONSE_HEADERS )
19+ pool .socket .return_value = sock
20+ sent = []
21+
22+ def _send (data ):
23+ sent .append (data ) # pylint: disable=no-member
24+ return len (data )
25+
26+ sock .send .side_effect = _send
27+
28+ requests_session = adafruit_requests .Session (pool )
29+ headers = {}
30+ requests_session .get ("http://" + HOST + "/get" , headers = headers )
31+
32+ sock .connect .assert_called_once_with ((IP , 80 ))
33+ sent = b"" .join (sent )
34+ assert b"Host: httpbin.org\r \n " in sent
35+
36+
37+ def test_host_replace ():
38+ pool = mocket .MocketPool ()
39+ pool .getaddrinfo .return_value = ((None , None , None , None , (IP , 80 )),)
40+ sock = mocket .Mocket (RESPONSE_HEADERS )
41+ pool .socket .return_value = sock
42+ sent = []
43+
44+ def _send (data ):
45+ sent .append (data ) # pylint: disable=no-member
46+ return len (data )
47+
48+ sock .send .side_effect = _send
49+
50+ requests_session = adafruit_requests .Session (pool )
51+ headers = {"host" : IP }
52+ requests_session .get ("http://" + HOST + "/get" , headers = headers )
53+
54+ sock .connect .assert_called_once_with ((IP , 80 ))
55+ sent = b"" .join (sent )
56+ assert b"host: 1.2.3.4\r \n " in sent
57+ assert b"Host: httpbin.org\r \n " not in sent
58+ assert sent .lower ().count (b"host:" ) == 1
59+
60+
61+ def test_user_agent ():
62+ pool = mocket .MocketPool ()
63+ pool .getaddrinfo .return_value = ((None , None , None , None , (IP , 80 )),)
64+ sock = mocket .Mocket (RESPONSE_HEADERS )
65+ pool .socket .return_value = sock
66+ sent = []
67+
68+ def _send (data ):
69+ sent .append (data ) # pylint: disable=no-member
70+ return len (data )
71+
72+ sock .send .side_effect = _send
73+
74+ requests_session = adafruit_requests .Session (pool )
75+ headers = {}
76+ requests_session .get ("http://" + HOST + "/get" , headers = headers )
77+
78+ sock .connect .assert_called_once_with ((IP , 80 ))
79+ sent = b"" .join (sent )
80+ assert b"User-Agent: Adafruit CircuitPython\r \n " in sent
81+
82+
83+ def test_user_agent_replace ():
1684 pool = mocket .MocketPool ()
1785 pool .getaddrinfo .return_value = ((None , None , None , None , (IP , 80 )),)
1886 sock = mocket .Mocket (RESPONSE_HEADERS )
@@ -30,7 +98,55 @@ def _send(data):
3098 requests_session .get ("http://" + HOST + "/get" , headers = headers )
3199
32100 sock .connect .assert_called_once_with ((IP , 80 ))
33- sent = b"" .join (sent ). lower ()
101+ sent = b"" .join (sent )
34102 assert b"user-agent: blinka/1.0.0\r \n " in sent
35- # The current implementation sends two user agents. Fix it, and uncomment below.
36- # assert sent.count(b"user-agent:") == 1
103+ assert b"User-Agent: Adafruit CircuitPython\r \n " not in sent
104+ assert sent .lower ().count (b"user-agent:" ) == 1
105+
106+
107+ def test_content_type ():
108+ pool = mocket .MocketPool ()
109+ pool .getaddrinfo .return_value = ((None , None , None , None , (IP , 80 )),)
110+ sock = mocket .Mocket (RESPONSE_HEADERS )
111+ pool .socket .return_value = sock
112+ sent = []
113+
114+ def _send (data ):
115+ sent .append (data ) # pylint: disable=no-member
116+ return len (data )
117+
118+ sock .send .side_effect = _send
119+
120+ requests_session = adafruit_requests .Session (pool )
121+ headers = {}
122+ data = {"test" : True }
123+ requests_session .post ("http://" + HOST + "/get" , data = data , headers = headers )
124+
125+ sock .connect .assert_called_once_with ((IP , 80 ))
126+ sent = b"" .join (sent )
127+ assert b"Content-Type: application/x-www-form-urlencoded\r \n " in sent
128+
129+
130+ def test_content_type_replace ():
131+ pool = mocket .MocketPool ()
132+ pool .getaddrinfo .return_value = ((None , None , None , None , (IP , 80 )),)
133+ sock = mocket .Mocket (RESPONSE_HEADERS )
134+ pool .socket .return_value = sock
135+ sent = []
136+
137+ def _send (data ):
138+ sent .append (data ) # pylint: disable=no-member
139+ return len (data )
140+
141+ sock .send .side_effect = _send
142+
143+ requests_session = adafruit_requests .Session (pool )
144+ headers = {"content-type" : "application/test" }
145+ data = {"test" : True }
146+ requests_session .post ("http://" + HOST + "/get" , data = data , headers = headers )
147+
148+ sock .connect .assert_called_once_with ((IP , 80 ))
149+ sent = b"" .join (sent )
150+ assert b"content-type: application/test\r \n " in sent
151+ assert b"Content-Type: application/x-www-form-urlencoded\r \n " not in sent
152+ assert sent .lower ().count (b"content-type:" ) == 1
0 commit comments