blob: f70abec7ea5400ea552689238d7b2dfeb9451ebd [file] [log] [blame]
Tim Petersd48004f2001-09-25 19:29:35 +00001from test_support import verify,verbose
Jeremy Hylton79fa2b62001-04-13 14:57:44 +00002import httplib
3import StringIO
4
5class FakeSocket:
6 def __init__(self, text):
7 self.text = text
8
9 def makefile(self, mode, bufsize=None):
10 if mode != 'r' and mode != 'rb':
Neal Norwitz28bb5722002-04-01 19:00:50 +000011 raise httplib.UnimplementedFileMode()
Jeremy Hylton79fa2b62001-04-13 14:57:44 +000012 return StringIO.StringIO(self.text)
13
14# Test HTTP status lines
15
16body = "HTTP/1.1 200 Ok\r\n\r\nText"
17sock = FakeSocket(body)
Jeremy Hylton6d0a4c72002-07-07 16:51:37 +000018resp = httplib.HTTPResponse(sock, 1)
Jeremy Hylton39c03802002-07-12 14:04:09 +000019resp.begin()
Jeremy Hylton79fa2b62001-04-13 14:57:44 +000020print resp.read()
21resp.close()
22
23body = "HTTP/1.1 400.100 Not Ok\r\n\r\nText"
24sock = FakeSocket(body)
Jeremy Hylton6d0a4c72002-07-07 16:51:37 +000025resp = httplib.HTTPResponse(sock, 1)
Jeremy Hylton79fa2b62001-04-13 14:57:44 +000026try:
Jeremy Hylton39c03802002-07-12 14:04:09 +000027 resp.begin()
Jeremy Hylton79fa2b62001-04-13 14:57:44 +000028except httplib.BadStatusLine:
29 print "BadStatusLine raised as expected"
30else:
31 print "Expect BadStatusLine"
Skip Montanaro03ff86d2002-03-24 16:54:16 +000032
33# Check invalid host_port
34
35for hp in ("www.python.org:abc", "www.python.org:"):
36 try:
37 h = httplib.HTTP(hp)
38 except httplib.InvalidURL:
39 print "InvalidURL raised as expected"
40 else:
41 print "Expect InvalidURL"
Jeremy Hylton6d0a4c72002-07-07 16:51:37 +000042
43# test response with multiple message headers with the same field name.
44text = ('HTTP/1.1 200 OK\r\n'
45 'Set-Cookie: Customer="WILE_E_COYOTE"; Version="1"; Path="/acme"\r\n'
46 'Set-Cookie: Part_Number="Rocket_Launcher_0001"; Version="1";'
47 ' Path="/acme"\r\n'
48 '\r\n'
49 'No body\r\n')
50hdr = ('Customer="WILE_E_COYOTE"; Version="1"; Path="/acme"'
51 ', '
52 'Part_Number="Rocket_Launcher_0001"; Version="1"; Path="/acme"')
53s = FakeSocket(text)
54r = httplib.HTTPResponse(s, 1)
Jeremy Hylton39c03802002-07-12 14:04:09 +000055r.begin()
Jeremy Hylton6d0a4c72002-07-07 16:51:37 +000056cookies = r.getheader("Set-Cookie")
57if cookies != hdr:
58 raise AssertionError, "multiple headers not combined properly"