Mercurial > cpython-lru_cache-weakref
annotate Lib/test/test_httplib.py @ 78069:a8aa77458e12 3.2
Add c_size_t and c_ssize_t to the ctypes summary table.
| author | Antoine Pitrou <solipsis@pitrou.net> |
|---|---|
| date | Thu, 12 Jul 2012 20:31:50 +0200 |
| parents | 6da1ab5f777d |
| children | b47d342c449b 732d70746fc0 |
| rev | line source |
|---|---|
|
52375
a726f7928561
Remove special logic that closes HTTPConnection socket on EPIPE.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
52372
diff
changeset
|
1 import errno |
|
52372
4265d6c7c074
Replace references to httplib with http.client.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
52370
diff
changeset
|
2 from http import client |
|
42436
3ed020e95b44
Fix tests to use bytes() where the actual sockets return bytes().
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
42133
diff
changeset
|
3 import io |
|
65247
12327b9d3325
Issue #9003: http.client.HTTPSConnection, urllib.request.HTTPSHandler and
Antoine Pitrou <solipsis@pitrou.net>
parents:
65082
diff
changeset
|
4 import os |
|
56293
a17cd9fcdd46
Merged revisions 75137 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
55593
diff
changeset
|
5 import array |
|
41554
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40450
diff
changeset
|
6 import socket |
|
29778
ce988394c754
Fix SF bug 764095: Don't use network in test_httplib.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
28978
diff
changeset
|
7 |
|
58114
b0386fe650c7
Merged revisions 77263-77264 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
56293
diff
changeset
|
8 import unittest |
|
b0386fe650c7
Merged revisions 77263-77264 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
56293
diff
changeset
|
9 TestCase = unittest.TestCase |
|
33001
4fd59651fe3f
SF bug 874842 and patch 997626: httplib bugs
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
29778
diff
changeset
|
10 |
|
47201
9c930a32cebb
#2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents:
46370
diff
changeset
|
11 from test import support |
|
17483
71752a41b57f
Add test for SF bug #405427
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
12 |
|
65247
12327b9d3325
Issue #9003: http.client.HTTPSConnection, urllib.request.HTTPSHandler and
Antoine Pitrou <solipsis@pitrou.net>
parents:
65082
diff
changeset
|
13 here = os.path.dirname(__file__) |
|
12327b9d3325
Issue #9003: http.client.HTTPSConnection, urllib.request.HTTPSHandler and
Antoine Pitrou <solipsis@pitrou.net>
parents:
65082
diff
changeset
|
14 # Self-signed cert file for 'localhost' |
|
12327b9d3325
Issue #9003: http.client.HTTPSConnection, urllib.request.HTTPSHandler and
Antoine Pitrou <solipsis@pitrou.net>
parents:
65082
diff
changeset
|
15 CERT_localhost = os.path.join(here, 'keycert.pem') |
|
12327b9d3325
Issue #9003: http.client.HTTPSConnection, urllib.request.HTTPSHandler and
Antoine Pitrou <solipsis@pitrou.net>
parents:
65082
diff
changeset
|
16 # Self-signed cert file for 'fakehostname' |
|
12327b9d3325
Issue #9003: http.client.HTTPSConnection, urllib.request.HTTPSHandler and
Antoine Pitrou <solipsis@pitrou.net>
parents:
65082
diff
changeset
|
17 CERT_fakehostname = os.path.join(here, 'keycert2.pem') |
|
12327b9d3325
Issue #9003: http.client.HTTPSConnection, urllib.request.HTTPSHandler and
Antoine Pitrou <solipsis@pitrou.net>
parents:
65082
diff
changeset
|
18 # Root cert file (CA) for svn.python.org's cert |
|
12327b9d3325
Issue #9003: http.client.HTTPSConnection, urllib.request.HTTPSHandler and
Antoine Pitrou <solipsis@pitrou.net>
parents:
65082
diff
changeset
|
19 CACERT_svn_python_org = os.path.join(here, 'https_svn_python_org_root.pem') |
|
12327b9d3325
Issue #9003: http.client.HTTPSConnection, urllib.request.HTTPSHandler and
Antoine Pitrou <solipsis@pitrou.net>
parents:
65082
diff
changeset
|
20 |
|
47201
9c930a32cebb
#2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents:
46370
diff
changeset
|
21 HOST = support.HOST |
|
46370
2e917b0c8f6e
Merged revisions 62194,62197-62198,62204-62205,62214,62219-62221,62227,62229-62231,62233-62235,62237-62239 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45504
diff
changeset
|
22 |
|
17483
71752a41b57f
Add test for SF bug #405427
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
23 class FakeSocket: |
|
42436
3ed020e95b44
Fix tests to use bytes() where the actual sockets return bytes().
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
42133
diff
changeset
|
24 def __init__(self, text, fileclass=io.BytesIO): |
|
3ed020e95b44
Fix tests to use bytes() where the actual sockets return bytes().
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
42133
diff
changeset
|
25 if isinstance(text, str): |
|
42902
62874b34d95d
Changes in anticipation of stricter str vs. bytes enforcement.
Guido van Rossum <guido@python.org>
parents:
42590
diff
changeset
|
26 text = text.encode("ascii") |
|
17483
71752a41b57f
Add test for SF bug #405427
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
27 self.text = text |
|
29778
ce988394c754
Fix SF bug 764095: Don't use network in test_httplib.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
28978
diff
changeset
|
28 self.fileclass = fileclass |
| 42133 | 29 self.data = b'' |
|
17483
71752a41b57f
Add test for SF bug #405427
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
30 |
|
33001
4fd59651fe3f
SF bug 874842 and patch 997626: httplib bugs
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
29778
diff
changeset
|
31 def sendall(self, data): |
|
40450
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
36560
diff
changeset
|
32 self.data += data |
|
33001
4fd59651fe3f
SF bug 874842 and patch 997626: httplib bugs
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
29778
diff
changeset
|
33 |
|
17483
71752a41b57f
Add test for SF bug #405427
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
34 def makefile(self, mode, bufsize=None): |
|
71752a41b57f
Add test for SF bug #405427
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
35 if mode != 'r' and mode != 'rb': |
|
52372
4265d6c7c074
Replace references to httplib with http.client.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
52370
diff
changeset
|
36 raise client.UnimplementedFileMode() |
|
29778
ce988394c754
Fix SF bug 764095: Don't use network in test_httplib.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
28978
diff
changeset
|
37 return self.fileclass(self.text) |
|
ce988394c754
Fix SF bug 764095: Don't use network in test_httplib.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
28978
diff
changeset
|
38 |
|
52375
a726f7928561
Remove special logic that closes HTTPConnection socket on EPIPE.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
52372
diff
changeset
|
39 class EPipeSocket(FakeSocket): |
|
a726f7928561
Remove special logic that closes HTTPConnection socket on EPIPE.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
52372
diff
changeset
|
40 |
|
a726f7928561
Remove special logic that closes HTTPConnection socket on EPIPE.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
52372
diff
changeset
|
41 def __init__(self, text, pipe_trigger): |
|
a726f7928561
Remove special logic that closes HTTPConnection socket on EPIPE.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
52372
diff
changeset
|
42 # When sendall() is called with pipe_trigger, raise EPIPE. |
|
a726f7928561
Remove special logic that closes HTTPConnection socket on EPIPE.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
52372
diff
changeset
|
43 FakeSocket.__init__(self, text) |
|
a726f7928561
Remove special logic that closes HTTPConnection socket on EPIPE.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
52372
diff
changeset
|
44 self.pipe_trigger = pipe_trigger |
|
a726f7928561
Remove special logic that closes HTTPConnection socket on EPIPE.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
52372
diff
changeset
|
45 |
|
a726f7928561
Remove special logic that closes HTTPConnection socket on EPIPE.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
52372
diff
changeset
|
46 def sendall(self, data): |
|
a726f7928561
Remove special logic that closes HTTPConnection socket on EPIPE.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
52372
diff
changeset
|
47 if self.pipe_trigger in data: |
|
a726f7928561
Remove special logic that closes HTTPConnection socket on EPIPE.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
52372
diff
changeset
|
48 raise socket.error(errno.EPIPE, "gotcha") |
|
a726f7928561
Remove special logic that closes HTTPConnection socket on EPIPE.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
52372
diff
changeset
|
49 self.data += data |
|
a726f7928561
Remove special logic that closes HTTPConnection socket on EPIPE.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
52372
diff
changeset
|
50 |
|
a726f7928561
Remove special logic that closes HTTPConnection socket on EPIPE.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
52372
diff
changeset
|
51 def close(self): |
|
a726f7928561
Remove special logic that closes HTTPConnection socket on EPIPE.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
52372
diff
changeset
|
52 pass |
|
a726f7928561
Remove special logic that closes HTTPConnection socket on EPIPE.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
52372
diff
changeset
|
53 |
|
42436
3ed020e95b44
Fix tests to use bytes() where the actual sockets return bytes().
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
42133
diff
changeset
|
54 class NoEOFStringIO(io.BytesIO): |
|
29778
ce988394c754
Fix SF bug 764095: Don't use network in test_httplib.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
28978
diff
changeset
|
55 """Like StringIO, but raises AssertionError on EOF. |
|
ce988394c754
Fix SF bug 764095: Don't use network in test_httplib.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
28978
diff
changeset
|
56 |
|
52372
4265d6c7c074
Replace references to httplib with http.client.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
52370
diff
changeset
|
57 This is used below to test that http.client doesn't try to read |
|
29778
ce988394c754
Fix SF bug 764095: Don't use network in test_httplib.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
28978
diff
changeset
|
58 more from the underlying file than it should. |
|
ce988394c754
Fix SF bug 764095: Don't use network in test_httplib.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
28978
diff
changeset
|
59 """ |
|
ce988394c754
Fix SF bug 764095: Don't use network in test_httplib.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
28978
diff
changeset
|
60 def read(self, n=-1): |
|
42436
3ed020e95b44
Fix tests to use bytes() where the actual sockets return bytes().
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
42133
diff
changeset
|
61 data = io.BytesIO.read(self, n) |
|
42992
ecda33051739
Convert various string literals to bytes.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
42965
diff
changeset
|
62 if data == b'': |
|
29778
ce988394c754
Fix SF bug 764095: Don't use network in test_httplib.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
28978
diff
changeset
|
63 raise AssertionError('caller tried to read past EOF') |
|
ce988394c754
Fix SF bug 764095: Don't use network in test_httplib.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
28978
diff
changeset
|
64 return data |
|
ce988394c754
Fix SF bug 764095: Don't use network in test_httplib.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
28978
diff
changeset
|
65 |
|
ce988394c754
Fix SF bug 764095: Don't use network in test_httplib.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
28978
diff
changeset
|
66 def readline(self, length=None): |
|
42436
3ed020e95b44
Fix tests to use bytes() where the actual sockets return bytes().
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
42133
diff
changeset
|
67 data = io.BytesIO.readline(self, length) |
|
42992
ecda33051739
Convert various string literals to bytes.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
42965
diff
changeset
|
68 if data == b'': |
|
29778
ce988394c754
Fix SF bug 764095: Don't use network in test_httplib.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
28978
diff
changeset
|
69 raise AssertionError('caller tried to read past EOF') |
|
ce988394c754
Fix SF bug 764095: Don't use network in test_httplib.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
28978
diff
changeset
|
70 return data |
|
17483
71752a41b57f
Add test for SF bug #405427
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
71 |
|
33001
4fd59651fe3f
SF bug 874842 and patch 997626: httplib bugs
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
29778
diff
changeset
|
72 class HeaderTests(TestCase): |
|
4fd59651fe3f
SF bug 874842 and patch 997626: httplib bugs
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
29778
diff
changeset
|
73 def test_auto_headers(self): |
|
4fd59651fe3f
SF bug 874842 and patch 997626: httplib bugs
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
29778
diff
changeset
|
74 # Some headers are added automatically, but should not be added by |
|
4fd59651fe3f
SF bug 874842 and patch 997626: httplib bugs
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
29778
diff
changeset
|
75 # .request() if they are explicitly set. |
|
4fd59651fe3f
SF bug 874842 and patch 997626: httplib bugs
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
29778
diff
changeset
|
76 |
|
4fd59651fe3f
SF bug 874842 and patch 997626: httplib bugs
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
29778
diff
changeset
|
77 class HeaderCountingBuffer(list): |
|
4fd59651fe3f
SF bug 874842 and patch 997626: httplib bugs
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
29778
diff
changeset
|
78 def __init__(self): |
|
4fd59651fe3f
SF bug 874842 and patch 997626: httplib bugs
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
29778
diff
changeset
|
79 self.count = {} |
|
4fd59651fe3f
SF bug 874842 and patch 997626: httplib bugs
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
29778
diff
changeset
|
80 def append(self, item): |
|
42965
d1a17cd26a4b
Make test_httplib pass.
Guido van Rossum <guido@python.org>
parents:
42902
diff
changeset
|
81 kv = item.split(b':') |
|
33001
4fd59651fe3f
SF bug 874842 and patch 997626: httplib bugs
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
29778
diff
changeset
|
82 if len(kv) > 1: |
|
4fd59651fe3f
SF bug 874842 and patch 997626: httplib bugs
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
29778
diff
changeset
|
83 # item is a 'Key: Value' header string |
| 42133 | 84 lcKey = kv[0].decode('ascii').lower() |
|
33001
4fd59651fe3f
SF bug 874842 and patch 997626: httplib bugs
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
29778
diff
changeset
|
85 self.count.setdefault(lcKey, 0) |
|
4fd59651fe3f
SF bug 874842 and patch 997626: httplib bugs
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
29778
diff
changeset
|
86 self.count[lcKey] += 1 |
|
4fd59651fe3f
SF bug 874842 and patch 997626: httplib bugs
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
29778
diff
changeset
|
87 list.append(self, item) |
|
4fd59651fe3f
SF bug 874842 and patch 997626: httplib bugs
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
29778
diff
changeset
|
88 |
|
4fd59651fe3f
SF bug 874842 and patch 997626: httplib bugs
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
29778
diff
changeset
|
89 for explicit_header in True, False: |
|
4fd59651fe3f
SF bug 874842 and patch 997626: httplib bugs
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
29778
diff
changeset
|
90 for header in 'Content-length', 'Host', 'Accept-encoding': |
|
52372
4265d6c7c074
Replace references to httplib with http.client.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
52370
diff
changeset
|
91 conn = client.HTTPConnection('example.com') |
|
33001
4fd59651fe3f
SF bug 874842 and patch 997626: httplib bugs
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
29778
diff
changeset
|
92 conn.sock = FakeSocket('blahblahblah') |
|
4fd59651fe3f
SF bug 874842 and patch 997626: httplib bugs
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
29778
diff
changeset
|
93 conn._buffer = HeaderCountingBuffer() |
|
4fd59651fe3f
SF bug 874842 and patch 997626: httplib bugs
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
29778
diff
changeset
|
94 |
|
4fd59651fe3f
SF bug 874842 and patch 997626: httplib bugs
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
29778
diff
changeset
|
95 body = 'spamspamspam' |
|
4fd59651fe3f
SF bug 874842 and patch 997626: httplib bugs
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
29778
diff
changeset
|
96 headers = {} |
|
4fd59651fe3f
SF bug 874842 and patch 997626: httplib bugs
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
29778
diff
changeset
|
97 if explicit_header: |
|
4fd59651fe3f
SF bug 874842 and patch 997626: httplib bugs
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
29778
diff
changeset
|
98 headers[header] = str(len(body)) |
|
4fd59651fe3f
SF bug 874842 and patch 997626: httplib bugs
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
29778
diff
changeset
|
99 conn.request('POST', '/', body, headers) |
|
4fd59651fe3f
SF bug 874842 and patch 997626: httplib bugs
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
29778
diff
changeset
|
100 self.assertEqual(conn._buffer.count[header.lower()], 1) |
|
4fd59651fe3f
SF bug 874842 and patch 997626: httplib bugs
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
29778
diff
changeset
|
101 |
|
77048
6da1ab5f777d
Fix Issue14721: Send Content-length: 0 for empty body () in the http.client requests
Senthil Kumaran <senthil@uthcode.com>
parents:
76604
diff
changeset
|
102 def test_content_length_0(self): |
|
6da1ab5f777d
Fix Issue14721: Send Content-length: 0 for empty body () in the http.client requests
Senthil Kumaran <senthil@uthcode.com>
parents:
76604
diff
changeset
|
103 |
|
6da1ab5f777d
Fix Issue14721: Send Content-length: 0 for empty body () in the http.client requests
Senthil Kumaran <senthil@uthcode.com>
parents:
76604
diff
changeset
|
104 class ContentLengthChecker(list): |
|
6da1ab5f777d
Fix Issue14721: Send Content-length: 0 for empty body () in the http.client requests
Senthil Kumaran <senthil@uthcode.com>
parents:
76604
diff
changeset
|
105 def __init__(self): |
|
6da1ab5f777d
Fix Issue14721: Send Content-length: 0 for empty body () in the http.client requests
Senthil Kumaran <senthil@uthcode.com>
parents:
76604
diff
changeset
|
106 list.__init__(self) |
|
6da1ab5f777d
Fix Issue14721: Send Content-length: 0 for empty body () in the http.client requests
Senthil Kumaran <senthil@uthcode.com>
parents:
76604
diff
changeset
|
107 self.content_length = None |
|
6da1ab5f777d
Fix Issue14721: Send Content-length: 0 for empty body () in the http.client requests
Senthil Kumaran <senthil@uthcode.com>
parents:
76604
diff
changeset
|
108 def append(self, item): |
|
6da1ab5f777d
Fix Issue14721: Send Content-length: 0 for empty body () in the http.client requests
Senthil Kumaran <senthil@uthcode.com>
parents:
76604
diff
changeset
|
109 kv = item.split(b':', 1) |
|
6da1ab5f777d
Fix Issue14721: Send Content-length: 0 for empty body () in the http.client requests
Senthil Kumaran <senthil@uthcode.com>
parents:
76604
diff
changeset
|
110 if len(kv) > 1 and kv[0].lower() == b'content-length': |
|
6da1ab5f777d
Fix Issue14721: Send Content-length: 0 for empty body () in the http.client requests
Senthil Kumaran <senthil@uthcode.com>
parents:
76604
diff
changeset
|
111 self.content_length = kv[1].strip() |
|
6da1ab5f777d
Fix Issue14721: Send Content-length: 0 for empty body () in the http.client requests
Senthil Kumaran <senthil@uthcode.com>
parents:
76604
diff
changeset
|
112 list.append(self, item) |
|
6da1ab5f777d
Fix Issue14721: Send Content-length: 0 for empty body () in the http.client requests
Senthil Kumaran <senthil@uthcode.com>
parents:
76604
diff
changeset
|
113 |
|
6da1ab5f777d
Fix Issue14721: Send Content-length: 0 for empty body () in the http.client requests
Senthil Kumaran <senthil@uthcode.com>
parents:
76604
diff
changeset
|
114 # POST with empty body |
|
6da1ab5f777d
Fix Issue14721: Send Content-length: 0 for empty body () in the http.client requests
Senthil Kumaran <senthil@uthcode.com>
parents:
76604
diff
changeset
|
115 conn = client.HTTPConnection('example.com') |
|
6da1ab5f777d
Fix Issue14721: Send Content-length: 0 for empty body () in the http.client requests
Senthil Kumaran <senthil@uthcode.com>
parents:
76604
diff
changeset
|
116 conn.sock = FakeSocket(None) |
|
6da1ab5f777d
Fix Issue14721: Send Content-length: 0 for empty body () in the http.client requests
Senthil Kumaran <senthil@uthcode.com>
parents:
76604
diff
changeset
|
117 conn._buffer = ContentLengthChecker() |
|
6da1ab5f777d
Fix Issue14721: Send Content-length: 0 for empty body () in the http.client requests
Senthil Kumaran <senthil@uthcode.com>
parents:
76604
diff
changeset
|
118 conn.request('POST', '/', '') |
|
6da1ab5f777d
Fix Issue14721: Send Content-length: 0 for empty body () in the http.client requests
Senthil Kumaran <senthil@uthcode.com>
parents:
76604
diff
changeset
|
119 self.assertEqual(conn._buffer.content_length, b'0', |
|
6da1ab5f777d
Fix Issue14721: Send Content-length: 0 for empty body () in the http.client requests
Senthil Kumaran <senthil@uthcode.com>
parents:
76604
diff
changeset
|
120 'Header Content-Length not set') |
|
6da1ab5f777d
Fix Issue14721: Send Content-length: 0 for empty body () in the http.client requests
Senthil Kumaran <senthil@uthcode.com>
parents:
76604
diff
changeset
|
121 |
|
6da1ab5f777d
Fix Issue14721: Send Content-length: 0 for empty body () in the http.client requests
Senthil Kumaran <senthil@uthcode.com>
parents:
76604
diff
changeset
|
122 # PUT request with empty body |
|
6da1ab5f777d
Fix Issue14721: Send Content-length: 0 for empty body () in the http.client requests
Senthil Kumaran <senthil@uthcode.com>
parents:
76604
diff
changeset
|
123 conn = client.HTTPConnection('example.com') |
|
6da1ab5f777d
Fix Issue14721: Send Content-length: 0 for empty body () in the http.client requests
Senthil Kumaran <senthil@uthcode.com>
parents:
76604
diff
changeset
|
124 conn.sock = FakeSocket(None) |
|
6da1ab5f777d
Fix Issue14721: Send Content-length: 0 for empty body () in the http.client requests
Senthil Kumaran <senthil@uthcode.com>
parents:
76604
diff
changeset
|
125 conn._buffer = ContentLengthChecker() |
|
6da1ab5f777d
Fix Issue14721: Send Content-length: 0 for empty body () in the http.client requests
Senthil Kumaran <senthil@uthcode.com>
parents:
76604
diff
changeset
|
126 conn.request('PUT', '/', '') |
|
6da1ab5f777d
Fix Issue14721: Send Content-length: 0 for empty body () in the http.client requests
Senthil Kumaran <senthil@uthcode.com>
parents:
76604
diff
changeset
|
127 self.assertEqual(conn._buffer.content_length, b'0', |
|
6da1ab5f777d
Fix Issue14721: Send Content-length: 0 for empty body () in the http.client requests
Senthil Kumaran <senthil@uthcode.com>
parents:
76604
diff
changeset
|
128 'Header Content-Length not set') |
|
6da1ab5f777d
Fix Issue14721: Send Content-length: 0 for empty body () in the http.client requests
Senthil Kumaran <senthil@uthcode.com>
parents:
76604
diff
changeset
|
129 |
|
65079
32c32b70aa33
Merged revisions 85205 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents:
63538
diff
changeset
|
130 def test_putheader(self): |
|
32c32b70aa33
Merged revisions 85205 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents:
63538
diff
changeset
|
131 conn = client.HTTPConnection('example.com') |
|
32c32b70aa33
Merged revisions 85205 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents:
63538
diff
changeset
|
132 conn.sock = FakeSocket(None) |
|
32c32b70aa33
Merged revisions 85205 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents:
63538
diff
changeset
|
133 conn.putrequest('GET','/') |
|
32c32b70aa33
Merged revisions 85205 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents:
63538
diff
changeset
|
134 conn.putheader('Content-length', 42) |
|
32c32b70aa33
Merged revisions 85205 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents:
63538
diff
changeset
|
135 self.assertTrue(b'Content-length: 42' in conn._buffer) |
|
32c32b70aa33
Merged revisions 85205 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents:
63538
diff
changeset
|
136 |
|
66196
0f398188c7f6
Merged revisions 86450 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents:
65083
diff
changeset
|
137 def test_ipv6host_header(self): |
|
0f398188c7f6
Merged revisions 86450 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents:
65083
diff
changeset
|
138 # Default host header on IPv6 transaction should wrapped by [] if |
|
0f398188c7f6
Merged revisions 86450 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents:
65083
diff
changeset
|
139 # its actual IPv6 address |
|
0f398188c7f6
Merged revisions 86450 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents:
65083
diff
changeset
|
140 expected = b'GET /foo HTTP/1.1\r\nHost: [2001::]:81\r\n' \ |
|
0f398188c7f6
Merged revisions 86450 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents:
65083
diff
changeset
|
141 b'Accept-Encoding: identity\r\n\r\n' |
|
0f398188c7f6
Merged revisions 86450 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents:
65083
diff
changeset
|
142 conn = client.HTTPConnection('[2001::]:81') |
|
0f398188c7f6
Merged revisions 86450 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents:
65083
diff
changeset
|
143 sock = FakeSocket('') |
|
0f398188c7f6
Merged revisions 86450 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents:
65083
diff
changeset
|
144 conn.sock = sock |
|
0f398188c7f6
Merged revisions 86450 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents:
65083
diff
changeset
|
145 conn.request('GET', '/foo') |
|
0f398188c7f6
Merged revisions 86450 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents:
65083
diff
changeset
|
146 self.assertTrue(sock.data.startswith(expected)) |
|
0f398188c7f6
Merged revisions 86450 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents:
65083
diff
changeset
|
147 |
|
0f398188c7f6
Merged revisions 86450 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents:
65083
diff
changeset
|
148 expected = b'GET /foo HTTP/1.1\r\nHost: [2001:102A::]\r\n' \ |
|
0f398188c7f6
Merged revisions 86450 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents:
65083
diff
changeset
|
149 b'Accept-Encoding: identity\r\n\r\n' |
|
0f398188c7f6
Merged revisions 86450 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents:
65083
diff
changeset
|
150 conn = client.HTTPConnection('[2001:102A::]') |
|
0f398188c7f6
Merged revisions 86450 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents:
65083
diff
changeset
|
151 sock = FakeSocket('') |
|
0f398188c7f6
Merged revisions 86450 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents:
65083
diff
changeset
|
152 conn.sock = sock |
|
0f398188c7f6
Merged revisions 86450 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents:
65083
diff
changeset
|
153 conn.request('GET', '/foo') |
|
0f398188c7f6
Merged revisions 86450 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents:
65083
diff
changeset
|
154 self.assertTrue(sock.data.startswith(expected)) |
|
0f398188c7f6
Merged revisions 86450 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents:
65083
diff
changeset
|
155 |
|
65079
32c32b70aa33
Merged revisions 85205 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents:
63538
diff
changeset
|
156 |
|
40450
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
36560
diff
changeset
|
157 class BasicTest(TestCase): |
|
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
36560
diff
changeset
|
158 def test_status_lines(self): |
|
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
36560
diff
changeset
|
159 # Test HTTP status lines |
|
27348
5acf6967d6dd
Fix for SF bug 661340: test_httplib fails on the mac.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
24442
diff
changeset
|
160 |
|
40450
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
36560
diff
changeset
|
161 body = "HTTP/1.1 200 Ok\r\n\r\nText" |
|
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
36560
diff
changeset
|
162 sock = FakeSocket(body) |
|
52372
4265d6c7c074
Replace references to httplib with http.client.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
52370
diff
changeset
|
163 resp = client.HTTPResponse(sock) |
|
40450
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
36560
diff
changeset
|
164 resp.begin() |
|
42436
3ed020e95b44
Fix tests to use bytes() where the actual sockets return bytes().
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
42133
diff
changeset
|
165 self.assertEqual(resp.read(), b"Text") |
|
43734
3e5edf19d5f0
Merged revisions 58221-58741 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
43351
diff
changeset
|
166 self.assertTrue(resp.isclosed()) |
|
27348
5acf6967d6dd
Fix for SF bug 661340: test_httplib fails on the mac.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
24442
diff
changeset
|
167 |
|
40450
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
36560
diff
changeset
|
168 body = "HTTP/1.1 400.100 Not Ok\r\n\r\nText" |
|
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
36560
diff
changeset
|
169 sock = FakeSocket(body) |
|
52372
4265d6c7c074
Replace references to httplib with http.client.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
52370
diff
changeset
|
170 resp = client.HTTPResponse(sock) |
|
4265d6c7c074
Replace references to httplib with http.client.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
52370
diff
changeset
|
171 self.assertRaises(client.BadStatusLine, resp.begin) |
|
27348
5acf6967d6dd
Fix for SF bug 661340: test_httplib fails on the mac.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
24442
diff
changeset
|
172 |
|
59875
d9b8f273ab8d
Merged revisions 78417 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
58114
diff
changeset
|
173 def test_bad_status_repr(self): |
|
d9b8f273ab8d
Merged revisions 78417 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
58114
diff
changeset
|
174 exc = client.BadStatusLine('') |
|
66310
9fe76c26ea9f
#9424: Replace deprecated assert* methods in the Python test suite.
Ezio Melotti <ezio.melotti@gmail.com>
parents:
66187
diff
changeset
|
175 self.assertEqual(repr(exc), '''BadStatusLine("\'\'",)''') |
|
59875
d9b8f273ab8d
Merged revisions 78417 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
58114
diff
changeset
|
176 |
|
43734
3e5edf19d5f0
Merged revisions 58221-58741 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
43351
diff
changeset
|
177 def test_partial_reads(self): |
|
3e5edf19d5f0
Merged revisions 58221-58741 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
43351
diff
changeset
|
178 # if we have a lenght, the system knows when to close itself |
|
3e5edf19d5f0
Merged revisions 58221-58741 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
43351
diff
changeset
|
179 # same behaviour than when we read the whole thing with read() |
|
3e5edf19d5f0
Merged revisions 58221-58741 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
43351
diff
changeset
|
180 body = "HTTP/1.1 200 Ok\r\nContent-Length: 4\r\n\r\nText" |
|
3e5edf19d5f0
Merged revisions 58221-58741 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
43351
diff
changeset
|
181 sock = FakeSocket(body) |
|
52372
4265d6c7c074
Replace references to httplib with http.client.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
52370
diff
changeset
|
182 resp = client.HTTPResponse(sock) |
|
43734
3e5edf19d5f0
Merged revisions 58221-58741 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
43351
diff
changeset
|
183 resp.begin() |
|
3e5edf19d5f0
Merged revisions 58221-58741 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
43351
diff
changeset
|
184 self.assertEqual(resp.read(2), b'Te') |
|
3e5edf19d5f0
Merged revisions 58221-58741 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
43351
diff
changeset
|
185 self.assertFalse(resp.isclosed()) |
|
3e5edf19d5f0
Merged revisions 58221-58741 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
43351
diff
changeset
|
186 self.assertEqual(resp.read(2), b'xt') |
|
3e5edf19d5f0
Merged revisions 58221-58741 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
43351
diff
changeset
|
187 self.assertTrue(resp.isclosed()) |
|
3e5edf19d5f0
Merged revisions 58221-58741 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
43351
diff
changeset
|
188 |
|
40450
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
36560
diff
changeset
|
189 def test_host_port(self): |
|
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
36560
diff
changeset
|
190 # Check invalid host_port |
| 22495 | 191 |
|
72981
6ac59218c049
Fixes #10860: Handle empty port after port delimiter in httplib
Łukasz Langa <lukasz@langa.pl>
parents:
72426
diff
changeset
|
192 for hp in ("www.python.org:abc", "user:password@www.python.org"): |
|
52372
4265d6c7c074
Replace references to httplib with http.client.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
52370
diff
changeset
|
193 self.assertRaises(client.InvalidURL, client.HTTPConnection, hp) |
|
27348
5acf6967d6dd
Fix for SF bug 661340: test_httplib fails on the mac.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
24442
diff
changeset
|
194 |
|
42590
1b91faa0de2d
Remove Python 1.5 compatibility layer from httplib.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
42436
diff
changeset
|
195 for hp, h, p in (("[fe80::207:e9ff:fe9b]:8000", |
|
1b91faa0de2d
Remove Python 1.5 compatibility layer from httplib.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
42436
diff
changeset
|
196 "fe80::207:e9ff:fe9b", 8000), |
|
40450
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
36560
diff
changeset
|
197 ("www.python.org:80", "www.python.org", 80), |
|
72981
6ac59218c049
Fixes #10860: Handle empty port after port delimiter in httplib
Łukasz Langa <lukasz@langa.pl>
parents:
72426
diff
changeset
|
198 ("www.python.org:", "www.python.org", 80), |
|
40450
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
36560
diff
changeset
|
199 ("www.python.org", "www.python.org", 80), |
|
72981
6ac59218c049
Fixes #10860: Handle empty port after port delimiter in httplib
Łukasz Langa <lukasz@langa.pl>
parents:
72426
diff
changeset
|
200 ("[fe80::207:e9ff:fe9b]", "fe80::207:e9ff:fe9b", 80), |
|
6ac59218c049
Fixes #10860: Handle empty port after port delimiter in httplib
Łukasz Langa <lukasz@langa.pl>
parents:
72426
diff
changeset
|
201 ("[fe80::207:e9ff:fe9b]:", "fe80::207:e9ff:fe9b", 80)): |
|
52372
4265d6c7c074
Replace references to httplib with http.client.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
52370
diff
changeset
|
202 c = client.HTTPConnection(hp) |
|
42590
1b91faa0de2d
Remove Python 1.5 compatibility layer from httplib.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
42436
diff
changeset
|
203 self.assertEqual(h, c.host) |
|
1b91faa0de2d
Remove Python 1.5 compatibility layer from httplib.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
42436
diff
changeset
|
204 self.assertEqual(p, c.port) |
|
27348
5acf6967d6dd
Fix for SF bug 661340: test_httplib fails on the mac.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
24442
diff
changeset
|
205 |
|
40450
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
36560
diff
changeset
|
206 def test_response_headers(self): |
|
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
36560
diff
changeset
|
207 # test response with multiple message headers with the same field name. |
|
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
36560
diff
changeset
|
208 text = ('HTTP/1.1 200 OK\r\n' |
|
42590
1b91faa0de2d
Remove Python 1.5 compatibility layer from httplib.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
42436
diff
changeset
|
209 'Set-Cookie: Customer="WILE_E_COYOTE"; ' |
|
1b91faa0de2d
Remove Python 1.5 compatibility layer from httplib.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
42436
diff
changeset
|
210 'Version="1"; Path="/acme"\r\n' |
|
40450
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
36560
diff
changeset
|
211 'Set-Cookie: Part_Number="Rocket_Launcher_0001"; Version="1";' |
|
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
36560
diff
changeset
|
212 ' Path="/acme"\r\n' |
|
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
36560
diff
changeset
|
213 '\r\n' |
|
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
36560
diff
changeset
|
214 'No body\r\n') |
|
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
36560
diff
changeset
|
215 hdr = ('Customer="WILE_E_COYOTE"; Version="1"; Path="/acme"' |
|
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
36560
diff
changeset
|
216 ', ' |
|
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
36560
diff
changeset
|
217 'Part_Number="Rocket_Launcher_0001"; Version="1"; Path="/acme"') |
|
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
36560
diff
changeset
|
218 s = FakeSocket(text) |
|
52372
4265d6c7c074
Replace references to httplib with http.client.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
52370
diff
changeset
|
219 r = client.HTTPResponse(s) |
|
40450
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
36560
diff
changeset
|
220 r.begin() |
|
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
36560
diff
changeset
|
221 cookies = r.getheader("Set-Cookie") |
|
42590
1b91faa0de2d
Remove Python 1.5 compatibility layer from httplib.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
42436
diff
changeset
|
222 self.assertEqual(cookies, hdr) |
|
33488
71ed4b35fdc4
Search from the end of the host/port combination to find the colon which
Skip Montanaro <skip@pobox.com>
parents:
33001
diff
changeset
|
223 |
|
40450
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
36560
diff
changeset
|
224 def test_read_head(self): |
|
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
36560
diff
changeset
|
225 # Test that the library doesn't attempt to read any data |
|
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
36560
diff
changeset
|
226 # from a HEAD request. (Tickles SF bug #622042.) |
|
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
36560
diff
changeset
|
227 sock = FakeSocket( |
|
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
36560
diff
changeset
|
228 'HTTP/1.1 200 OK\r\n' |
|
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
36560
diff
changeset
|
229 'Content-Length: 14432\r\n' |
|
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
36560
diff
changeset
|
230 '\r\n', |
|
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
36560
diff
changeset
|
231 NoEOFStringIO) |
|
52372
4265d6c7c074
Replace references to httplib with http.client.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
52370
diff
changeset
|
232 resp = client.HTTPResponse(sock, method="HEAD") |
|
40450
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
36560
diff
changeset
|
233 resp.begin() |
|
43351
84dc86f21196
Fix for bug 1148: str/bytes issue in httplib's _safe_read().
Guido van Rossum <guido@python.org>
parents:
43099
diff
changeset
|
234 if resp.read(): |
|
40450
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
36560
diff
changeset
|
235 self.fail("Did not expect response from HEAD request") |
|
27348
5acf6967d6dd
Fix for SF bug 661340: test_httplib fails on the mac.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
24442
diff
changeset
|
236 |
|
40450
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
36560
diff
changeset
|
237 def test_send_file(self): |
|
42965
d1a17cd26a4b
Make test_httplib pass.
Guido van Rossum <guido@python.org>
parents:
42902
diff
changeset
|
238 expected = (b'GET /foo HTTP/1.1\r\nHost: example.com\r\n' |
|
d1a17cd26a4b
Make test_httplib pass.
Guido van Rossum <guido@python.org>
parents:
42902
diff
changeset
|
239 b'Accept-Encoding: identity\r\nContent-Length:') |
|
28978
83fe0f5c9359
SF bug 622042: Don't expect response body from HEAD request.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
27348
diff
changeset
|
240 |
|
65738
5c013ec27327
Move test_httplib over to file context managers.
Brett Cannon <bcannon@gmail.com>
parents:
65247
diff
changeset
|
241 with open(__file__, 'rb') as body: |
|
5c013ec27327
Move test_httplib over to file context managers.
Brett Cannon <bcannon@gmail.com>
parents:
65247
diff
changeset
|
242 conn = client.HTTPConnection('example.com') |
|
5c013ec27327
Move test_httplib over to file context managers.
Brett Cannon <bcannon@gmail.com>
parents:
65247
diff
changeset
|
243 sock = FakeSocket(body) |
|
5c013ec27327
Move test_httplib over to file context managers.
Brett Cannon <bcannon@gmail.com>
parents:
65247
diff
changeset
|
244 conn.sock = sock |
|
5c013ec27327
Move test_httplib over to file context managers.
Brett Cannon <bcannon@gmail.com>
parents:
65247
diff
changeset
|
245 conn.request('GET', '/foo', body) |
|
5c013ec27327
Move test_httplib over to file context managers.
Brett Cannon <bcannon@gmail.com>
parents:
65247
diff
changeset
|
246 self.assertTrue(sock.data.startswith(expected), '%r != %r' % |
|
5c013ec27327
Move test_httplib over to file context managers.
Brett Cannon <bcannon@gmail.com>
parents:
65247
diff
changeset
|
247 (sock.data[:len(expected)], expected)) |
|
33001
4fd59651fe3f
SF bug 874842 and patch 997626: httplib bugs
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
29778
diff
changeset
|
248 |
|
56293
a17cd9fcdd46
Merged revisions 75137 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
55593
diff
changeset
|
249 def test_send(self): |
|
a17cd9fcdd46
Merged revisions 75137 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
55593
diff
changeset
|
250 expected = b'this is a test this is only a test' |
|
a17cd9fcdd46
Merged revisions 75137 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
55593
diff
changeset
|
251 conn = client.HTTPConnection('example.com') |
|
a17cd9fcdd46
Merged revisions 75137 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
55593
diff
changeset
|
252 sock = FakeSocket(None) |
|
a17cd9fcdd46
Merged revisions 75137 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
55593
diff
changeset
|
253 conn.sock = sock |
|
a17cd9fcdd46
Merged revisions 75137 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
55593
diff
changeset
|
254 conn.send(expected) |
|
66340
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
66196
diff
changeset
|
255 self.assertEqual(expected, sock.data) |
|
56293
a17cd9fcdd46
Merged revisions 75137 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
55593
diff
changeset
|
256 sock.data = b'' |
|
a17cd9fcdd46
Merged revisions 75137 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
55593
diff
changeset
|
257 conn.send(array.array('b', expected)) |
|
66340
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
66196
diff
changeset
|
258 self.assertEqual(expected, sock.data) |
|
56293
a17cd9fcdd46
Merged revisions 75137 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
55593
diff
changeset
|
259 sock.data = b'' |
|
a17cd9fcdd46
Merged revisions 75137 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
55593
diff
changeset
|
260 conn.send(io.BytesIO(expected)) |
|
66340
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
66196
diff
changeset
|
261 self.assertEqual(expected, sock.data) |
|
56293
a17cd9fcdd46
Merged revisions 75137 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
55593
diff
changeset
|
262 |
|
67046
6f56b247a7cd
Issue3243 - Support iterable bodies in httplib. Patch contributions by Xuanji Li and Chris AtLee.
Senthil Kumaran <orsenthil@gmail.com>
parents:
67020
diff
changeset
|
263 def test_send_iter(self): |
|
6f56b247a7cd
Issue3243 - Support iterable bodies in httplib. Patch contributions by Xuanji Li and Chris AtLee.
Senthil Kumaran <orsenthil@gmail.com>
parents:
67020
diff
changeset
|
264 expected = b'GET /foo HTTP/1.1\r\nHost: example.com\r\n' \ |
|
6f56b247a7cd
Issue3243 - Support iterable bodies in httplib. Patch contributions by Xuanji Li and Chris AtLee.
Senthil Kumaran <orsenthil@gmail.com>
parents:
67020
diff
changeset
|
265 b'Accept-Encoding: identity\r\nContent-Length: 11\r\n' \ |
|
6f56b247a7cd
Issue3243 - Support iterable bodies in httplib. Patch contributions by Xuanji Li and Chris AtLee.
Senthil Kumaran <orsenthil@gmail.com>
parents:
67020
diff
changeset
|
266 b'\r\nonetwothree' |
|
6f56b247a7cd
Issue3243 - Support iterable bodies in httplib. Patch contributions by Xuanji Li and Chris AtLee.
Senthil Kumaran <orsenthil@gmail.com>
parents:
67020
diff
changeset
|
267 |
|
6f56b247a7cd
Issue3243 - Support iterable bodies in httplib. Patch contributions by Xuanji Li and Chris AtLee.
Senthil Kumaran <orsenthil@gmail.com>
parents:
67020
diff
changeset
|
268 def body(): |
|
6f56b247a7cd
Issue3243 - Support iterable bodies in httplib. Patch contributions by Xuanji Li and Chris AtLee.
Senthil Kumaran <orsenthil@gmail.com>
parents:
67020
diff
changeset
|
269 yield b"one" |
|
6f56b247a7cd
Issue3243 - Support iterable bodies in httplib. Patch contributions by Xuanji Li and Chris AtLee.
Senthil Kumaran <orsenthil@gmail.com>
parents:
67020
diff
changeset
|
270 yield b"two" |
|
6f56b247a7cd
Issue3243 - Support iterable bodies in httplib. Patch contributions by Xuanji Li and Chris AtLee.
Senthil Kumaran <orsenthil@gmail.com>
parents:
67020
diff
changeset
|
271 yield b"three" |
|
6f56b247a7cd
Issue3243 - Support iterable bodies in httplib. Patch contributions by Xuanji Li and Chris AtLee.
Senthil Kumaran <orsenthil@gmail.com>
parents:
67020
diff
changeset
|
272 |
|
6f56b247a7cd
Issue3243 - Support iterable bodies in httplib. Patch contributions by Xuanji Li and Chris AtLee.
Senthil Kumaran <orsenthil@gmail.com>
parents:
67020
diff
changeset
|
273 conn = client.HTTPConnection('example.com') |
|
6f56b247a7cd
Issue3243 - Support iterable bodies in httplib. Patch contributions by Xuanji Li and Chris AtLee.
Senthil Kumaran <orsenthil@gmail.com>
parents:
67020
diff
changeset
|
274 sock = FakeSocket("") |
|
6f56b247a7cd
Issue3243 - Support iterable bodies in httplib. Patch contributions by Xuanji Li and Chris AtLee.
Senthil Kumaran <orsenthil@gmail.com>
parents:
67020
diff
changeset
|
275 conn.sock = sock |
|
6f56b247a7cd
Issue3243 - Support iterable bodies in httplib. Patch contributions by Xuanji Li and Chris AtLee.
Senthil Kumaran <orsenthil@gmail.com>
parents:
67020
diff
changeset
|
276 conn.request('GET', '/foo', body(), {'Content-Length': '11'}) |
|
67335
f0eb3448ce38
test_httplib: fix a DeprecationWarning, assertEquals=>assertEqual
Victor Stinner <victor.stinner@haypocalc.com>
parents:
67046
diff
changeset
|
277 self.assertEqual(sock.data, expected) |
|
67046
6f56b247a7cd
Issue3243 - Support iterable bodies in httplib. Patch contributions by Xuanji Li and Chris AtLee.
Senthil Kumaran <orsenthil@gmail.com>
parents:
67020
diff
changeset
|
278 |
|
71688
1013c9fbd83c
Fix closes Issue12676 - Invalid identifier used in TypeError message in http.client.
Senthil Kumaran <senthil@uthcode.com>
parents:
68257
diff
changeset
|
279 def test_send_type_error(self): |
|
1013c9fbd83c
Fix closes Issue12676 - Invalid identifier used in TypeError message in http.client.
Senthil Kumaran <senthil@uthcode.com>
parents:
68257
diff
changeset
|
280 # See: Issue #12676 |
|
1013c9fbd83c
Fix closes Issue12676 - Invalid identifier used in TypeError message in http.client.
Senthil Kumaran <senthil@uthcode.com>
parents:
68257
diff
changeset
|
281 conn = client.HTTPConnection('example.com') |
|
1013c9fbd83c
Fix closes Issue12676 - Invalid identifier used in TypeError message in http.client.
Senthil Kumaran <senthil@uthcode.com>
parents:
68257
diff
changeset
|
282 conn.sock = FakeSocket('') |
|
1013c9fbd83c
Fix closes Issue12676 - Invalid identifier used in TypeError message in http.client.
Senthil Kumaran <senthil@uthcode.com>
parents:
68257
diff
changeset
|
283 with self.assertRaises(TypeError): |
|
1013c9fbd83c
Fix closes Issue12676 - Invalid identifier used in TypeError message in http.client.
Senthil Kumaran <senthil@uthcode.com>
parents:
68257
diff
changeset
|
284 conn.request('POST', 'test', conn) |
|
1013c9fbd83c
Fix closes Issue12676 - Invalid identifier used in TypeError message in http.client.
Senthil Kumaran <senthil@uthcode.com>
parents:
68257
diff
changeset
|
285 |
|
45504
1b6fb5699634
Merged revisions 61034-61036,61038-61048 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45471
diff
changeset
|
286 def test_chunked(self): |
|
1b6fb5699634
Merged revisions 61034-61036,61038-61048 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45471
diff
changeset
|
287 chunked_start = ( |
|
1b6fb5699634
Merged revisions 61034-61036,61038-61048 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45471
diff
changeset
|
288 'HTTP/1.1 200 OK\r\n' |
|
1b6fb5699634
Merged revisions 61034-61036,61038-61048 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45471
diff
changeset
|
289 'Transfer-Encoding: chunked\r\n\r\n' |
|
1b6fb5699634
Merged revisions 61034-61036,61038-61048 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45471
diff
changeset
|
290 'a\r\n' |
|
1b6fb5699634
Merged revisions 61034-61036,61038-61048 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45471
diff
changeset
|
291 'hello worl\r\n' |
|
1b6fb5699634
Merged revisions 61034-61036,61038-61048 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45471
diff
changeset
|
292 '1\r\n' |
|
1b6fb5699634
Merged revisions 61034-61036,61038-61048 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45471
diff
changeset
|
293 'd\r\n' |
|
1b6fb5699634
Merged revisions 61034-61036,61038-61048 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45471
diff
changeset
|
294 ) |
|
1b6fb5699634
Merged revisions 61034-61036,61038-61048 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45471
diff
changeset
|
295 sock = FakeSocket(chunked_start + '0\r\n') |
|
52372
4265d6c7c074
Replace references to httplib with http.client.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
52370
diff
changeset
|
296 resp = client.HTTPResponse(sock, method="GET") |
|
45504
1b6fb5699634
Merged revisions 61034-61036,61038-61048 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45471
diff
changeset
|
297 resp.begin() |
|
66340
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
66196
diff
changeset
|
298 self.assertEqual(resp.read(), b'hello world') |
|
45504
1b6fb5699634
Merged revisions 61034-61036,61038-61048 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45471
diff
changeset
|
299 resp.close() |
|
1b6fb5699634
Merged revisions 61034-61036,61038-61048 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45471
diff
changeset
|
300 |
|
1b6fb5699634
Merged revisions 61034-61036,61038-61048 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45471
diff
changeset
|
301 for x in ('', 'foo\r\n'): |
|
1b6fb5699634
Merged revisions 61034-61036,61038-61048 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45471
diff
changeset
|
302 sock = FakeSocket(chunked_start + x) |
|
52372
4265d6c7c074
Replace references to httplib with http.client.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
52370
diff
changeset
|
303 resp = client.HTTPResponse(sock, method="GET") |
|
45504
1b6fb5699634
Merged revisions 61034-61036,61038-61048 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45471
diff
changeset
|
304 resp.begin() |
|
1b6fb5699634
Merged revisions 61034-61036,61038-61048 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45471
diff
changeset
|
305 try: |
|
1b6fb5699634
Merged revisions 61034-61036,61038-61048 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45471
diff
changeset
|
306 resp.read() |
|
52372
4265d6c7c074
Replace references to httplib with http.client.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
52370
diff
changeset
|
307 except client.IncompleteRead as i: |
|
66340
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
66196
diff
changeset
|
308 self.assertEqual(i.partial, b'hello world') |
|
51954
4da5f0ded362
Merged revisions 70109 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
51533
diff
changeset
|
309 self.assertEqual(repr(i),'IncompleteRead(11 bytes read)') |
|
4da5f0ded362
Merged revisions 70109 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
51533
diff
changeset
|
310 self.assertEqual(str(i),'IncompleteRead(11 bytes read)') |
|
45504
1b6fb5699634
Merged revisions 61034-61036,61038-61048 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45471
diff
changeset
|
311 else: |
|
1b6fb5699634
Merged revisions 61034-61036,61038-61048 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45471
diff
changeset
|
312 self.fail('IncompleteRead expected') |
|
1b6fb5699634
Merged revisions 61034-61036,61038-61048 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45471
diff
changeset
|
313 finally: |
|
1b6fb5699634
Merged revisions 61034-61036,61038-61048 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45471
diff
changeset
|
314 resp.close() |
|
1b6fb5699634
Merged revisions 61034-61036,61038-61048 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45471
diff
changeset
|
315 |
|
61061
6950eab51ffe
Merged revisions 80587 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents:
56293
diff
changeset
|
316 def test_chunked_head(self): |
|
6950eab51ffe
Merged revisions 80587 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents:
56293
diff
changeset
|
317 chunked_start = ( |
|
6950eab51ffe
Merged revisions 80587 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents:
56293
diff
changeset
|
318 'HTTP/1.1 200 OK\r\n' |
|
6950eab51ffe
Merged revisions 80587 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents:
56293
diff
changeset
|
319 'Transfer-Encoding: chunked\r\n\r\n' |
|
6950eab51ffe
Merged revisions 80587 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents:
56293
diff
changeset
|
320 'a\r\n' |
|
6950eab51ffe
Merged revisions 80587 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents:
56293
diff
changeset
|
321 'hello world\r\n' |
|
6950eab51ffe
Merged revisions 80587 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents:
56293
diff
changeset
|
322 '1\r\n' |
|
6950eab51ffe
Merged revisions 80587 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents:
56293
diff
changeset
|
323 'd\r\n' |
|
6950eab51ffe
Merged revisions 80587 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents:
56293
diff
changeset
|
324 ) |
|
6950eab51ffe
Merged revisions 80587 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents:
56293
diff
changeset
|
325 sock = FakeSocket(chunked_start + '0\r\n') |
|
6950eab51ffe
Merged revisions 80587 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents:
56293
diff
changeset
|
326 resp = client.HTTPResponse(sock, method="HEAD") |
|
6950eab51ffe
Merged revisions 80587 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents:
56293
diff
changeset
|
327 resp.begin() |
|
66340
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
66196
diff
changeset
|
328 self.assertEqual(resp.read(), b'') |
|
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
66196
diff
changeset
|
329 self.assertEqual(resp.status, 200) |
|
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
66196
diff
changeset
|
330 self.assertEqual(resp.reason, 'OK') |
|
62073
84988bb91fbf
Merged revisions 81695 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents:
61061
diff
changeset
|
331 self.assertTrue(resp.isclosed()) |
|
61061
6950eab51ffe
Merged revisions 80587 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents:
56293
diff
changeset
|
332 |
|
45504
1b6fb5699634
Merged revisions 61034-61036,61038-61048 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45471
diff
changeset
|
333 def test_negative_content_length(self): |
|
50540
4229a4b14f1d
Merged revisions 67653,67655,67682-67683,67724,67755,67780-67783,67786,67789,67841,67843,67865,67881,67884,67925,67929,67931 via svnmerge from
Georg Brandl <georg@python.org>
parents:
47559
diff
changeset
|
334 sock = FakeSocket( |
|
4229a4b14f1d
Merged revisions 67653,67655,67682-67683,67724,67755,67780-67783,67786,67789,67841,67843,67865,67881,67884,67925,67929,67931 via svnmerge from
Georg Brandl <georg@python.org>
parents:
47559
diff
changeset
|
335 'HTTP/1.1 200 OK\r\nContent-Length: -1\r\n\r\nHello\r\n') |
|
52372
4265d6c7c074
Replace references to httplib with http.client.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
52370
diff
changeset
|
336 resp = client.HTTPResponse(sock, method="GET") |
|
45504
1b6fb5699634
Merged revisions 61034-61036,61038-61048 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45471
diff
changeset
|
337 resp.begin() |
|
66340
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
66196
diff
changeset
|
338 self.assertEqual(resp.read(), b'Hello\r\n') |
|
45504
1b6fb5699634
Merged revisions 61034-61036,61038-61048 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45471
diff
changeset
|
339 resp.close() |
|
1b6fb5699634
Merged revisions 61034-61036,61038-61048 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45471
diff
changeset
|
340 |
|
51954
4da5f0ded362
Merged revisions 70109 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
51533
diff
changeset
|
341 def test_incomplete_read(self): |
|
4da5f0ded362
Merged revisions 70109 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
51533
diff
changeset
|
342 sock = FakeSocket('HTTP/1.1 200 OK\r\nContent-Length: 10\r\n\r\nHello\r\n') |
|
52372
4265d6c7c074
Replace references to httplib with http.client.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
52370
diff
changeset
|
343 resp = client.HTTPResponse(sock, method="GET") |
|
51954
4da5f0ded362
Merged revisions 70109 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
51533
diff
changeset
|
344 resp.begin() |
|
4da5f0ded362
Merged revisions 70109 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
51533
diff
changeset
|
345 try: |
|
4da5f0ded362
Merged revisions 70109 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
51533
diff
changeset
|
346 resp.read() |
|
52372
4265d6c7c074
Replace references to httplib with http.client.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
52370
diff
changeset
|
347 except client.IncompleteRead as i: |
|
66340
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
66196
diff
changeset
|
348 self.assertEqual(i.partial, b'Hello\r\n') |
|
51954
4da5f0ded362
Merged revisions 70109 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
51533
diff
changeset
|
349 self.assertEqual(repr(i), |
|
4da5f0ded362
Merged revisions 70109 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
51533
diff
changeset
|
350 "IncompleteRead(7 bytes read, 3 more expected)") |
|
4da5f0ded362
Merged revisions 70109 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
51533
diff
changeset
|
351 self.assertEqual(str(i), |
|
4da5f0ded362
Merged revisions 70109 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
51533
diff
changeset
|
352 "IncompleteRead(7 bytes read, 3 more expected)") |
|
4da5f0ded362
Merged revisions 70109 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
51533
diff
changeset
|
353 else: |
|
4da5f0ded362
Merged revisions 70109 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
51533
diff
changeset
|
354 self.fail('IncompleteRead expected') |
|
4da5f0ded362
Merged revisions 70109 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
51533
diff
changeset
|
355 finally: |
|
4da5f0ded362
Merged revisions 70109 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
51533
diff
changeset
|
356 resp.close() |
|
4da5f0ded362
Merged revisions 70109 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
51533
diff
changeset
|
357 |
|
52375
a726f7928561
Remove special logic that closes HTTPConnection socket on EPIPE.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
52372
diff
changeset
|
358 def test_epipe(self): |
|
a726f7928561
Remove special logic that closes HTTPConnection socket on EPIPE.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
52372
diff
changeset
|
359 sock = EPipeSocket( |
|
a726f7928561
Remove special logic that closes HTTPConnection socket on EPIPE.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
52372
diff
changeset
|
360 "HTTP/1.0 401 Authorization Required\r\n" |
|
a726f7928561
Remove special logic that closes HTTPConnection socket on EPIPE.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
52372
diff
changeset
|
361 "Content-type: text/html\r\n" |
|
a726f7928561
Remove special logic that closes HTTPConnection socket on EPIPE.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
52372
diff
changeset
|
362 "WWW-Authenticate: Basic realm=\"example\"\r\n", |
|
a726f7928561
Remove special logic that closes HTTPConnection socket on EPIPE.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
52372
diff
changeset
|
363 b"Content-Length") |
|
a726f7928561
Remove special logic that closes HTTPConnection socket on EPIPE.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
52372
diff
changeset
|
364 conn = client.HTTPConnection("example.com") |
|
a726f7928561
Remove special logic that closes HTTPConnection socket on EPIPE.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
52372
diff
changeset
|
365 conn.sock = sock |
|
a726f7928561
Remove special logic that closes HTTPConnection socket on EPIPE.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
52372
diff
changeset
|
366 self.assertRaises(socket.error, |
|
a726f7928561
Remove special logic that closes HTTPConnection socket on EPIPE.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
52372
diff
changeset
|
367 lambda: conn.request("PUT", "/url", "body")) |
|
a726f7928561
Remove special logic that closes HTTPConnection socket on EPIPE.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
52372
diff
changeset
|
368 resp = conn.getresponse() |
|
a726f7928561
Remove special logic that closes HTTPConnection socket on EPIPE.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
52372
diff
changeset
|
369 self.assertEqual(401, resp.status) |
|
a726f7928561
Remove special logic that closes HTTPConnection socket on EPIPE.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
52372
diff
changeset
|
370 self.assertEqual("Basic realm=\"example\"", |
|
a726f7928561
Remove special logic that closes HTTPConnection socket on EPIPE.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
52372
diff
changeset
|
371 resp.getheader("www-authenticate")) |
|
45504
1b6fb5699634
Merged revisions 61034-61036,61038-61048 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45471
diff
changeset
|
372 |
|
67029
3c182f71d4c9
Merged revisions 87373,87381 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
66340
diff
changeset
|
373 # Test lines overflowing the max line size (_MAXLINE in http.client) |
|
3c182f71d4c9
Merged revisions 87373,87381 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
66340
diff
changeset
|
374 |
|
3c182f71d4c9
Merged revisions 87373,87381 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
66340
diff
changeset
|
375 def test_overflowing_status_line(self): |
|
3c182f71d4c9
Merged revisions 87373,87381 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
66340
diff
changeset
|
376 body = "HTTP/1.1 200 Ok" + "k" * 65536 + "\r\n" |
|
3c182f71d4c9
Merged revisions 87373,87381 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
66340
diff
changeset
|
377 resp = client.HTTPResponse(FakeSocket(body)) |
|
3c182f71d4c9
Merged revisions 87373,87381 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
66340
diff
changeset
|
378 self.assertRaises((client.LineTooLong, client.BadStatusLine), resp.begin) |
|
3c182f71d4c9
Merged revisions 87373,87381 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
66340
diff
changeset
|
379 |
|
3c182f71d4c9
Merged revisions 87373,87381 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
66340
diff
changeset
|
380 def test_overflowing_header_line(self): |
|
3c182f71d4c9
Merged revisions 87373,87381 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
66340
diff
changeset
|
381 body = ( |
|
3c182f71d4c9
Merged revisions 87373,87381 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
66340
diff
changeset
|
382 'HTTP/1.1 200 OK\r\n' |
|
3c182f71d4c9
Merged revisions 87373,87381 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
66340
diff
changeset
|
383 'X-Foo: bar' + 'r' * 65536 + '\r\n\r\n' |
|
3c182f71d4c9
Merged revisions 87373,87381 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
66340
diff
changeset
|
384 ) |
|
3c182f71d4c9
Merged revisions 87373,87381 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
66340
diff
changeset
|
385 resp = client.HTTPResponse(FakeSocket(body)) |
|
3c182f71d4c9
Merged revisions 87373,87381 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
66340
diff
changeset
|
386 self.assertRaises(client.LineTooLong, resp.begin) |
|
3c182f71d4c9
Merged revisions 87373,87381 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
66340
diff
changeset
|
387 |
|
3c182f71d4c9
Merged revisions 87373,87381 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
66340
diff
changeset
|
388 def test_overflowing_chunked_line(self): |
|
3c182f71d4c9
Merged revisions 87373,87381 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
66340
diff
changeset
|
389 body = ( |
|
3c182f71d4c9
Merged revisions 87373,87381 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
66340
diff
changeset
|
390 'HTTP/1.1 200 OK\r\n' |
|
3c182f71d4c9
Merged revisions 87373,87381 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
66340
diff
changeset
|
391 'Transfer-Encoding: chunked\r\n\r\n' |
|
3c182f71d4c9
Merged revisions 87373,87381 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
66340
diff
changeset
|
392 + '0' * 65536 + 'a\r\n' |
|
3c182f71d4c9
Merged revisions 87373,87381 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
66340
diff
changeset
|
393 'hello world\r\n' |
|
3c182f71d4c9
Merged revisions 87373,87381 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
66340
diff
changeset
|
394 '0\r\n' |
|
3c182f71d4c9
Merged revisions 87373,87381 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
66340
diff
changeset
|
395 ) |
|
3c182f71d4c9
Merged revisions 87373,87381 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
66340
diff
changeset
|
396 resp = client.HTTPResponse(FakeSocket(body)) |
|
3c182f71d4c9
Merged revisions 87373,87381 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
66340
diff
changeset
|
397 resp.begin() |
|
3c182f71d4c9
Merged revisions 87373,87381 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
66340
diff
changeset
|
398 self.assertRaises(client.LineTooLong, resp.read) |
|
3c182f71d4c9
Merged revisions 87373,87381 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
66340
diff
changeset
|
399 |
|
76604
afabb0635b15
httplib test for early eof response. related to Issue13684
Senthil Kumaran <senthil@uthcode.com>
parents:
73136
diff
changeset
|
400 def test_early_eof(self): |
|
afabb0635b15
httplib test for early eof response. related to Issue13684
Senthil Kumaran <senthil@uthcode.com>
parents:
73136
diff
changeset
|
401 # Test httpresponse with no \r\n termination, |
|
afabb0635b15
httplib test for early eof response. related to Issue13684
Senthil Kumaran <senthil@uthcode.com>
parents:
73136
diff
changeset
|
402 body = "HTTP/1.1 200 Ok" |
|
afabb0635b15
httplib test for early eof response. related to Issue13684
Senthil Kumaran <senthil@uthcode.com>
parents:
73136
diff
changeset
|
403 sock = FakeSocket(body) |
|
afabb0635b15
httplib test for early eof response. related to Issue13684
Senthil Kumaran <senthil@uthcode.com>
parents:
73136
diff
changeset
|
404 resp = client.HTTPResponse(sock) |
|
afabb0635b15
httplib test for early eof response. related to Issue13684
Senthil Kumaran <senthil@uthcode.com>
parents:
73136
diff
changeset
|
405 resp.begin() |
|
afabb0635b15
httplib test for early eof response. related to Issue13684
Senthil Kumaran <senthil@uthcode.com>
parents:
73136
diff
changeset
|
406 self.assertEqual(resp.read(), b'') |
|
afabb0635b15
httplib test for early eof response. related to Issue13684
Senthil Kumaran <senthil@uthcode.com>
parents:
73136
diff
changeset
|
407 self.assertTrue(resp.isclosed()) |
|
afabb0635b15
httplib test for early eof response. related to Issue13684
Senthil Kumaran <senthil@uthcode.com>
parents:
73136
diff
changeset
|
408 |
|
36560
9a8396f460af
Move test case for HTTP response dict to httplib.
Georg Brandl <georg@python.org>
parents:
33497
diff
changeset
|
409 class OfflineTest(TestCase): |
|
9a8396f460af
Move test case for HTTP response dict to httplib.
Georg Brandl <georg@python.org>
parents:
33497
diff
changeset
|
410 def test_responses(self): |
|
66340
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
66196
diff
changeset
|
411 self.assertEqual(client.responses[client.NOT_FOUND], "Not Found") |
|
36560
9a8396f460af
Move test case for HTTP response dict to httplib.
Georg Brandl <georg@python.org>
parents:
33497
diff
changeset
|
412 |
|
58114
b0386fe650c7
Merged revisions 77263-77264 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
56293
diff
changeset
|
413 |
|
b0386fe650c7
Merged revisions 77263-77264 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
56293
diff
changeset
|
414 class SourceAddressTest(TestCase): |
|
b0386fe650c7
Merged revisions 77263-77264 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
56293
diff
changeset
|
415 def setUp(self): |
|
b0386fe650c7
Merged revisions 77263-77264 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
56293
diff
changeset
|
416 self.serv = socket.socket(socket.AF_INET, socket.SOCK_STREAM) |
|
b0386fe650c7
Merged revisions 77263-77264 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
56293
diff
changeset
|
417 self.port = support.bind_port(self.serv) |
|
b0386fe650c7
Merged revisions 77263-77264 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
56293
diff
changeset
|
418 self.source_port = support.find_unused_port() |
|
b0386fe650c7
Merged revisions 77263-77264 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
56293
diff
changeset
|
419 self.serv.listen(5) |
|
b0386fe650c7
Merged revisions 77263-77264 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
56293
diff
changeset
|
420 self.conn = None |
|
b0386fe650c7
Merged revisions 77263-77264 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
56293
diff
changeset
|
421 |
|
b0386fe650c7
Merged revisions 77263-77264 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
56293
diff
changeset
|
422 def tearDown(self): |
|
b0386fe650c7
Merged revisions 77263-77264 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
56293
diff
changeset
|
423 if self.conn: |
|
b0386fe650c7
Merged revisions 77263-77264 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
56293
diff
changeset
|
424 self.conn.close() |
|
b0386fe650c7
Merged revisions 77263-77264 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
56293
diff
changeset
|
425 self.conn = None |
|
b0386fe650c7
Merged revisions 77263-77264 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
56293
diff
changeset
|
426 self.serv.close() |
|
b0386fe650c7
Merged revisions 77263-77264 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
56293
diff
changeset
|
427 self.serv = None |
|
b0386fe650c7
Merged revisions 77263-77264 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
56293
diff
changeset
|
428 |
|
b0386fe650c7
Merged revisions 77263-77264 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
56293
diff
changeset
|
429 def testHTTPConnectionSourceAddress(self): |
|
b0386fe650c7
Merged revisions 77263-77264 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
56293
diff
changeset
|
430 self.conn = client.HTTPConnection(HOST, self.port, |
|
b0386fe650c7
Merged revisions 77263-77264 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
56293
diff
changeset
|
431 source_address=('', self.source_port)) |
|
b0386fe650c7
Merged revisions 77263-77264 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
56293
diff
changeset
|
432 self.conn.connect() |
|
b0386fe650c7
Merged revisions 77263-77264 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
56293
diff
changeset
|
433 self.assertEqual(self.conn.sock.getsockname()[1], self.source_port) |
|
b0386fe650c7
Merged revisions 77263-77264 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
56293
diff
changeset
|
434 |
|
b0386fe650c7
Merged revisions 77263-77264 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
56293
diff
changeset
|
435 @unittest.skipIf(not hasattr(client, 'HTTPSConnection'), |
|
b0386fe650c7
Merged revisions 77263-77264 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
56293
diff
changeset
|
436 'http.client.HTTPSConnection not defined') |
|
b0386fe650c7
Merged revisions 77263-77264 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
56293
diff
changeset
|
437 def testHTTPSConnectionSourceAddress(self): |
|
b0386fe650c7
Merged revisions 77263-77264 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
56293
diff
changeset
|
438 self.conn = client.HTTPSConnection(HOST, self.port, |
|
b0386fe650c7
Merged revisions 77263-77264 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
56293
diff
changeset
|
439 source_address=('', self.source_port)) |
|
b0386fe650c7
Merged revisions 77263-77264 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
56293
diff
changeset
|
440 # We don't test anything here other the constructor not barfing as |
|
b0386fe650c7
Merged revisions 77263-77264 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
56293
diff
changeset
|
441 # this code doesn't deal with setting up an active running SSL server |
|
b0386fe650c7
Merged revisions 77263-77264 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
56293
diff
changeset
|
442 # for an ssl_wrapped connect() to actually return from. |
|
b0386fe650c7
Merged revisions 77263-77264 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
56293
diff
changeset
|
443 |
|
b0386fe650c7
Merged revisions 77263-77264 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
56293
diff
changeset
|
444 |
|
41554
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40450
diff
changeset
|
445 class TimeoutTest(TestCase): |
|
46370
2e917b0c8f6e
Merged revisions 62194,62197-62198,62204-62205,62214,62219-62221,62227,62229-62231,62233-62235,62237-62239 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45504
diff
changeset
|
446 PORT = None |
|
41554
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40450
diff
changeset
|
447 |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40450
diff
changeset
|
448 def setUp(self): |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40450
diff
changeset
|
449 self.serv = socket.socket(socket.AF_INET, socket.SOCK_STREAM) |
|
47201
9c930a32cebb
#2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents:
46370
diff
changeset
|
450 TimeoutTest.PORT = support.bind_port(self.serv) |
|
41554
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40450
diff
changeset
|
451 self.serv.listen(5) |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40450
diff
changeset
|
452 |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40450
diff
changeset
|
453 def tearDown(self): |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40450
diff
changeset
|
454 self.serv.close() |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40450
diff
changeset
|
455 self.serv = None |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40450
diff
changeset
|
456 |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40450
diff
changeset
|
457 def testTimeoutAttribute(self): |
|
42590
1b91faa0de2d
Remove Python 1.5 compatibility layer from httplib.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
42436
diff
changeset
|
458 # This will prove that the timeout gets through HTTPConnection |
|
1b91faa0de2d
Remove Python 1.5 compatibility layer from httplib.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
42436
diff
changeset
|
459 # and into the socket. |
|
1b91faa0de2d
Remove Python 1.5 compatibility layer from httplib.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
42436
diff
changeset
|
460 |
|
47559
2925b568aacc
Merged revisions 63562,63570,63728,63734,63784,63788,63802,63817,63827,63839,63887,63975,63998 via svnmerge from
Georg Brandl <georg@python.org>
parents:
47318
diff
changeset
|
461 # default -- use global socket timeout |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
52375
diff
changeset
|
462 self.assertTrue(socket.getdefaulttimeout() is None) |
|
47559
2925b568aacc
Merged revisions 63562,63570,63728,63734,63784,63788,63802,63817,63827,63839,63887,63975,63998 via svnmerge from
Georg Brandl <georg@python.org>
parents:
47318
diff
changeset
|
463 socket.setdefaulttimeout(30) |
|
2925b568aacc
Merged revisions 63562,63570,63728,63734,63784,63788,63802,63817,63827,63839,63887,63975,63998 via svnmerge from
Georg Brandl <georg@python.org>
parents:
47318
diff
changeset
|
464 try: |
|
52372
4265d6c7c074
Replace references to httplib with http.client.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
52370
diff
changeset
|
465 httpConn = client.HTTPConnection(HOST, TimeoutTest.PORT) |
|
47559
2925b568aacc
Merged revisions 63562,63570,63728,63734,63784,63788,63802,63817,63827,63839,63887,63975,63998 via svnmerge from
Georg Brandl <georg@python.org>
parents:
47318
diff
changeset
|
466 httpConn.connect() |
|
2925b568aacc
Merged revisions 63562,63570,63728,63734,63784,63788,63802,63817,63827,63839,63887,63975,63998 via svnmerge from
Georg Brandl <georg@python.org>
parents:
47318
diff
changeset
|
467 finally: |
|
2925b568aacc
Merged revisions 63562,63570,63728,63734,63784,63788,63802,63817,63827,63839,63887,63975,63998 via svnmerge from
Georg Brandl <georg@python.org>
parents:
47318
diff
changeset
|
468 socket.setdefaulttimeout(None) |
|
41554
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40450
diff
changeset
|
469 self.assertEqual(httpConn.sock.gettimeout(), 30) |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40450
diff
changeset
|
470 httpConn.close() |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40450
diff
changeset
|
471 |
|
47559
2925b568aacc
Merged revisions 63562,63570,63728,63734,63784,63788,63802,63817,63827,63839,63887,63975,63998 via svnmerge from
Georg Brandl <georg@python.org>
parents:
47318
diff
changeset
|
472 # no timeout -- do not use global socket default |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
52375
diff
changeset
|
473 self.assertTrue(socket.getdefaulttimeout() is None) |
|
41554
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40450
diff
changeset
|
474 socket.setdefaulttimeout(30) |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40450
diff
changeset
|
475 try: |
|
52372
4265d6c7c074
Replace references to httplib with http.client.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
52370
diff
changeset
|
476 httpConn = client.HTTPConnection(HOST, TimeoutTest.PORT, |
|
46370
2e917b0c8f6e
Merged revisions 62194,62197-62198,62204-62205,62214,62219-62221,62227,62229-62231,62233-62235,62237-62239 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45504
diff
changeset
|
477 timeout=None) |
|
41554
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40450
diff
changeset
|
478 httpConn.connect() |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40450
diff
changeset
|
479 finally: |
|
47559
2925b568aacc
Merged revisions 63562,63570,63728,63734,63784,63788,63802,63817,63827,63839,63887,63975,63998 via svnmerge from
Georg Brandl <georg@python.org>
parents:
47318
diff
changeset
|
480 socket.setdefaulttimeout(None) |
|
2925b568aacc
Merged revisions 63562,63570,63728,63734,63784,63788,63802,63817,63827,63839,63887,63975,63998 via svnmerge from
Georg Brandl <georg@python.org>
parents:
47318
diff
changeset
|
481 self.assertEqual(httpConn.sock.gettimeout(), None) |
|
2925b568aacc
Merged revisions 63562,63570,63728,63734,63784,63788,63802,63817,63827,63839,63887,63975,63998 via svnmerge from
Georg Brandl <georg@python.org>
parents:
47318
diff
changeset
|
482 httpConn.close() |
|
2925b568aacc
Merged revisions 63562,63570,63728,63734,63784,63788,63802,63817,63827,63839,63887,63975,63998 via svnmerge from
Georg Brandl <georg@python.org>
parents:
47318
diff
changeset
|
483 |
|
2925b568aacc
Merged revisions 63562,63570,63728,63734,63784,63788,63802,63817,63827,63839,63887,63975,63998 via svnmerge from
Georg Brandl <georg@python.org>
parents:
47318
diff
changeset
|
484 # a value |
|
52372
4265d6c7c074
Replace references to httplib with http.client.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
52370
diff
changeset
|
485 httpConn = client.HTTPConnection(HOST, TimeoutTest.PORT, timeout=30) |
|
47559
2925b568aacc
Merged revisions 63562,63570,63728,63734,63784,63788,63802,63817,63827,63839,63887,63975,63998 via svnmerge from
Georg Brandl <georg@python.org>
parents:
47318
diff
changeset
|
486 httpConn.connect() |
|
41554
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40450
diff
changeset
|
487 self.assertEqual(httpConn.sock.gettimeout(), 30) |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40450
diff
changeset
|
488 httpConn.close() |
|
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40450
diff
changeset
|
489 |
|
65247
12327b9d3325
Issue #9003: http.client.HTTPSConnection, urllib.request.HTTPSHandler and
Antoine Pitrou <solipsis@pitrou.net>
parents:
65082
diff
changeset
|
490 |
|
12327b9d3325
Issue #9003: http.client.HTTPSConnection, urllib.request.HTTPSHandler and
Antoine Pitrou <solipsis@pitrou.net>
parents:
65082
diff
changeset
|
491 class HTTPSTest(TestCase): |
|
12327b9d3325
Issue #9003: http.client.HTTPSConnection, urllib.request.HTTPSHandler and
Antoine Pitrou <solipsis@pitrou.net>
parents:
65082
diff
changeset
|
492 |
|
12327b9d3325
Issue #9003: http.client.HTTPSConnection, urllib.request.HTTPSHandler and
Antoine Pitrou <solipsis@pitrou.net>
parents:
65082
diff
changeset
|
493 def setUp(self): |
|
12327b9d3325
Issue #9003: http.client.HTTPSConnection, urllib.request.HTTPSHandler and
Antoine Pitrou <solipsis@pitrou.net>
parents:
65082
diff
changeset
|
494 if not hasattr(client, 'HTTPSConnection'): |
|
12327b9d3325
Issue #9003: http.client.HTTPSConnection, urllib.request.HTTPSHandler and
Antoine Pitrou <solipsis@pitrou.net>
parents:
65082
diff
changeset
|
495 self.skipTest('ssl support required') |
|
12327b9d3325
Issue #9003: http.client.HTTPSConnection, urllib.request.HTTPSHandler and
Antoine Pitrou <solipsis@pitrou.net>
parents:
65082
diff
changeset
|
496 |
|
12327b9d3325
Issue #9003: http.client.HTTPSConnection, urllib.request.HTTPSHandler and
Antoine Pitrou <solipsis@pitrou.net>
parents:
65082
diff
changeset
|
497 def make_server(self, certfile): |
|
12327b9d3325
Issue #9003: http.client.HTTPSConnection, urllib.request.HTTPSHandler and
Antoine Pitrou <solipsis@pitrou.net>
parents:
65082
diff
changeset
|
498 from test.ssl_servers import make_https_server |
|
12327b9d3325
Issue #9003: http.client.HTTPSConnection, urllib.request.HTTPSHandler and
Antoine Pitrou <solipsis@pitrou.net>
parents:
65082
diff
changeset
|
499 return make_https_server(self, certfile) |
|
41824
24b60622b944
Merged revisions 55407-55513 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41554
diff
changeset
|
500 |
|
24b60622b944
Merged revisions 55407-55513 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41554
diff
changeset
|
501 def test_attributes(self): |
|
65247
12327b9d3325
Issue #9003: http.client.HTTPSConnection, urllib.request.HTTPSHandler and
Antoine Pitrou <solipsis@pitrou.net>
parents:
65082
diff
changeset
|
502 # simple test to check it's storing the timeout |
|
12327b9d3325
Issue #9003: http.client.HTTPSConnection, urllib.request.HTTPSHandler and
Antoine Pitrou <solipsis@pitrou.net>
parents:
65082
diff
changeset
|
503 h = client.HTTPSConnection(HOST, TimeoutTest.PORT, timeout=30) |
|
12327b9d3325
Issue #9003: http.client.HTTPSConnection, urllib.request.HTTPSHandler and
Antoine Pitrou <solipsis@pitrou.net>
parents:
65082
diff
changeset
|
504 self.assertEqual(h.timeout, 30) |
|
12327b9d3325
Issue #9003: http.client.HTTPSConnection, urllib.request.HTTPSHandler and
Antoine Pitrou <solipsis@pitrou.net>
parents:
65082
diff
changeset
|
505 |
|
12327b9d3325
Issue #9003: http.client.HTTPSConnection, urllib.request.HTTPSHandler and
Antoine Pitrou <solipsis@pitrou.net>
parents:
65082
diff
changeset
|
506 def _check_svn_python_org(self, resp): |
|
12327b9d3325
Issue #9003: http.client.HTTPSConnection, urllib.request.HTTPSHandler and
Antoine Pitrou <solipsis@pitrou.net>
parents:
65082
diff
changeset
|
507 # Just a simple check that everything went fine |
|
12327b9d3325
Issue #9003: http.client.HTTPSConnection, urllib.request.HTTPSHandler and
Antoine Pitrou <solipsis@pitrou.net>
parents:
65082
diff
changeset
|
508 server_string = resp.getheader('server') |
|
12327b9d3325
Issue #9003: http.client.HTTPSConnection, urllib.request.HTTPSHandler and
Antoine Pitrou <solipsis@pitrou.net>
parents:
65082
diff
changeset
|
509 self.assertIn('Apache', server_string) |
|
12327b9d3325
Issue #9003: http.client.HTTPSConnection, urllib.request.HTTPSHandler and
Antoine Pitrou <solipsis@pitrou.net>
parents:
65082
diff
changeset
|
510 |
|
12327b9d3325
Issue #9003: http.client.HTTPSConnection, urllib.request.HTTPSHandler and
Antoine Pitrou <solipsis@pitrou.net>
parents:
65082
diff
changeset
|
511 def test_networked(self): |
|
12327b9d3325
Issue #9003: http.client.HTTPSConnection, urllib.request.HTTPSHandler and
Antoine Pitrou <solipsis@pitrou.net>
parents:
65082
diff
changeset
|
512 # Default settings: no cert verification is done |
|
12327b9d3325
Issue #9003: http.client.HTTPSConnection, urllib.request.HTTPSHandler and
Antoine Pitrou <solipsis@pitrou.net>
parents:
65082
diff
changeset
|
513 support.requires('network') |
|
12327b9d3325
Issue #9003: http.client.HTTPSConnection, urllib.request.HTTPSHandler and
Antoine Pitrou <solipsis@pitrou.net>
parents:
65082
diff
changeset
|
514 with support.transient_internet('svn.python.org'): |
|
12327b9d3325
Issue #9003: http.client.HTTPSConnection, urllib.request.HTTPSHandler and
Antoine Pitrou <solipsis@pitrou.net>
parents:
65082
diff
changeset
|
515 h = client.HTTPSConnection('svn.python.org', 443) |
|
12327b9d3325
Issue #9003: http.client.HTTPSConnection, urllib.request.HTTPSHandler and
Antoine Pitrou <solipsis@pitrou.net>
parents:
65082
diff
changeset
|
516 h.request('GET', '/') |
|
12327b9d3325
Issue #9003: http.client.HTTPSConnection, urllib.request.HTTPSHandler and
Antoine Pitrou <solipsis@pitrou.net>
parents:
65082
diff
changeset
|
517 resp = h.getresponse() |
|
12327b9d3325
Issue #9003: http.client.HTTPSConnection, urllib.request.HTTPSHandler and
Antoine Pitrou <solipsis@pitrou.net>
parents:
65082
diff
changeset
|
518 self._check_svn_python_org(resp) |
|
12327b9d3325
Issue #9003: http.client.HTTPSConnection, urllib.request.HTTPSHandler and
Antoine Pitrou <solipsis@pitrou.net>
parents:
65082
diff
changeset
|
519 |
|
12327b9d3325
Issue #9003: http.client.HTTPSConnection, urllib.request.HTTPSHandler and
Antoine Pitrou <solipsis@pitrou.net>
parents:
65082
diff
changeset
|
520 def test_networked_good_cert(self): |
|
12327b9d3325
Issue #9003: http.client.HTTPSConnection, urllib.request.HTTPSHandler and
Antoine Pitrou <solipsis@pitrou.net>
parents:
65082
diff
changeset
|
521 # We feed a CA cert that validates the server's cert |
|
12327b9d3325
Issue #9003: http.client.HTTPSConnection, urllib.request.HTTPSHandler and
Antoine Pitrou <solipsis@pitrou.net>
parents:
65082
diff
changeset
|
522 import ssl |
|
12327b9d3325
Issue #9003: http.client.HTTPSConnection, urllib.request.HTTPSHandler and
Antoine Pitrou <solipsis@pitrou.net>
parents:
65082
diff
changeset
|
523 support.requires('network') |
|
12327b9d3325
Issue #9003: http.client.HTTPSConnection, urllib.request.HTTPSHandler and
Antoine Pitrou <solipsis@pitrou.net>
parents:
65082
diff
changeset
|
524 with support.transient_internet('svn.python.org'): |
|
12327b9d3325
Issue #9003: http.client.HTTPSConnection, urllib.request.HTTPSHandler and
Antoine Pitrou <solipsis@pitrou.net>
parents:
65082
diff
changeset
|
525 context = ssl.SSLContext(ssl.PROTOCOL_TLSv1) |
|
12327b9d3325
Issue #9003: http.client.HTTPSConnection, urllib.request.HTTPSHandler and
Antoine Pitrou <solipsis@pitrou.net>
parents:
65082
diff
changeset
|
526 context.verify_mode = ssl.CERT_REQUIRED |
|
12327b9d3325
Issue #9003: http.client.HTTPSConnection, urllib.request.HTTPSHandler and
Antoine Pitrou <solipsis@pitrou.net>
parents:
65082
diff
changeset
|
527 context.load_verify_locations(CACERT_svn_python_org) |
|
12327b9d3325
Issue #9003: http.client.HTTPSConnection, urllib.request.HTTPSHandler and
Antoine Pitrou <solipsis@pitrou.net>
parents:
65082
diff
changeset
|
528 h = client.HTTPSConnection('svn.python.org', 443, context=context) |
|
12327b9d3325
Issue #9003: http.client.HTTPSConnection, urllib.request.HTTPSHandler and
Antoine Pitrou <solipsis@pitrou.net>
parents:
65082
diff
changeset
|
529 h.request('GET', '/') |
|
12327b9d3325
Issue #9003: http.client.HTTPSConnection, urllib.request.HTTPSHandler and
Antoine Pitrou <solipsis@pitrou.net>
parents:
65082
diff
changeset
|
530 resp = h.getresponse() |
|
12327b9d3325
Issue #9003: http.client.HTTPSConnection, urllib.request.HTTPSHandler and
Antoine Pitrou <solipsis@pitrou.net>
parents:
65082
diff
changeset
|
531 self._check_svn_python_org(resp) |
|
12327b9d3325
Issue #9003: http.client.HTTPSConnection, urllib.request.HTTPSHandler and
Antoine Pitrou <solipsis@pitrou.net>
parents:
65082
diff
changeset
|
532 |
|
12327b9d3325
Issue #9003: http.client.HTTPSConnection, urllib.request.HTTPSHandler and
Antoine Pitrou <solipsis@pitrou.net>
parents:
65082
diff
changeset
|
533 def test_networked_bad_cert(self): |
|
12327b9d3325
Issue #9003: http.client.HTTPSConnection, urllib.request.HTTPSHandler and
Antoine Pitrou <solipsis@pitrou.net>
parents:
65082
diff
changeset
|
534 # We feed a "CA" cert that is unrelated to the server's cert |
|
12327b9d3325
Issue #9003: http.client.HTTPSConnection, urllib.request.HTTPSHandler and
Antoine Pitrou <solipsis@pitrou.net>
parents:
65082
diff
changeset
|
535 import ssl |
|
12327b9d3325
Issue #9003: http.client.HTTPSConnection, urllib.request.HTTPSHandler and
Antoine Pitrou <solipsis@pitrou.net>
parents:
65082
diff
changeset
|
536 support.requires('network') |
|
12327b9d3325
Issue #9003: http.client.HTTPSConnection, urllib.request.HTTPSHandler and
Antoine Pitrou <solipsis@pitrou.net>
parents:
65082
diff
changeset
|
537 with support.transient_internet('svn.python.org'): |
|
12327b9d3325
Issue #9003: http.client.HTTPSConnection, urllib.request.HTTPSHandler and
Antoine Pitrou <solipsis@pitrou.net>
parents:
65082
diff
changeset
|
538 context = ssl.SSLContext(ssl.PROTOCOL_TLSv1) |
|
12327b9d3325
Issue #9003: http.client.HTTPSConnection, urllib.request.HTTPSHandler and
Antoine Pitrou <solipsis@pitrou.net>
parents:
65082
diff
changeset
|
539 context.verify_mode = ssl.CERT_REQUIRED |
|
12327b9d3325
Issue #9003: http.client.HTTPSConnection, urllib.request.HTTPSHandler and
Antoine Pitrou <solipsis@pitrou.net>
parents:
65082
diff
changeset
|
540 context.load_verify_locations(CERT_localhost) |
|
12327b9d3325
Issue #9003: http.client.HTTPSConnection, urllib.request.HTTPSHandler and
Antoine Pitrou <solipsis@pitrou.net>
parents:
65082
diff
changeset
|
541 h = client.HTTPSConnection('svn.python.org', 443, context=context) |
|
12327b9d3325
Issue #9003: http.client.HTTPSConnection, urllib.request.HTTPSHandler and
Antoine Pitrou <solipsis@pitrou.net>
parents:
65082
diff
changeset
|
542 with self.assertRaises(ssl.SSLError): |
|
12327b9d3325
Issue #9003: http.client.HTTPSConnection, urllib.request.HTTPSHandler and
Antoine Pitrou <solipsis@pitrou.net>
parents:
65082
diff
changeset
|
543 h.request('GET', '/') |
|
12327b9d3325
Issue #9003: http.client.HTTPSConnection, urllib.request.HTTPSHandler and
Antoine Pitrou <solipsis@pitrou.net>
parents:
65082
diff
changeset
|
544 |
|
12327b9d3325
Issue #9003: http.client.HTTPSConnection, urllib.request.HTTPSHandler and
Antoine Pitrou <solipsis@pitrou.net>
parents:
65082
diff
changeset
|
545 def test_local_good_hostname(self): |
|
12327b9d3325
Issue #9003: http.client.HTTPSConnection, urllib.request.HTTPSHandler and
Antoine Pitrou <solipsis@pitrou.net>
parents:
65082
diff
changeset
|
546 # The (valid) cert validates the HTTP hostname |
|
12327b9d3325
Issue #9003: http.client.HTTPSConnection, urllib.request.HTTPSHandler and
Antoine Pitrou <solipsis@pitrou.net>
parents:
65082
diff
changeset
|
547 import ssl |
|
12327b9d3325
Issue #9003: http.client.HTTPSConnection, urllib.request.HTTPSHandler and
Antoine Pitrou <solipsis@pitrou.net>
parents:
65082
diff
changeset
|
548 from test.ssl_servers import make_https_server |
|
12327b9d3325
Issue #9003: http.client.HTTPSConnection, urllib.request.HTTPSHandler and
Antoine Pitrou <solipsis@pitrou.net>
parents:
65082
diff
changeset
|
549 server = make_https_server(self, CERT_localhost) |
|
12327b9d3325
Issue #9003: http.client.HTTPSConnection, urllib.request.HTTPSHandler and
Antoine Pitrou <solipsis@pitrou.net>
parents:
65082
diff
changeset
|
550 context = ssl.SSLContext(ssl.PROTOCOL_TLSv1) |
|
12327b9d3325
Issue #9003: http.client.HTTPSConnection, urllib.request.HTTPSHandler and
Antoine Pitrou <solipsis@pitrou.net>
parents:
65082
diff
changeset
|
551 context.verify_mode = ssl.CERT_REQUIRED |
|
12327b9d3325
Issue #9003: http.client.HTTPSConnection, urllib.request.HTTPSHandler and
Antoine Pitrou <solipsis@pitrou.net>
parents:
65082
diff
changeset
|
552 context.load_verify_locations(CERT_localhost) |
|
12327b9d3325
Issue #9003: http.client.HTTPSConnection, urllib.request.HTTPSHandler and
Antoine Pitrou <solipsis@pitrou.net>
parents:
65082
diff
changeset
|
553 h = client.HTTPSConnection('localhost', server.port, context=context) |
|
12327b9d3325
Issue #9003: http.client.HTTPSConnection, urllib.request.HTTPSHandler and
Antoine Pitrou <solipsis@pitrou.net>
parents:
65082
diff
changeset
|
554 h.request('GET', '/nonexistent') |
|
12327b9d3325
Issue #9003: http.client.HTTPSConnection, urllib.request.HTTPSHandler and
Antoine Pitrou <solipsis@pitrou.net>
parents:
65082
diff
changeset
|
555 resp = h.getresponse() |
|
12327b9d3325
Issue #9003: http.client.HTTPSConnection, urllib.request.HTTPSHandler and
Antoine Pitrou <solipsis@pitrou.net>
parents:
65082
diff
changeset
|
556 self.assertEqual(resp.status, 404) |
|
12327b9d3325
Issue #9003: http.client.HTTPSConnection, urllib.request.HTTPSHandler and
Antoine Pitrou <solipsis@pitrou.net>
parents:
65082
diff
changeset
|
557 |
|
12327b9d3325
Issue #9003: http.client.HTTPSConnection, urllib.request.HTTPSHandler and
Antoine Pitrou <solipsis@pitrou.net>
parents:
65082
diff
changeset
|
558 def test_local_bad_hostname(self): |
|
12327b9d3325
Issue #9003: http.client.HTTPSConnection, urllib.request.HTTPSHandler and
Antoine Pitrou <solipsis@pitrou.net>
parents:
65082
diff
changeset
|
559 # The (valid) cert doesn't validate the HTTP hostname |
|
12327b9d3325
Issue #9003: http.client.HTTPSConnection, urllib.request.HTTPSHandler and
Antoine Pitrou <solipsis@pitrou.net>
parents:
65082
diff
changeset
|
560 import ssl |
|
12327b9d3325
Issue #9003: http.client.HTTPSConnection, urllib.request.HTTPSHandler and
Antoine Pitrou <solipsis@pitrou.net>
parents:
65082
diff
changeset
|
561 from test.ssl_servers import make_https_server |
|
12327b9d3325
Issue #9003: http.client.HTTPSConnection, urllib.request.HTTPSHandler and
Antoine Pitrou <solipsis@pitrou.net>
parents:
65082
diff
changeset
|
562 server = make_https_server(self, CERT_fakehostname) |
|
12327b9d3325
Issue #9003: http.client.HTTPSConnection, urllib.request.HTTPSHandler and
Antoine Pitrou <solipsis@pitrou.net>
parents:
65082
diff
changeset
|
563 context = ssl.SSLContext(ssl.PROTOCOL_TLSv1) |
|
12327b9d3325
Issue #9003: http.client.HTTPSConnection, urllib.request.HTTPSHandler and
Antoine Pitrou <solipsis@pitrou.net>
parents:
65082
diff
changeset
|
564 context.verify_mode = ssl.CERT_REQUIRED |
|
12327b9d3325
Issue #9003: http.client.HTTPSConnection, urllib.request.HTTPSHandler and
Antoine Pitrou <solipsis@pitrou.net>
parents:
65082
diff
changeset
|
565 context.load_verify_locations(CERT_fakehostname) |
|
12327b9d3325
Issue #9003: http.client.HTTPSConnection, urllib.request.HTTPSHandler and
Antoine Pitrou <solipsis@pitrou.net>
parents:
65082
diff
changeset
|
566 h = client.HTTPSConnection('localhost', server.port, context=context) |
|
12327b9d3325
Issue #9003: http.client.HTTPSConnection, urllib.request.HTTPSHandler and
Antoine Pitrou <solipsis@pitrou.net>
parents:
65082
diff
changeset
|
567 with self.assertRaises(ssl.CertificateError): |
|
12327b9d3325
Issue #9003: http.client.HTTPSConnection, urllib.request.HTTPSHandler and
Antoine Pitrou <solipsis@pitrou.net>
parents:
65082
diff
changeset
|
568 h.request('GET', '/') |
|
12327b9d3325
Issue #9003: http.client.HTTPSConnection, urllib.request.HTTPSHandler and
Antoine Pitrou <solipsis@pitrou.net>
parents:
65082
diff
changeset
|
569 # Same with explicit check_hostname=True |
|
12327b9d3325
Issue #9003: http.client.HTTPSConnection, urllib.request.HTTPSHandler and
Antoine Pitrou <solipsis@pitrou.net>
parents:
65082
diff
changeset
|
570 h = client.HTTPSConnection('localhost', server.port, context=context, |
|
12327b9d3325
Issue #9003: http.client.HTTPSConnection, urllib.request.HTTPSHandler and
Antoine Pitrou <solipsis@pitrou.net>
parents:
65082
diff
changeset
|
571 check_hostname=True) |
|
12327b9d3325
Issue #9003: http.client.HTTPSConnection, urllib.request.HTTPSHandler and
Antoine Pitrou <solipsis@pitrou.net>
parents:
65082
diff
changeset
|
572 with self.assertRaises(ssl.CertificateError): |
|
12327b9d3325
Issue #9003: http.client.HTTPSConnection, urllib.request.HTTPSHandler and
Antoine Pitrou <solipsis@pitrou.net>
parents:
65082
diff
changeset
|
573 h.request('GET', '/') |
|
12327b9d3325
Issue #9003: http.client.HTTPSConnection, urllib.request.HTTPSHandler and
Antoine Pitrou <solipsis@pitrou.net>
parents:
65082
diff
changeset
|
574 # With check_hostname=False, the mismatching is ignored |
|
12327b9d3325
Issue #9003: http.client.HTTPSConnection, urllib.request.HTTPSHandler and
Antoine Pitrou <solipsis@pitrou.net>
parents:
65082
diff
changeset
|
575 h = client.HTTPSConnection('localhost', server.port, context=context, |
|
12327b9d3325
Issue #9003: http.client.HTTPSConnection, urllib.request.HTTPSHandler and
Antoine Pitrou <solipsis@pitrou.net>
parents:
65082
diff
changeset
|
576 check_hostname=False) |
|
12327b9d3325
Issue #9003: http.client.HTTPSConnection, urllib.request.HTTPSHandler and
Antoine Pitrou <solipsis@pitrou.net>
parents:
65082
diff
changeset
|
577 h.request('GET', '/nonexistent') |
|
12327b9d3325
Issue #9003: http.client.HTTPSConnection, urllib.request.HTTPSHandler and
Antoine Pitrou <solipsis@pitrou.net>
parents:
65082
diff
changeset
|
578 resp = h.getresponse() |
|
12327b9d3325
Issue #9003: http.client.HTTPSConnection, urllib.request.HTTPSHandler and
Antoine Pitrou <solipsis@pitrou.net>
parents:
65082
diff
changeset
|
579 self.assertEqual(resp.status, 404) |
|
12327b9d3325
Issue #9003: http.client.HTTPSConnection, urllib.request.HTTPSHandler and
Antoine Pitrou <solipsis@pitrou.net>
parents:
65082
diff
changeset
|
580 |
|
73136
a3939c2f6727
Issue #10860: Skip the new test if HTTPS is not available
Petri Lehtinen <petri@digip.org>
parents:
72981
diff
changeset
|
581 @unittest.skipIf(not hasattr(client, 'HTTPSConnection'), |
|
a3939c2f6727
Issue #10860: Skip the new test if HTTPS is not available
Petri Lehtinen <petri@digip.org>
parents:
72981
diff
changeset
|
582 'http.client.HTTPSConnection not available') |
|
72981
6ac59218c049
Fixes #10860: Handle empty port after port delimiter in httplib
Łukasz Langa <lukasz@langa.pl>
parents:
72426
diff
changeset
|
583 def test_host_port(self): |
|
6ac59218c049
Fixes #10860: Handle empty port after port delimiter in httplib
Łukasz Langa <lukasz@langa.pl>
parents:
72426
diff
changeset
|
584 # Check invalid host_port |
|
6ac59218c049
Fixes #10860: Handle empty port after port delimiter in httplib
Łukasz Langa <lukasz@langa.pl>
parents:
72426
diff
changeset
|
585 |
|
6ac59218c049
Fixes #10860: Handle empty port after port delimiter in httplib
Łukasz Langa <lukasz@langa.pl>
parents:
72426
diff
changeset
|
586 for hp in ("www.python.org:abc", "user:password@www.python.org"): |
|
6ac59218c049
Fixes #10860: Handle empty port after port delimiter in httplib
Łukasz Langa <lukasz@langa.pl>
parents:
72426
diff
changeset
|
587 self.assertRaises(client.InvalidURL, client.HTTPSConnection, hp) |
|
6ac59218c049
Fixes #10860: Handle empty port after port delimiter in httplib
Łukasz Langa <lukasz@langa.pl>
parents:
72426
diff
changeset
|
588 |
|
6ac59218c049
Fixes #10860: Handle empty port after port delimiter in httplib
Łukasz Langa <lukasz@langa.pl>
parents:
72426
diff
changeset
|
589 for hp, h, p in (("[fe80::207:e9ff:fe9b]:8000", |
|
6ac59218c049
Fixes #10860: Handle empty port after port delimiter in httplib
Łukasz Langa <lukasz@langa.pl>
parents:
72426
diff
changeset
|
590 "fe80::207:e9ff:fe9b", 8000), |
|
6ac59218c049
Fixes #10860: Handle empty port after port delimiter in httplib
Łukasz Langa <lukasz@langa.pl>
parents:
72426
diff
changeset
|
591 ("www.python.org:443", "www.python.org", 443), |
|
6ac59218c049
Fixes #10860: Handle empty port after port delimiter in httplib
Łukasz Langa <lukasz@langa.pl>
parents:
72426
diff
changeset
|
592 ("www.python.org:", "www.python.org", 443), |
|
6ac59218c049
Fixes #10860: Handle empty port after port delimiter in httplib
Łukasz Langa <lukasz@langa.pl>
parents:
72426
diff
changeset
|
593 ("www.python.org", "www.python.org", 443), |
|
6ac59218c049
Fixes #10860: Handle empty port after port delimiter in httplib
Łukasz Langa <lukasz@langa.pl>
parents:
72426
diff
changeset
|
594 ("[fe80::207:e9ff:fe9b]", "fe80::207:e9ff:fe9b", 443), |
|
6ac59218c049
Fixes #10860: Handle empty port after port delimiter in httplib
Łukasz Langa <lukasz@langa.pl>
parents:
72426
diff
changeset
|
595 ("[fe80::207:e9ff:fe9b]:", "fe80::207:e9ff:fe9b", |
|
6ac59218c049
Fixes #10860: Handle empty port after port delimiter in httplib
Łukasz Langa <lukasz@langa.pl>
parents:
72426
diff
changeset
|
596 443)): |
|
6ac59218c049
Fixes #10860: Handle empty port after port delimiter in httplib
Łukasz Langa <lukasz@langa.pl>
parents:
72426
diff
changeset
|
597 c = client.HTTPSConnection(hp) |
|
6ac59218c049
Fixes #10860: Handle empty port after port delimiter in httplib
Łukasz Langa <lukasz@langa.pl>
parents:
72426
diff
changeset
|
598 self.assertEqual(h, c.host) |
|
6ac59218c049
Fixes #10860: Handle empty port after port delimiter in httplib
Łukasz Langa <lukasz@langa.pl>
parents:
72426
diff
changeset
|
599 self.assertEqual(p, c.port) |
|
6ac59218c049
Fixes #10860: Handle empty port after port delimiter in httplib
Łukasz Langa <lukasz@langa.pl>
parents:
72426
diff
changeset
|
600 |
|
41824
24b60622b944
Merged revisions 55407-55513 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41554
diff
changeset
|
601 |
|
52370
8b691690babd
Fix some string encoding issues with entity bodies in HTTP requests.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
51954
diff
changeset
|
602 class RequestBodyTest(TestCase): |
|
8b691690babd
Fix some string encoding issues with entity bodies in HTTP requests.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
51954
diff
changeset
|
603 """Test cases where a request includes a message body.""" |
|
8b691690babd
Fix some string encoding issues with entity bodies in HTTP requests.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
51954
diff
changeset
|
604 |
|
8b691690babd
Fix some string encoding issues with entity bodies in HTTP requests.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
51954
diff
changeset
|
605 def setUp(self): |
|
52372
4265d6c7c074
Replace references to httplib with http.client.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
52370
diff
changeset
|
606 self.conn = client.HTTPConnection('example.com') |
|
52375
a726f7928561
Remove special logic that closes HTTPConnection socket on EPIPE.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
52372
diff
changeset
|
607 self.conn.sock = self.sock = FakeSocket("") |
|
52370
8b691690babd
Fix some string encoding issues with entity bodies in HTTP requests.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
51954
diff
changeset
|
608 self.conn.sock = self.sock |
|
8b691690babd
Fix some string encoding issues with entity bodies in HTTP requests.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
51954
diff
changeset
|
609 |
|
8b691690babd
Fix some string encoding issues with entity bodies in HTTP requests.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
51954
diff
changeset
|
610 def get_headers_and_fp(self): |
|
8b691690babd
Fix some string encoding issues with entity bodies in HTTP requests.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
51954
diff
changeset
|
611 f = io.BytesIO(self.sock.data) |
|
8b691690babd
Fix some string encoding issues with entity bodies in HTTP requests.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
51954
diff
changeset
|
612 f.readline() # read the request line |
|
52372
4265d6c7c074
Replace references to httplib with http.client.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
52370
diff
changeset
|
613 message = client.parse_headers(f) |
|
52370
8b691690babd
Fix some string encoding issues with entity bodies in HTTP requests.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
51954
diff
changeset
|
614 return message, f |
|
8b691690babd
Fix some string encoding issues with entity bodies in HTTP requests.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
51954
diff
changeset
|
615 |
|
8b691690babd
Fix some string encoding issues with entity bodies in HTTP requests.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
51954
diff
changeset
|
616 def test_manual_content_length(self): |
|
8b691690babd
Fix some string encoding issues with entity bodies in HTTP requests.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
51954
diff
changeset
|
617 # Set an incorrect content-length so that we can verify that |
|
8b691690babd
Fix some string encoding issues with entity bodies in HTTP requests.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
51954
diff
changeset
|
618 # it will not be over-ridden by the library. |
|
8b691690babd
Fix some string encoding issues with entity bodies in HTTP requests.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
51954
diff
changeset
|
619 self.conn.request("PUT", "/url", "body", |
|
8b691690babd
Fix some string encoding issues with entity bodies in HTTP requests.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
51954
diff
changeset
|
620 {"Content-Length": "42"}) |
|
8b691690babd
Fix some string encoding issues with entity bodies in HTTP requests.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
51954
diff
changeset
|
621 message, f = self.get_headers_and_fp() |
|
8b691690babd
Fix some string encoding issues with entity bodies in HTTP requests.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
51954
diff
changeset
|
622 self.assertEqual("42", message.get("content-length")) |
|
8b691690babd
Fix some string encoding issues with entity bodies in HTTP requests.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
51954
diff
changeset
|
623 self.assertEqual(4, len(f.read())) |
|
8b691690babd
Fix some string encoding issues with entity bodies in HTTP requests.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
51954
diff
changeset
|
624 |
|
8b691690babd
Fix some string encoding issues with entity bodies in HTTP requests.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
51954
diff
changeset
|
625 def test_ascii_body(self): |
|
8b691690babd
Fix some string encoding issues with entity bodies in HTTP requests.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
51954
diff
changeset
|
626 self.conn.request("PUT", "/url", "body") |
|
8b691690babd
Fix some string encoding issues with entity bodies in HTTP requests.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
51954
diff
changeset
|
627 message, f = self.get_headers_and_fp() |
|
8b691690babd
Fix some string encoding issues with entity bodies in HTTP requests.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
51954
diff
changeset
|
628 self.assertEqual("text/plain", message.get_content_type()) |
|
67397
8c448a4277a0
Issue 10825: Minor updates to the test suite.
Raymond Hettinger <python@rcn.com>
parents:
67335
diff
changeset
|
629 self.assertIsNone(message.get_charset()) |
|
52370
8b691690babd
Fix some string encoding issues with entity bodies in HTTP requests.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
51954
diff
changeset
|
630 self.assertEqual("4", message.get("content-length")) |
|
8b691690babd
Fix some string encoding issues with entity bodies in HTTP requests.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
51954
diff
changeset
|
631 self.assertEqual(b'body', f.read()) |
|
8b691690babd
Fix some string encoding issues with entity bodies in HTTP requests.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
51954
diff
changeset
|
632 |
|
8b691690babd
Fix some string encoding issues with entity bodies in HTTP requests.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
51954
diff
changeset
|
633 def test_latin1_body(self): |
|
8b691690babd
Fix some string encoding issues with entity bodies in HTTP requests.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
51954
diff
changeset
|
634 self.conn.request("PUT", "/url", "body\xc1") |
|
8b691690babd
Fix some string encoding issues with entity bodies in HTTP requests.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
51954
diff
changeset
|
635 message, f = self.get_headers_and_fp() |
|
8b691690babd
Fix some string encoding issues with entity bodies in HTTP requests.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
51954
diff
changeset
|
636 self.assertEqual("text/plain", message.get_content_type()) |
|
67397
8c448a4277a0
Issue 10825: Minor updates to the test suite.
Raymond Hettinger <python@rcn.com>
parents:
67335
diff
changeset
|
637 self.assertIsNone(message.get_charset()) |
|
52370
8b691690babd
Fix some string encoding issues with entity bodies in HTTP requests.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
51954
diff
changeset
|
638 self.assertEqual("5", message.get("content-length")) |
|
8b691690babd
Fix some string encoding issues with entity bodies in HTTP requests.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
51954
diff
changeset
|
639 self.assertEqual(b'body\xc1', f.read()) |
|
8b691690babd
Fix some string encoding issues with entity bodies in HTTP requests.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
51954
diff
changeset
|
640 |
|
8b691690babd
Fix some string encoding issues with entity bodies in HTTP requests.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
51954
diff
changeset
|
641 def test_bytes_body(self): |
|
8b691690babd
Fix some string encoding issues with entity bodies in HTTP requests.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
51954
diff
changeset
|
642 self.conn.request("PUT", "/url", b"body\xc1") |
|
8b691690babd
Fix some string encoding issues with entity bodies in HTTP requests.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
51954
diff
changeset
|
643 message, f = self.get_headers_and_fp() |
|
8b691690babd
Fix some string encoding issues with entity bodies in HTTP requests.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
51954
diff
changeset
|
644 self.assertEqual("text/plain", message.get_content_type()) |
|
67397
8c448a4277a0
Issue 10825: Minor updates to the test suite.
Raymond Hettinger <python@rcn.com>
parents:
67335
diff
changeset
|
645 self.assertIsNone(message.get_charset()) |
|
52370
8b691690babd
Fix some string encoding issues with entity bodies in HTTP requests.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
51954
diff
changeset
|
646 self.assertEqual("5", message.get("content-length")) |
|
8b691690babd
Fix some string encoding issues with entity bodies in HTTP requests.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
51954
diff
changeset
|
647 self.assertEqual(b'body\xc1', f.read()) |
|
8b691690babd
Fix some string encoding issues with entity bodies in HTTP requests.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
51954
diff
changeset
|
648 |
|
8b691690babd
Fix some string encoding issues with entity bodies in HTTP requests.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
51954
diff
changeset
|
649 def test_file_body(self): |
|
72426
950515bff239
test_httplib removes temporary files
Victor Stinner <victor.stinner@haypocalc.com>
parents:
71688
diff
changeset
|
650 self.addCleanup(support.unlink, support.TESTFN) |
|
65738
5c013ec27327
Move test_httplib over to file context managers.
Brett Cannon <bcannon@gmail.com>
parents:
65247
diff
changeset
|
651 with open(support.TESTFN, "w") as f: |
|
5c013ec27327
Move test_httplib over to file context managers.
Brett Cannon <bcannon@gmail.com>
parents:
65247
diff
changeset
|
652 f.write("body") |
|
5c013ec27327
Move test_httplib over to file context managers.
Brett Cannon <bcannon@gmail.com>
parents:
65247
diff
changeset
|
653 with open(support.TESTFN) as f: |
|
5c013ec27327
Move test_httplib over to file context managers.
Brett Cannon <bcannon@gmail.com>
parents:
65247
diff
changeset
|
654 self.conn.request("PUT", "/url", f) |
|
5c013ec27327
Move test_httplib over to file context managers.
Brett Cannon <bcannon@gmail.com>
parents:
65247
diff
changeset
|
655 message, f = self.get_headers_and_fp() |
|
5c013ec27327
Move test_httplib over to file context managers.
Brett Cannon <bcannon@gmail.com>
parents:
65247
diff
changeset
|
656 self.assertEqual("text/plain", message.get_content_type()) |
|
67397
8c448a4277a0
Issue 10825: Minor updates to the test suite.
Raymond Hettinger <python@rcn.com>
parents:
67335
diff
changeset
|
657 self.assertIsNone(message.get_charset()) |
|
65738
5c013ec27327
Move test_httplib over to file context managers.
Brett Cannon <bcannon@gmail.com>
parents:
65247
diff
changeset
|
658 self.assertEqual("4", message.get("content-length")) |
|
5c013ec27327
Move test_httplib over to file context managers.
Brett Cannon <bcannon@gmail.com>
parents:
65247
diff
changeset
|
659 self.assertEqual(b'body', f.read()) |
|
52370
8b691690babd
Fix some string encoding issues with entity bodies in HTTP requests.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
51954
diff
changeset
|
660 |
|
8b691690babd
Fix some string encoding issues with entity bodies in HTTP requests.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
51954
diff
changeset
|
661 def test_binary_file_body(self): |
|
72426
950515bff239
test_httplib removes temporary files
Victor Stinner <victor.stinner@haypocalc.com>
parents:
71688
diff
changeset
|
662 self.addCleanup(support.unlink, support.TESTFN) |
|
65738
5c013ec27327
Move test_httplib over to file context managers.
Brett Cannon <bcannon@gmail.com>
parents:
65247
diff
changeset
|
663 with open(support.TESTFN, "wb") as f: |
|
5c013ec27327
Move test_httplib over to file context managers.
Brett Cannon <bcannon@gmail.com>
parents:
65247
diff
changeset
|
664 f.write(b"body\xc1") |
|
5c013ec27327
Move test_httplib over to file context managers.
Brett Cannon <bcannon@gmail.com>
parents:
65247
diff
changeset
|
665 with open(support.TESTFN, "rb") as f: |
|
5c013ec27327
Move test_httplib over to file context managers.
Brett Cannon <bcannon@gmail.com>
parents:
65247
diff
changeset
|
666 self.conn.request("PUT", "/url", f) |
|
5c013ec27327
Move test_httplib over to file context managers.
Brett Cannon <bcannon@gmail.com>
parents:
65247
diff
changeset
|
667 message, f = self.get_headers_and_fp() |
|
5c013ec27327
Move test_httplib over to file context managers.
Brett Cannon <bcannon@gmail.com>
parents:
65247
diff
changeset
|
668 self.assertEqual("text/plain", message.get_content_type()) |
|
67397
8c448a4277a0
Issue 10825: Minor updates to the test suite.
Raymond Hettinger <python@rcn.com>
parents:
67335
diff
changeset
|
669 self.assertIsNone(message.get_charset()) |
|
65738
5c013ec27327
Move test_httplib over to file context managers.
Brett Cannon <bcannon@gmail.com>
parents:
65247
diff
changeset
|
670 self.assertEqual("5", message.get("content-length")) |
|
5c013ec27327
Move test_httplib over to file context managers.
Brett Cannon <bcannon@gmail.com>
parents:
65247
diff
changeset
|
671 self.assertEqual(b'body\xc1', f.read()) |
|
52370
8b691690babd
Fix some string encoding issues with entity bodies in HTTP requests.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
51954
diff
changeset
|
672 |
|
63538
904ef4bbff5e
Merged revisions 83521 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents:
62073
diff
changeset
|
673 |
|
904ef4bbff5e
Merged revisions 83521 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents:
62073
diff
changeset
|
674 class HTTPResponseTest(TestCase): |
|
904ef4bbff5e
Merged revisions 83521 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents:
62073
diff
changeset
|
675 |
|
904ef4bbff5e
Merged revisions 83521 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents:
62073
diff
changeset
|
676 def setUp(self): |
|
904ef4bbff5e
Merged revisions 83521 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents:
62073
diff
changeset
|
677 body = "HTTP/1.1 200 Ok\r\nMy-Header: first-value\r\nMy-Header: \ |
|
904ef4bbff5e
Merged revisions 83521 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents:
62073
diff
changeset
|
678 second-value\r\n\r\nText" |
|
904ef4bbff5e
Merged revisions 83521 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents:
62073
diff
changeset
|
679 sock = FakeSocket(body) |
|
904ef4bbff5e
Merged revisions 83521 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents:
62073
diff
changeset
|
680 self.resp = client.HTTPResponse(sock) |
|
904ef4bbff5e
Merged revisions 83521 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents:
62073
diff
changeset
|
681 self.resp.begin() |
|
904ef4bbff5e
Merged revisions 83521 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents:
62073
diff
changeset
|
682 |
|
904ef4bbff5e
Merged revisions 83521 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents:
62073
diff
changeset
|
683 def test_getting_header(self): |
|
904ef4bbff5e
Merged revisions 83521 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents:
62073
diff
changeset
|
684 header = self.resp.getheader('My-Header') |
|
904ef4bbff5e
Merged revisions 83521 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents:
62073
diff
changeset
|
685 self.assertEqual(header, 'first-value, second-value') |
|
904ef4bbff5e
Merged revisions 83521 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents:
62073
diff
changeset
|
686 |
|
904ef4bbff5e
Merged revisions 83521 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents:
62073
diff
changeset
|
687 header = self.resp.getheader('My-Header', 'some default') |
|
904ef4bbff5e
Merged revisions 83521 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents:
62073
diff
changeset
|
688 self.assertEqual(header, 'first-value, second-value') |
|
904ef4bbff5e
Merged revisions 83521 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents:
62073
diff
changeset
|
689 |
|
904ef4bbff5e
Merged revisions 83521 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents:
62073
diff
changeset
|
690 def test_getting_nonexistent_header_with_string_default(self): |
|
904ef4bbff5e
Merged revisions 83521 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents:
62073
diff
changeset
|
691 header = self.resp.getheader('No-Such-Header', 'default-value') |
|
904ef4bbff5e
Merged revisions 83521 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents:
62073
diff
changeset
|
692 self.assertEqual(header, 'default-value') |
|
904ef4bbff5e
Merged revisions 83521 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents:
62073
diff
changeset
|
693 |
|
904ef4bbff5e
Merged revisions 83521 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents:
62073
diff
changeset
|
694 def test_getting_nonexistent_header_with_iterable_default(self): |
|
904ef4bbff5e
Merged revisions 83521 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents:
62073
diff
changeset
|
695 header = self.resp.getheader('No-Such-Header', ['default', 'values']) |
|
904ef4bbff5e
Merged revisions 83521 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents:
62073
diff
changeset
|
696 self.assertEqual(header, 'default, values') |
|
904ef4bbff5e
Merged revisions 83521 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents:
62073
diff
changeset
|
697 |
|
904ef4bbff5e
Merged revisions 83521 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents:
62073
diff
changeset
|
698 header = self.resp.getheader('No-Such-Header', ('default', 'values')) |
|
904ef4bbff5e
Merged revisions 83521 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents:
62073
diff
changeset
|
699 self.assertEqual(header, 'default, values') |
|
904ef4bbff5e
Merged revisions 83521 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents:
62073
diff
changeset
|
700 |
|
904ef4bbff5e
Merged revisions 83521 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents:
62073
diff
changeset
|
701 def test_getting_nonexistent_header_without_default(self): |
|
904ef4bbff5e
Merged revisions 83521 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents:
62073
diff
changeset
|
702 header = self.resp.getheader('No-Such-Header') |
|
904ef4bbff5e
Merged revisions 83521 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents:
62073
diff
changeset
|
703 self.assertEqual(header, None) |
|
904ef4bbff5e
Merged revisions 83521 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents:
62073
diff
changeset
|
704 |
|
904ef4bbff5e
Merged revisions 83521 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents:
62073
diff
changeset
|
705 def test_getting_header_defaultint(self): |
|
904ef4bbff5e
Merged revisions 83521 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents:
62073
diff
changeset
|
706 header = self.resp.getheader('No-Such-Header',default=42) |
|
904ef4bbff5e
Merged revisions 83521 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents:
62073
diff
changeset
|
707 self.assertEqual(header, 42) |
|
904ef4bbff5e
Merged revisions 83521 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents:
62073
diff
changeset
|
708 |
|
33001
4fd59651fe3f
SF bug 874842 and patch 997626: httplib bugs
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
29778
diff
changeset
|
709 def test_main(verbose=None): |
|
47201
9c930a32cebb
#2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents:
46370
diff
changeset
|
710 support.run_unittest(HeaderTests, OfflineTest, BasicTest, TimeoutTest, |
|
65247
12327b9d3325
Issue #9003: http.client.HTTPSConnection, urllib.request.HTTPSHandler and
Antoine Pitrou <solipsis@pitrou.net>
parents:
65082
diff
changeset
|
711 HTTPSTest, RequestBodyTest, SourceAddressTest, |
|
63537
39e14df765e4
Fix Issue8572 - httplib getheader() throws error instead of default
Senthil Kumaran <orsenthil@gmail.com>
parents:
62072
diff
changeset
|
712 HTTPResponseTest) |
|
33001
4fd59651fe3f
SF bug 874842 and patch 997626: httplib bugs
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
29778
diff
changeset
|
713 |
|
40450
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
36560
diff
changeset
|
714 if __name__ == '__main__': |
|
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
36560
diff
changeset
|
715 test_main() |
