Mercurial > cpython-lru_cache-weakref
annotate Lib/test/test_httpservers.py @ 87690:66c1c9f32567 default tip
Add use_weakref option to functools.lru_cache
The use_weakref option makes lru_cache create weak references to the function
arguments when creating the cache key, which prevents them from staying in the
memory forever even after all other references to them are gone.
This is a proof of concept for http://bugs.python.org/issue19859
| author | Radomir Dopieralski <devel@sheep.art.pl> |
|---|---|
| date | Tue, 03 Dec 2013 16:02:48 +0100 |
| parents | d6ad412dee40 |
| children |
| rev | line source |
|---|---|
|
47278
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1 """Unittests for the various HTTPServer modules. |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2 |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
3 Written by Cody A.W. Somerville <cody-somerville@ubuntu.com>, |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
4 Josip Dzolonga, and Michael Otteneder for the 2007/08 GHOP contest. |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
5 """ |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
6 |
|
47318
e1fcc3881cb6
Create http package. #2883.
Georg Brandl <georg@python.org>
parents:
47278
diff
changeset
|
7 from http.server import BaseHTTPRequestHandler, HTTPServer, \ |
|
e1fcc3881cb6
Create http package. #2883.
Georg Brandl <georg@python.org>
parents:
47278
diff
changeset
|
8 SimpleHTTPRequestHandler, CGIHTTPRequestHandler |
|
53073
3b1b6142690a
Merged revisions 71303 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
48334
diff
changeset
|
9 from http import server |
|
47278
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
10 |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
11 import os |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
12 import sys |
|
65029
d787ef9acb72
Add BaseHTTPRequestHandler related tests.
Senthil Kumaran <orsenthil@gmail.com>
parents:
60972
diff
changeset
|
13 import re |
|
47278
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
14 import base64 |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
15 import shutil |
|
48334
5a416a6417d3
Make a new urllib package .
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
47635
diff
changeset
|
16 import urllib.parse |
|
47318
e1fcc3881cb6
Create http package. #2883.
Georg Brandl <georg@python.org>
parents:
47278
diff
changeset
|
17 import http.client |
|
47278
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
18 import tempfile |
|
65028
7add45bcc9c6
Issue1491 - BaseHTTPServer incorrectly implements response code 100
Senthil Kumaran <orsenthil@gmail.com>
parents:
63558
diff
changeset
|
19 from io import BytesIO |
|
47278
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
20 |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
21 import unittest |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
22 from test import support |
|
61073
493bb4585e38
Merged revisions 80552-80556,80564-80566,80568-80571 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents:
60970
diff
changeset
|
23 threading = support.import_module('threading') |
|
47278
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
24 |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
25 class NoLogRequestHandler: |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
26 def log_message(self, *args): |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
27 # don't write log messages to stderr |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
28 pass |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
29 |
|
47635
f31e32a2013c
Patch for issue 2848, mostly by Humberto Diogenes, with a couple of
Barry Warsaw <barry@python.org>
parents:
47318
diff
changeset
|
30 def read(self, n=None): |
|
f31e32a2013c
Patch for issue 2848, mostly by Humberto Diogenes, with a couple of
Barry Warsaw <barry@python.org>
parents:
47318
diff
changeset
|
31 return '' |
|
f31e32a2013c
Patch for issue 2848, mostly by Humberto Diogenes, with a couple of
Barry Warsaw <barry@python.org>
parents:
47318
diff
changeset
|
32 |
|
47278
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
33 |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
34 class TestServerThread(threading.Thread): |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
35 def __init__(self, test_object, request_handler): |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
36 threading.Thread.__init__(self) |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
37 self.request_handler = request_handler |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
38 self.test_object = test_object |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
39 |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
40 def run(self): |
|
68776
fa20590d4694
Try to strengthen test_httpservers (issue #11617)
Antoine Pitrou <solipsis@pitrou.net>
parents:
68586
diff
changeset
|
41 self.server = HTTPServer(('localhost', 0), self.request_handler) |
|
fa20590d4694
Try to strengthen test_httpservers (issue #11617)
Antoine Pitrou <solipsis@pitrou.net>
parents:
68586
diff
changeset
|
42 self.test_object.HOST, self.test_object.PORT = self.server.socket.getsockname() |
|
60972
9165232e6d1a
Merged revisions 80487,80489 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60063
diff
changeset
|
43 self.test_object.server_started.set() |
|
9165232e6d1a
Merged revisions 80487,80489 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60063
diff
changeset
|
44 self.test_object = None |
|
47278
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
45 try: |
|
60972
9165232e6d1a
Merged revisions 80487,80489 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60063
diff
changeset
|
46 self.server.serve_forever(0.05) |
|
47278
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
47 finally: |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
48 self.server.server_close() |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
49 |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
50 def stop(self): |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
51 self.server.shutdown() |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
52 |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
53 |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
54 class BaseTestCase(unittest.TestCase): |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
55 def setUp(self): |
|
56871
8fb8fd3b67cf
Merged revisions 75838 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
56592
diff
changeset
|
56 self._threads = support.threading_setup() |
|
56592
098ba3a63730
Note that a number of the changes listed below were not applicable to the Py3k branch, and hence the corresponding
Nick Coghlan <ncoghlan@gmail.com>
parents:
55593
diff
changeset
|
57 os.environ = support.EnvironmentVarGuard() |
|
60972
9165232e6d1a
Merged revisions 80487,80489 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60063
diff
changeset
|
58 self.server_started = threading.Event() |
|
47278
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
59 self.thread = TestServerThread(self, self.request_handler) |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
60 self.thread.start() |
|
60972
9165232e6d1a
Merged revisions 80487,80489 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60063
diff
changeset
|
61 self.server_started.wait() |
|
47278
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
62 |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
63 def tearDown(self): |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
64 self.thread.stop() |
|
79287
247d3e3c08ca
Speed up test_httpservers by avoiding a one-second cleanup wait after each test case.
Antoine Pitrou <solipsis@pitrou.net>
parents:
78433
diff
changeset
|
65 self.thread = None |
|
56592
098ba3a63730
Note that a number of the changes listed below were not applicable to the Py3k branch, and hence the corresponding
Nick Coghlan <ncoghlan@gmail.com>
parents:
55593
diff
changeset
|
66 os.environ.__exit__() |
|
56871
8fb8fd3b67cf
Merged revisions 75838 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
56592
diff
changeset
|
67 support.threading_cleanup(*self._threads) |
|
47278
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
68 |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
69 def request(self, uri, method='GET', body=None, headers={}): |
|
68776
fa20590d4694
Try to strengthen test_httpservers (issue #11617)
Antoine Pitrou <solipsis@pitrou.net>
parents:
68586
diff
changeset
|
70 self.connection = http.client.HTTPConnection(self.HOST, self.PORT) |
|
47278
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
71 self.connection.request(method, uri, body, headers) |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
72 return self.connection.getresponse() |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
73 |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
74 |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
75 class BaseHTTPServerTestCase(BaseTestCase): |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
76 class request_handler(NoLogRequestHandler, BaseHTTPRequestHandler): |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
77 protocol_version = 'HTTP/1.1' |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
78 default_request_version = 'HTTP/1.1' |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
79 |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
80 def do_TEST(self): |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
81 self.send_response(204) |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
82 self.send_header('Content-Type', 'text/html') |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
83 self.send_header('Connection', 'close') |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
84 self.end_headers() |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
85 |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
86 def do_KEEP(self): |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
87 self.send_response(204) |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
88 self.send_header('Content-Type', 'text/html') |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
89 self.send_header('Connection', 'keep-alive') |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
90 self.end_headers() |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
91 |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
92 def do_KEYERROR(self): |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
93 self.send_error(999) |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
94 |
|
79664
ee34cb049a10
Issue #16088: BaseHTTPRequestHandler's send_error method includes a
Senthil Kumaran <senthil@uthcode.com>
parents:
79288
diff
changeset
|
95 def do_NOTFOUND(self): |
|
ee34cb049a10
Issue #16088: BaseHTTPRequestHandler's send_error method includes a
Senthil Kumaran <senthil@uthcode.com>
parents:
79288
diff
changeset
|
96 self.send_error(404) |
|
ee34cb049a10
Issue #16088: BaseHTTPRequestHandler's send_error method includes a
Senthil Kumaran <senthil@uthcode.com>
parents:
79288
diff
changeset
|
97 |
|
82669
59292f366b53
#1291 http.server's send_error takes an optional explain argument
Senthil Kumaran <senthil@uthcode.com>
parents:
81996
diff
changeset
|
98 def do_EXPLAINERROR(self): |
|
59292f366b53
#1291 http.server's send_error takes an optional explain argument
Senthil Kumaran <senthil@uthcode.com>
parents:
81996
diff
changeset
|
99 self.send_error(999, "Short Message", |
|
59292f366b53
#1291 http.server's send_error takes an optional explain argument
Senthil Kumaran <senthil@uthcode.com>
parents:
81996
diff
changeset
|
100 "This is a long \n explaination") |
|
59292f366b53
#1291 http.server's send_error takes an optional explain argument
Senthil Kumaran <senthil@uthcode.com>
parents:
81996
diff
changeset
|
101 |
|
47278
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
102 def do_CUSTOM(self): |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
103 self.send_response(999) |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
104 self.send_header('Content-Type', 'text/html') |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
105 self.send_header('Connection', 'close') |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
106 self.end_headers() |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
107 |
|
67719
30c91342b6ae
Issue #10980: encode headers with latin1 instead of ASCII in the HTTP server.
Armin Ronacher <armin.ronacher@active-4.com>
parents:
67183
diff
changeset
|
108 def do_LATINONEHEADER(self): |
|
30c91342b6ae
Issue #10980: encode headers with latin1 instead of ASCII in the HTTP server.
Armin Ronacher <armin.ronacher@active-4.com>
parents:
67183
diff
changeset
|
109 self.send_response(999) |
|
30c91342b6ae
Issue #10980: encode headers with latin1 instead of ASCII in the HTTP server.
Armin Ronacher <armin.ronacher@active-4.com>
parents:
67183
diff
changeset
|
110 self.send_header('X-Special', 'Dängerous Mind') |
|
67720
b3cadf5cf742
To match the behaviour of HTTP server, the HTTP client library now also encodes
Armin Ronacher <armin.ronacher@active-4.com>
parents:
67719
diff
changeset
|
111 self.send_header('Connection', 'close') |
|
67719
30c91342b6ae
Issue #10980: encode headers with latin1 instead of ASCII in the HTTP server.
Armin Ronacher <armin.ronacher@active-4.com>
parents:
67183
diff
changeset
|
112 self.end_headers() |
|
67720
b3cadf5cf742
To match the behaviour of HTTP server, the HTTP client library now also encodes
Armin Ronacher <armin.ronacher@active-4.com>
parents:
67719
diff
changeset
|
113 body = self.headers['x-special-incoming'].encode('utf-8') |
|
b3cadf5cf742
To match the behaviour of HTTP server, the HTTP client library now also encodes
Armin Ronacher <armin.ronacher@active-4.com>
parents:
67719
diff
changeset
|
114 self.wfile.write(body) |
|
67719
30c91342b6ae
Issue #10980: encode headers with latin1 instead of ASCII in the HTTP server.
Armin Ronacher <armin.ronacher@active-4.com>
parents:
67183
diff
changeset
|
115 |
|
47278
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
116 def setUp(self): |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
117 BaseTestCase.setUp(self) |
|
68776
fa20590d4694
Try to strengthen test_httpservers (issue #11617)
Antoine Pitrou <solipsis@pitrou.net>
parents:
68586
diff
changeset
|
118 self.con = http.client.HTTPConnection(self.HOST, self.PORT) |
|
47278
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
119 self.con.connect() |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
120 |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
121 def test_command(self): |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
122 self.con.request('GET', '/') |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
123 res = self.con.getresponse() |
|
66340
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
65076
diff
changeset
|
124 self.assertEqual(res.status, 501) |
|
47278
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
125 |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
126 def test_request_line_trimming(self): |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
127 self.con._http_vsn_str = 'HTTP/1.1\n' |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
128 self.con.putrequest('GET', '/') |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
129 self.con.endheaders() |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
130 res = self.con.getresponse() |
|
66340
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
65076
diff
changeset
|
131 self.assertEqual(res.status, 501) |
|
47278
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
132 |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
133 def test_version_bogus(self): |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
134 self.con._http_vsn_str = 'FUBAR' |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
135 self.con.putrequest('GET', '/') |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
136 self.con.endheaders() |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
137 res = self.con.getresponse() |
|
66340
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
65076
diff
changeset
|
138 self.assertEqual(res.status, 400) |
|
47278
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
139 |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
140 def test_version_digits(self): |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
141 self.con._http_vsn_str = 'HTTP/9.9.9' |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
142 self.con.putrequest('GET', '/') |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
143 self.con.endheaders() |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
144 res = self.con.getresponse() |
|
66340
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
65076
diff
changeset
|
145 self.assertEqual(res.status, 400) |
|
47278
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
146 |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
147 def test_version_none_get(self): |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
148 self.con._http_vsn_str = '' |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
149 self.con.putrequest('GET', '/') |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
150 self.con.endheaders() |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
151 res = self.con.getresponse() |
|
66340
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
65076
diff
changeset
|
152 self.assertEqual(res.status, 501) |
|
47278
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
153 |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
154 def test_version_none(self): |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
155 self.con._http_vsn_str = '' |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
156 self.con.putrequest('PUT', '/') |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
157 self.con.endheaders() |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
158 res = self.con.getresponse() |
|
66340
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
65076
diff
changeset
|
159 self.assertEqual(res.status, 400) |
|
47278
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
160 |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
161 def test_version_invalid(self): |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
162 self.con._http_vsn = 99 |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
163 self.con._http_vsn_str = 'HTTP/9.9' |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
164 self.con.putrequest('GET', '/') |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
165 self.con.endheaders() |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
166 res = self.con.getresponse() |
|
66340
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
65076
diff
changeset
|
167 self.assertEqual(res.status, 505) |
|
47278
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
168 |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
169 def test_send_blank(self): |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
170 self.con._http_vsn_str = '' |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
171 self.con.putrequest('', '') |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
172 self.con.endheaders() |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
173 res = self.con.getresponse() |
|
66340
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
65076
diff
changeset
|
174 self.assertEqual(res.status, 400) |
|
47278
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
175 |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
176 def test_header_close(self): |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
177 self.con.putrequest('GET', '/') |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
178 self.con.putheader('Connection', 'close') |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
179 self.con.endheaders() |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
180 res = self.con.getresponse() |
|
66340
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
65076
diff
changeset
|
181 self.assertEqual(res.status, 501) |
|
47278
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
182 |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
183 def test_head_keep_alive(self): |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
184 self.con._http_vsn_str = 'HTTP/1.1' |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
185 self.con.putrequest('GET', '/') |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
186 self.con.putheader('Connection', 'keep-alive') |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
187 self.con.endheaders() |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
188 res = self.con.getresponse() |
|
66340
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
65076
diff
changeset
|
189 self.assertEqual(res.status, 501) |
|
47278
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
190 |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
191 def test_handler(self): |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
192 self.con.request('TEST', '/') |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
193 res = self.con.getresponse() |
|
66340
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
65076
diff
changeset
|
194 self.assertEqual(res.status, 204) |
|
47278
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
195 |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
196 def test_return_header_keep_alive(self): |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
197 self.con.request('KEEP', '/') |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
198 res = self.con.getresponse() |
|
66340
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
65076
diff
changeset
|
199 self.assertEqual(res.getheader('Connection'), 'keep-alive') |
|
47278
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
200 self.con.request('TEST', '/') |
|
65788
211858723b8c
Fix ResourceWarning for an unclosed socket.
Brian Curtin <brian.curtin@gmail.com>
parents:
65740
diff
changeset
|
201 self.addCleanup(self.con.close) |
|
47278
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
202 |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
203 def test_internal_key_error(self): |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
204 self.con.request('KEYERROR', '/') |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
205 res = self.con.getresponse() |
|
66340
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
65076
diff
changeset
|
206 self.assertEqual(res.status, 999) |
|
47278
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
207 |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
208 def test_return_custom_status(self): |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
209 self.con.request('CUSTOM', '/') |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
210 res = self.con.getresponse() |
|
66340
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
65076
diff
changeset
|
211 self.assertEqual(res.status, 999) |
|
47278
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
212 |
|
82669
59292f366b53
#1291 http.server's send_error takes an optional explain argument
Senthil Kumaran <senthil@uthcode.com>
parents:
81996
diff
changeset
|
213 def test_return_explain_error(self): |
|
59292f366b53
#1291 http.server's send_error takes an optional explain argument
Senthil Kumaran <senthil@uthcode.com>
parents:
81996
diff
changeset
|
214 self.con.request('EXPLAINERROR', '/') |
|
59292f366b53
#1291 http.server's send_error takes an optional explain argument
Senthil Kumaran <senthil@uthcode.com>
parents:
81996
diff
changeset
|
215 res = self.con.getresponse() |
|
59292f366b53
#1291 http.server's send_error takes an optional explain argument
Senthil Kumaran <senthil@uthcode.com>
parents:
81996
diff
changeset
|
216 self.assertEqual(res.status, 999) |
|
59292f366b53
#1291 http.server's send_error takes an optional explain argument
Senthil Kumaran <senthil@uthcode.com>
parents:
81996
diff
changeset
|
217 self.assertTrue(int(res.getheader('Content-Length'))) |
|
59292f366b53
#1291 http.server's send_error takes an optional explain argument
Senthil Kumaran <senthil@uthcode.com>
parents:
81996
diff
changeset
|
218 |
|
67719
30c91342b6ae
Issue #10980: encode headers with latin1 instead of ASCII in the HTTP server.
Armin Ronacher <armin.ronacher@active-4.com>
parents:
67183
diff
changeset
|
219 def test_latin1_header(self): |
|
67720
b3cadf5cf742
To match the behaviour of HTTP server, the HTTP client library now also encodes
Armin Ronacher <armin.ronacher@active-4.com>
parents:
67719
diff
changeset
|
220 self.con.request('LATINONEHEADER', '/', headers={ |
|
b3cadf5cf742
To match the behaviour of HTTP server, the HTTP client library now also encodes
Armin Ronacher <armin.ronacher@active-4.com>
parents:
67719
diff
changeset
|
221 'X-Special-Incoming': 'Ärger mit Unicode' |
|
b3cadf5cf742
To match the behaviour of HTTP server, the HTTP client library now also encodes
Armin Ronacher <armin.ronacher@active-4.com>
parents:
67719
diff
changeset
|
222 }) |
|
67719
30c91342b6ae
Issue #10980: encode headers with latin1 instead of ASCII in the HTTP server.
Armin Ronacher <armin.ronacher@active-4.com>
parents:
67183
diff
changeset
|
223 res = self.con.getresponse() |
|
30c91342b6ae
Issue #10980: encode headers with latin1 instead of ASCII in the HTTP server.
Armin Ronacher <armin.ronacher@active-4.com>
parents:
67183
diff
changeset
|
224 self.assertEqual(res.getheader('X-Special'), 'Dängerous Mind') |
|
67720
b3cadf5cf742
To match the behaviour of HTTP server, the HTTP client library now also encodes
Armin Ronacher <armin.ronacher@active-4.com>
parents:
67719
diff
changeset
|
225 self.assertEqual(res.read(), 'Ärger mit Unicode'.encode('utf-8')) |
|
67719
30c91342b6ae
Issue #10980: encode headers with latin1 instead of ASCII in the HTTP server.
Armin Ronacher <armin.ronacher@active-4.com>
parents:
67183
diff
changeset
|
226 |
|
79664
ee34cb049a10
Issue #16088: BaseHTTPRequestHandler's send_error method includes a
Senthil Kumaran <senthil@uthcode.com>
parents:
79288
diff
changeset
|
227 def test_error_content_length(self): |
|
ee34cb049a10
Issue #16088: BaseHTTPRequestHandler's send_error method includes a
Senthil Kumaran <senthil@uthcode.com>
parents:
79288
diff
changeset
|
228 # Issue #16088: standard error responses should have a content-length |
|
ee34cb049a10
Issue #16088: BaseHTTPRequestHandler's send_error method includes a
Senthil Kumaran <senthil@uthcode.com>
parents:
79288
diff
changeset
|
229 self.con.request('NOTFOUND', '/') |
|
ee34cb049a10
Issue #16088: BaseHTTPRequestHandler's send_error method includes a
Senthil Kumaran <senthil@uthcode.com>
parents:
79288
diff
changeset
|
230 res = self.con.getresponse() |
|
ee34cb049a10
Issue #16088: BaseHTTPRequestHandler's send_error method includes a
Senthil Kumaran <senthil@uthcode.com>
parents:
79288
diff
changeset
|
231 self.assertEqual(res.status, 404) |
|
ee34cb049a10
Issue #16088: BaseHTTPRequestHandler's send_error method includes a
Senthil Kumaran <senthil@uthcode.com>
parents:
79288
diff
changeset
|
232 data = res.read() |
|
ee34cb049a10
Issue #16088: BaseHTTPRequestHandler's send_error method includes a
Senthil Kumaran <senthil@uthcode.com>
parents:
79288
diff
changeset
|
233 self.assertEqual(int(res.getheader('Content-Length')), len(data)) |
|
ee34cb049a10
Issue #16088: BaseHTTPRequestHandler's send_error method includes a
Senthil Kumaran <senthil@uthcode.com>
parents:
79288
diff
changeset
|
234 |
|
47278
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
235 |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
236 class SimpleHTTPServerTestCase(BaseTestCase): |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
237 class request_handler(NoLogRequestHandler, SimpleHTTPRequestHandler): |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
238 pass |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
239 |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
240 def setUp(self): |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
241 BaseTestCase.setUp(self) |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
242 self.cwd = os.getcwd() |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
243 basetempdir = tempfile.gettempdir() |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
244 os.chdir(basetempdir) |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
245 self.data = b'We are the knights who say Ni!' |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
246 self.tempdir = tempfile.mkdtemp(dir=basetempdir) |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
247 self.tempdir_name = os.path.basename(self.tempdir) |
|
65740
40ac45a092b7
Move test_httpservers over to file context managers.
Brett Cannon <bcannon@gmail.com>
parents:
65493
diff
changeset
|
248 with open(os.path.join(self.tempdir, 'test'), 'wb') as temp: |
|
40ac45a092b7
Move test_httpservers over to file context managers.
Brett Cannon <bcannon@gmail.com>
parents:
65493
diff
changeset
|
249 temp.write(self.data) |
|
47278
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
250 |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
251 def tearDown(self): |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
252 try: |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
253 os.chdir(self.cwd) |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
254 try: |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
255 shutil.rmtree(self.tempdir) |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
256 except: |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
257 pass |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
258 finally: |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
259 BaseTestCase.tearDown(self) |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
260 |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
261 def check_status_and_reason(self, response, status, data=None): |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
262 body = response.read() |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
53073
diff
changeset
|
263 self.assertTrue(response) |
|
66340
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
65076
diff
changeset
|
264 self.assertEqual(response.status, status) |
|
59728
4587e1f74ed8
Merged revisions 79100 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
56871
diff
changeset
|
265 self.assertIsNotNone(response.reason) |
|
47278
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
266 if data: |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
267 self.assertEqual(data, body) |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
268 |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
269 def test_get(self): |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
270 #constructs the path relative to the root directory of the HTTPServer |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
271 response = self.request(self.tempdir_name + '/test') |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
272 self.check_status_and_reason(response, 200, data=self.data) |
|
85671
1fcccbbe15e2
Fix http.server's request handling case on trailing '/'.
Senthil Kumaran <senthil@uthcode.com>
parents:
81995
diff
changeset
|
273 # check for trailing "/" which should return 404. See Issue17324 |
|
1fcccbbe15e2
Fix http.server's request handling case on trailing '/'.
Senthil Kumaran <senthil@uthcode.com>
parents:
81995
diff
changeset
|
274 response = self.request(self.tempdir_name + '/test/') |
|
1fcccbbe15e2
Fix http.server's request handling case on trailing '/'.
Senthil Kumaran <senthil@uthcode.com>
parents:
81995
diff
changeset
|
275 self.check_status_and_reason(response, 404) |
|
47278
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
276 response = self.request(self.tempdir_name + '/') |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
277 self.check_status_and_reason(response, 200) |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
278 response = self.request(self.tempdir_name) |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
279 self.check_status_and_reason(response, 301) |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
280 response = self.request('/ThisDoesNotExist') |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
281 self.check_status_and_reason(response, 404) |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
282 response = self.request('/' + 'ThisDoesNotExist' + '/') |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
283 self.check_status_and_reason(response, 404) |
|
65740
40ac45a092b7
Move test_httpservers over to file context managers.
Brett Cannon <bcannon@gmail.com>
parents:
65493
diff
changeset
|
284 with open(os.path.join(self.tempdir_name, 'index.html'), 'w') as f: |
|
40ac45a092b7
Move test_httpservers over to file context managers.
Brett Cannon <bcannon@gmail.com>
parents:
65493
diff
changeset
|
285 response = self.request('/' + self.tempdir_name + '/') |
|
40ac45a092b7
Move test_httpservers over to file context managers.
Brett Cannon <bcannon@gmail.com>
parents:
65493
diff
changeset
|
286 self.check_status_and_reason(response, 200) |
|
73307
4dc5590dbd0b
Issue #13308: Fix test_httpservers failures when run as root.
Charles-François Natali <neologix@free.fr>
parents:
68776
diff
changeset
|
287 # chmod() doesn't work as expected on Windows, and filesystem |
|
4dc5590dbd0b
Issue #13308: Fix test_httpservers failures when run as root.
Charles-François Natali <neologix@free.fr>
parents:
68776
diff
changeset
|
288 # permissions are ignored by root on Unix. |
|
4dc5590dbd0b
Issue #13308: Fix test_httpservers failures when run as root.
Charles-François Natali <neologix@free.fr>
parents:
68776
diff
changeset
|
289 if os.name == 'posix' and os.geteuid() != 0: |
|
65740
40ac45a092b7
Move test_httpservers over to file context managers.
Brett Cannon <bcannon@gmail.com>
parents:
65493
diff
changeset
|
290 os.chmod(self.tempdir, 0) |
|
40ac45a092b7
Move test_httpservers over to file context managers.
Brett Cannon <bcannon@gmail.com>
parents:
65493
diff
changeset
|
291 response = self.request(self.tempdir_name + '/') |
|
40ac45a092b7
Move test_httpservers over to file context managers.
Brett Cannon <bcannon@gmail.com>
parents:
65493
diff
changeset
|
292 self.check_status_and_reason(response, 404) |
|
40ac45a092b7
Move test_httpservers over to file context managers.
Brett Cannon <bcannon@gmail.com>
parents:
65493
diff
changeset
|
293 os.chmod(self.tempdir, 0o755) |
|
47278
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
294 |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
295 def test_head(self): |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
296 response = self.request( |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
297 self.tempdir_name + '/test', method='HEAD') |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
298 self.check_status_and_reason(response, 200) |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
299 self.assertEqual(response.getheader('content-length'), |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
300 str(len(self.data))) |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
301 self.assertEqual(response.getheader('content-type'), |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
302 'application/octet-stream') |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
303 |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
304 def test_invalid_requests(self): |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
305 response = self.request('/', method='FOO') |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
306 self.check_status_and_reason(response, 501) |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
307 # requests must be case sensitive,so this should fail too |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
308 response = self.request('/', method='get') |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
309 self.check_status_and_reason(response, 501) |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
310 response = self.request('/', method='GETs') |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
311 self.check_status_and_reason(response, 501) |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
312 |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
313 |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
314 cgi_file1 = """\ |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
315 #!%s |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
316 |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
317 print("Content-type: text/html") |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
318 print() |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
319 print("Hello World") |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
320 """ |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
321 |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
322 cgi_file2 = """\ |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
323 #!%s |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
324 import cgi |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
325 |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
326 print("Content-type: text/html") |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
327 print() |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
328 |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
329 form = cgi.FieldStorage() |
|
59728
4587e1f74ed8
Merged revisions 79100 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
56871
diff
changeset
|
330 print("%%s, %%s, %%s" %% (form.getfirst("spam"), form.getfirst("eggs"), |
|
4587e1f74ed8
Merged revisions 79100 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
56871
diff
changeset
|
331 form.getfirst("bacon"))) |
|
47278
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
332 """ |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
333 |
|
73307
4dc5590dbd0b
Issue #13308: Fix test_httpservers failures when run as root.
Charles-François Natali <neologix@free.fr>
parents:
68776
diff
changeset
|
334 |
|
4dc5590dbd0b
Issue #13308: Fix test_httpservers failures when run as root.
Charles-François Natali <neologix@free.fr>
parents:
68776
diff
changeset
|
335 @unittest.skipIf(hasattr(os, 'geteuid') and os.geteuid() == 0, |
|
4dc5590dbd0b
Issue #13308: Fix test_httpservers failures when run as root.
Charles-François Natali <neologix@free.fr>
parents:
68776
diff
changeset
|
336 "This test can't be run reliably as root (issue #13308).") |
|
47278
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
337 class CGIHTTPServerTestCase(BaseTestCase): |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
338 class request_handler(NoLogRequestHandler, CGIHTTPRequestHandler): |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
339 pass |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
340 |
|
78433
bc4fdb758b8c
Fix CGI tests to take into account the platform's line ending (issue #13119)
Antoine Pitrou <solipsis@pitrou.net>
parents:
76248
diff
changeset
|
341 linesep = os.linesep.encode('ascii') |
|
bc4fdb758b8c
Fix CGI tests to take into account the platform's line ending (issue #13119)
Antoine Pitrou <solipsis@pitrou.net>
parents:
76248
diff
changeset
|
342 |
|
47278
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
343 def setUp(self): |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
344 BaseTestCase.setUp(self) |
|
65489
b0228af6db11
test_httpservers: skip CGI tests if Python executable path is not encodable
Victor Stinner <victor.stinner@haypocalc.com>
parents:
65075
diff
changeset
|
345 self.cwd = os.getcwd() |
|
47278
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
346 self.parent_dir = tempfile.mkdtemp() |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
347 self.cgi_dir = os.path.join(self.parent_dir, 'cgi-bin') |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
348 os.mkdir(self.cgi_dir) |
|
87169
691b3df5036b
Transplant of rev 544b654d000c: directory traversal attack in CGIHttpRequestHandler.
Georg Brandl <georg@python.org>
parents:
85671
diff
changeset
|
349 self.nocgi_path = None |
|
65489
b0228af6db11
test_httpservers: skip CGI tests if Python executable path is not encodable
Victor Stinner <victor.stinner@haypocalc.com>
parents:
65075
diff
changeset
|
350 self.file1_path = None |
|
b0228af6db11
test_httpservers: skip CGI tests if Python executable path is not encodable
Victor Stinner <victor.stinner@haypocalc.com>
parents:
65075
diff
changeset
|
351 self.file2_path = None |
|
47278
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
352 |
|
60063
e63d4678fca7
Note: only the relevant parts of r79474 are merged.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
55593
diff
changeset
|
353 # The shebang line should be pure ASCII: use symlink if possible. |
|
e63d4678fca7
Note: only the relevant parts of r79474 are merged.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
55593
diff
changeset
|
354 # See issue #7668. |
|
67183
5aa433a277f9
Fix #9333. The symlink function is always available now, raising OSError
Brian Curtin <brian.curtin@gmail.com>
parents:
67020
diff
changeset
|
355 if support.can_symlink(): |
|
60063
e63d4678fca7
Note: only the relevant parts of r79474 are merged.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
55593
diff
changeset
|
356 self.pythonexe = os.path.join(self.parent_dir, 'python') |
|
e63d4678fca7
Note: only the relevant parts of r79474 are merged.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
55593
diff
changeset
|
357 os.symlink(sys.executable, self.pythonexe) |
|
e63d4678fca7
Note: only the relevant parts of r79474 are merged.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
55593
diff
changeset
|
358 else: |
|
e63d4678fca7
Note: only the relevant parts of r79474 are merged.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
55593
diff
changeset
|
359 self.pythonexe = sys.executable |
|
e63d4678fca7
Note: only the relevant parts of r79474 are merged.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
55593
diff
changeset
|
360 |
|
65492
b2a9ca2b61a2
test_httpservers: Fix skip test check, the python executable path have to be
Victor Stinner <victor.stinner@haypocalc.com>
parents:
65489
diff
changeset
|
361 try: |
|
b2a9ca2b61a2
test_httpservers: Fix skip test check, the python executable path have to be
Victor Stinner <victor.stinner@haypocalc.com>
parents:
65489
diff
changeset
|
362 # The python executable path is written as the first line of the |
|
b2a9ca2b61a2
test_httpservers: Fix skip test check, the python executable path have to be
Victor Stinner <victor.stinner@haypocalc.com>
parents:
65489
diff
changeset
|
363 # CGI Python script. The encoding cookie cannot be used, and so the |
|
b2a9ca2b61a2
test_httpservers: Fix skip test check, the python executable path have to be
Victor Stinner <victor.stinner@haypocalc.com>
parents:
65489
diff
changeset
|
364 # path should be encodable to the default script encoding (utf-8) |
|
b2a9ca2b61a2
test_httpservers: Fix skip test check, the python executable path have to be
Victor Stinner <victor.stinner@haypocalc.com>
parents:
65489
diff
changeset
|
365 self.pythonexe.encode('utf-8') |
|
b2a9ca2b61a2
test_httpservers: Fix skip test check, the python executable path have to be
Victor Stinner <victor.stinner@haypocalc.com>
parents:
65489
diff
changeset
|
366 except UnicodeEncodeError: |
|
b2a9ca2b61a2
test_httpservers: Fix skip test check, the python executable path have to be
Victor Stinner <victor.stinner@haypocalc.com>
parents:
65489
diff
changeset
|
367 self.tearDown() |
|
81994
086eb1fe3082
Do not raise self.skipTest().
Serhiy Storchaka <storchaka@gmail.com>
parents:
79287
diff
changeset
|
368 self.skipTest("Python executable path is not encodable to utf-8") |
|
65492
b2a9ca2b61a2
test_httpservers: Fix skip test check, the python executable path have to be
Victor Stinner <victor.stinner@haypocalc.com>
parents:
65489
diff
changeset
|
369 |
|
87169
691b3df5036b
Transplant of rev 544b654d000c: directory traversal attack in CGIHttpRequestHandler.
Georg Brandl <georg@python.org>
parents:
85671
diff
changeset
|
370 self.nocgi_path = os.path.join(self.parent_dir, 'nocgi.py') |
|
691b3df5036b
Transplant of rev 544b654d000c: directory traversal attack in CGIHttpRequestHandler.
Georg Brandl <georg@python.org>
parents:
85671
diff
changeset
|
371 with open(self.nocgi_path, 'w') as fp: |
|
691b3df5036b
Transplant of rev 544b654d000c: directory traversal attack in CGIHttpRequestHandler.
Georg Brandl <georg@python.org>
parents:
85671
diff
changeset
|
372 fp.write(cgi_file1 % self.pythonexe) |
|
691b3df5036b
Transplant of rev 544b654d000c: directory traversal attack in CGIHttpRequestHandler.
Georg Brandl <georg@python.org>
parents:
85671
diff
changeset
|
373 os.chmod(self.nocgi_path, 0o777) |
|
691b3df5036b
Transplant of rev 544b654d000c: directory traversal attack in CGIHttpRequestHandler.
Georg Brandl <georg@python.org>
parents:
85671
diff
changeset
|
374 |
|
47278
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
375 self.file1_path = os.path.join(self.cgi_dir, 'file1.py') |
|
65493
c147f910af70
test_httpservers: Python CGI scripts have to be encoded to utf-8
Victor Stinner <victor.stinner@haypocalc.com>
parents:
65492
diff
changeset
|
376 with open(self.file1_path, 'w', encoding='utf-8') as file1: |
|
60063
e63d4678fca7
Note: only the relevant parts of r79474 are merged.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
55593
diff
changeset
|
377 file1.write(cgi_file1 % self.pythonexe) |
|
47278
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
378 os.chmod(self.file1_path, 0o777) |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
379 |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
380 self.file2_path = os.path.join(self.cgi_dir, 'file2.py') |
|
65493
c147f910af70
test_httpservers: Python CGI scripts have to be encoded to utf-8
Victor Stinner <victor.stinner@haypocalc.com>
parents:
65492
diff
changeset
|
381 with open(self.file2_path, 'w', encoding='utf-8') as file2: |
|
60063
e63d4678fca7
Note: only the relevant parts of r79474 are merged.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
55593
diff
changeset
|
382 file2.write(cgi_file2 % self.pythonexe) |
|
47278
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
383 os.chmod(self.file2_path, 0o777) |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
384 |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
385 os.chdir(self.parent_dir) |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
386 |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
387 def tearDown(self): |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
388 try: |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
389 os.chdir(self.cwd) |
|
60063
e63d4678fca7
Note: only the relevant parts of r79474 are merged.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
55593
diff
changeset
|
390 if self.pythonexe != sys.executable: |
|
e63d4678fca7
Note: only the relevant parts of r79474 are merged.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
55593
diff
changeset
|
391 os.remove(self.pythonexe) |
|
87169
691b3df5036b
Transplant of rev 544b654d000c: directory traversal attack in CGIHttpRequestHandler.
Georg Brandl <georg@python.org>
parents:
85671
diff
changeset
|
392 if self.nocgi_path: |
|
691b3df5036b
Transplant of rev 544b654d000c: directory traversal attack in CGIHttpRequestHandler.
Georg Brandl <georg@python.org>
parents:
85671
diff
changeset
|
393 os.remove(self.nocgi_path) |
|
65489
b0228af6db11
test_httpservers: skip CGI tests if Python executable path is not encodable
Victor Stinner <victor.stinner@haypocalc.com>
parents:
65075
diff
changeset
|
394 if self.file1_path: |
|
b0228af6db11
test_httpservers: skip CGI tests if Python executable path is not encodable
Victor Stinner <victor.stinner@haypocalc.com>
parents:
65075
diff
changeset
|
395 os.remove(self.file1_path) |
|
b0228af6db11
test_httpservers: skip CGI tests if Python executable path is not encodable
Victor Stinner <victor.stinner@haypocalc.com>
parents:
65075
diff
changeset
|
396 if self.file2_path: |
|
b0228af6db11
test_httpservers: skip CGI tests if Python executable path is not encodable
Victor Stinner <victor.stinner@haypocalc.com>
parents:
65075
diff
changeset
|
397 os.remove(self.file2_path) |
|
47278
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
398 os.rmdir(self.cgi_dir) |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
399 os.rmdir(self.parent_dir) |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
400 finally: |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
401 BaseTestCase.tearDown(self) |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
402 |
|
76248
fc001124a3ee
3.2 - Issue 10484 - Incorporate improvements to CGI module - Suggested by Glenn Linderman. Refactor code and tests
Senthil Kumaran <senthil@uthcode.com>
parents:
76220
diff
changeset
|
403 def test_url_collapse_path(self): |
|
fc001124a3ee
3.2 - Issue 10484 - Incorporate improvements to CGI module - Suggested by Glenn Linderman. Refactor code and tests
Senthil Kumaran <senthil@uthcode.com>
parents:
76220
diff
changeset
|
404 # verify tail is the last portion and head is the rest on proper urls |
|
53073
3b1b6142690a
Merged revisions 71303 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
48334
diff
changeset
|
405 test_vectors = { |
|
76248
fc001124a3ee
3.2 - Issue 10484 - Incorporate improvements to CGI module - Suggested by Glenn Linderman. Refactor code and tests
Senthil Kumaran <senthil@uthcode.com>
parents:
76220
diff
changeset
|
406 '': '//', |
|
53073
3b1b6142690a
Merged revisions 71303 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
48334
diff
changeset
|
407 '..': IndexError, |
|
3b1b6142690a
Merged revisions 71303 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
48334
diff
changeset
|
408 '/.//..': IndexError, |
|
76248
fc001124a3ee
3.2 - Issue 10484 - Incorporate improvements to CGI module - Suggested by Glenn Linderman. Refactor code and tests
Senthil Kumaran <senthil@uthcode.com>
parents:
76220
diff
changeset
|
409 '/': '//', |
|
fc001124a3ee
3.2 - Issue 10484 - Incorporate improvements to CGI module - Suggested by Glenn Linderman. Refactor code and tests
Senthil Kumaran <senthil@uthcode.com>
parents:
76220
diff
changeset
|
410 '//': '//', |
|
fc001124a3ee
3.2 - Issue 10484 - Incorporate improvements to CGI module - Suggested by Glenn Linderman. Refactor code and tests
Senthil Kumaran <senthil@uthcode.com>
parents:
76220
diff
changeset
|
411 '/\\': '//\\', |
|
fc001124a3ee
3.2 - Issue 10484 - Incorporate improvements to CGI module - Suggested by Glenn Linderman. Refactor code and tests
Senthil Kumaran <senthil@uthcode.com>
parents:
76220
diff
changeset
|
412 '/.//': '//', |
|
fc001124a3ee
3.2 - Issue 10484 - Incorporate improvements to CGI module - Suggested by Glenn Linderman. Refactor code and tests
Senthil Kumaran <senthil@uthcode.com>
parents:
76220
diff
changeset
|
413 'cgi-bin/file1.py': '/cgi-bin/file1.py', |
|
fc001124a3ee
3.2 - Issue 10484 - Incorporate improvements to CGI module - Suggested by Glenn Linderman. Refactor code and tests
Senthil Kumaran <senthil@uthcode.com>
parents:
76220
diff
changeset
|
414 '/cgi-bin/file1.py': '/cgi-bin/file1.py', |
|
fc001124a3ee
3.2 - Issue 10484 - Incorporate improvements to CGI module - Suggested by Glenn Linderman. Refactor code and tests
Senthil Kumaran <senthil@uthcode.com>
parents:
76220
diff
changeset
|
415 'a': '//a', |
|
fc001124a3ee
3.2 - Issue 10484 - Incorporate improvements to CGI module - Suggested by Glenn Linderman. Refactor code and tests
Senthil Kumaran <senthil@uthcode.com>
parents:
76220
diff
changeset
|
416 '/a': '//a', |
|
fc001124a3ee
3.2 - Issue 10484 - Incorporate improvements to CGI module - Suggested by Glenn Linderman. Refactor code and tests
Senthil Kumaran <senthil@uthcode.com>
parents:
76220
diff
changeset
|
417 '//a': '//a', |
|
fc001124a3ee
3.2 - Issue 10484 - Incorporate improvements to CGI module - Suggested by Glenn Linderman. Refactor code and tests
Senthil Kumaran <senthil@uthcode.com>
parents:
76220
diff
changeset
|
418 './a': '//a', |
|
fc001124a3ee
3.2 - Issue 10484 - Incorporate improvements to CGI module - Suggested by Glenn Linderman. Refactor code and tests
Senthil Kumaran <senthil@uthcode.com>
parents:
76220
diff
changeset
|
419 './C:/': '/C:/', |
|
fc001124a3ee
3.2 - Issue 10484 - Incorporate improvements to CGI module - Suggested by Glenn Linderman. Refactor code and tests
Senthil Kumaran <senthil@uthcode.com>
parents:
76220
diff
changeset
|
420 '/a/b': '/a/b', |
|
fc001124a3ee
3.2 - Issue 10484 - Incorporate improvements to CGI module - Suggested by Glenn Linderman. Refactor code and tests
Senthil Kumaran <senthil@uthcode.com>
parents:
76220
diff
changeset
|
421 '/a/b/': '/a/b/', |
|
fc001124a3ee
3.2 - Issue 10484 - Incorporate improvements to CGI module - Suggested by Glenn Linderman. Refactor code and tests
Senthil Kumaran <senthil@uthcode.com>
parents:
76220
diff
changeset
|
422 '/a/b/.': '/a/b/', |
|
fc001124a3ee
3.2 - Issue 10484 - Incorporate improvements to CGI module - Suggested by Glenn Linderman. Refactor code and tests
Senthil Kumaran <senthil@uthcode.com>
parents:
76220
diff
changeset
|
423 '/a/b/c/..': '/a/b/', |
|
fc001124a3ee
3.2 - Issue 10484 - Incorporate improvements to CGI module - Suggested by Glenn Linderman. Refactor code and tests
Senthil Kumaran <senthil@uthcode.com>
parents:
76220
diff
changeset
|
424 '/a/b/c/../d': '/a/b/d', |
|
fc001124a3ee
3.2 - Issue 10484 - Incorporate improvements to CGI module - Suggested by Glenn Linderman. Refactor code and tests
Senthil Kumaran <senthil@uthcode.com>
parents:
76220
diff
changeset
|
425 '/a/b/c/../d/e/../f': '/a/b/d/f', |
|
fc001124a3ee
3.2 - Issue 10484 - Incorporate improvements to CGI module - Suggested by Glenn Linderman. Refactor code and tests
Senthil Kumaran <senthil@uthcode.com>
parents:
76220
diff
changeset
|
426 '/a/b/c/../d/e/../../f': '/a/b/f', |
|
fc001124a3ee
3.2 - Issue 10484 - Incorporate improvements to CGI module - Suggested by Glenn Linderman. Refactor code and tests
Senthil Kumaran <senthil@uthcode.com>
parents:
76220
diff
changeset
|
427 '/a/b/c/../d/e/.././././..//f': '/a/b/f', |
|
53073
3b1b6142690a
Merged revisions 71303 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
48334
diff
changeset
|
428 '../a/b/c/../d/e/.././././..//f': IndexError, |
|
76248
fc001124a3ee
3.2 - Issue 10484 - Incorporate improvements to CGI module - Suggested by Glenn Linderman. Refactor code and tests
Senthil Kumaran <senthil@uthcode.com>
parents:
76220
diff
changeset
|
429 '/a/b/c/../d/e/../../../f': '/a/f', |
|
fc001124a3ee
3.2 - Issue 10484 - Incorporate improvements to CGI module - Suggested by Glenn Linderman. Refactor code and tests
Senthil Kumaran <senthil@uthcode.com>
parents:
76220
diff
changeset
|
430 '/a/b/c/../d/e/../../../../f': '//f', |
|
53073
3b1b6142690a
Merged revisions 71303 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
48334
diff
changeset
|
431 '/a/b/c/../d/e/../../../../../f': IndexError, |
|
76248
fc001124a3ee
3.2 - Issue 10484 - Incorporate improvements to CGI module - Suggested by Glenn Linderman. Refactor code and tests
Senthil Kumaran <senthil@uthcode.com>
parents:
76220
diff
changeset
|
432 '/a/b/c/../d/e/../../../../f/..': '//', |
|
fc001124a3ee
3.2 - Issue 10484 - Incorporate improvements to CGI module - Suggested by Glenn Linderman. Refactor code and tests
Senthil Kumaran <senthil@uthcode.com>
parents:
76220
diff
changeset
|
433 '/a/b/c/../d/e/../../../../f/../.': '//', |
|
53073
3b1b6142690a
Merged revisions 71303 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
48334
diff
changeset
|
434 } |
|
3b1b6142690a
Merged revisions 71303 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
48334
diff
changeset
|
435 for path, expected in test_vectors.items(): |
|
3b1b6142690a
Merged revisions 71303 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
48334
diff
changeset
|
436 if isinstance(expected, type) and issubclass(expected, Exception): |
|
3b1b6142690a
Merged revisions 71303 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
48334
diff
changeset
|
437 self.assertRaises(expected, |
|
76248
fc001124a3ee
3.2 - Issue 10484 - Incorporate improvements to CGI module - Suggested by Glenn Linderman. Refactor code and tests
Senthil Kumaran <senthil@uthcode.com>
parents:
76220
diff
changeset
|
438 server._url_collapse_path, path) |
|
53073
3b1b6142690a
Merged revisions 71303 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
48334
diff
changeset
|
439 else: |
|
76248
fc001124a3ee
3.2 - Issue 10484 - Incorporate improvements to CGI module - Suggested by Glenn Linderman. Refactor code and tests
Senthil Kumaran <senthil@uthcode.com>
parents:
76220
diff
changeset
|
440 actual = server._url_collapse_path(path) |
|
66340
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
65076
diff
changeset
|
441 self.assertEqual(expected, actual, |
|
59728
4587e1f74ed8
Merged revisions 79100 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
56871
diff
changeset
|
442 msg='path = %r\nGot: %r\nWanted: %r' % |
|
4587e1f74ed8
Merged revisions 79100 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
56871
diff
changeset
|
443 (path, actual, expected)) |
|
53073
3b1b6142690a
Merged revisions 71303 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
48334
diff
changeset
|
444 |
|
47278
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
445 def test_headers_and_content(self): |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
446 res = self.request('/cgi-bin/file1.py') |
|
78433
bc4fdb758b8c
Fix CGI tests to take into account the platform's line ending (issue #13119)
Antoine Pitrou <solipsis@pitrou.net>
parents:
76248
diff
changeset
|
447 self.assertEqual((b'Hello World' + self.linesep, 'text/html', 200), |
|
59728
4587e1f74ed8
Merged revisions 79100 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
56871
diff
changeset
|
448 (res.read(), res.getheader('Content-type'), res.status)) |
|
47278
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
449 |
|
87169
691b3df5036b
Transplant of rev 544b654d000c: directory traversal attack in CGIHttpRequestHandler.
Georg Brandl <georg@python.org>
parents:
85671
diff
changeset
|
450 def test_issue19435(self): |
|
691b3df5036b
Transplant of rev 544b654d000c: directory traversal attack in CGIHttpRequestHandler.
Georg Brandl <georg@python.org>
parents:
85671
diff
changeset
|
451 res = self.request('///////////nocgi.py/../cgi-bin/nothere.sh') |
|
691b3df5036b
Transplant of rev 544b654d000c: directory traversal attack in CGIHttpRequestHandler.
Georg Brandl <georg@python.org>
parents:
85671
diff
changeset
|
452 self.assertEqual(res.status, 404) |
|
691b3df5036b
Transplant of rev 544b654d000c: directory traversal attack in CGIHttpRequestHandler.
Georg Brandl <georg@python.org>
parents:
85671
diff
changeset
|
453 |
|
47278
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
454 def test_post(self): |
|
48334
5a416a6417d3
Make a new urllib package .
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
47635
diff
changeset
|
455 params = urllib.parse.urlencode( |
|
5a416a6417d3
Make a new urllib package .
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
47635
diff
changeset
|
456 {'spam' : 1, 'eggs' : 'python', 'bacon' : 123456}) |
|
47278
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
457 headers = {'Content-type' : 'application/x-www-form-urlencoded'} |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
458 res = self.request('/cgi-bin/file2.py', 'POST', params, headers) |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
459 |
|
78433
bc4fdb758b8c
Fix CGI tests to take into account the platform's line ending (issue #13119)
Antoine Pitrou <solipsis@pitrou.net>
parents:
76248
diff
changeset
|
460 self.assertEqual(res.read(), b'1, python, 123456' + self.linesep) |
|
47278
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
461 |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
462 def test_invaliduri(self): |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
463 res = self.request('/cgi-bin/invalid') |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
464 res.read() |
|
66340
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
65076
diff
changeset
|
465 self.assertEqual(res.status, 404) |
|
47278
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
466 |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
467 def test_authorization(self): |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
468 headers = {b'Authorization' : b'Basic ' + |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
469 base64.b64encode(b'username:pass')} |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
470 res = self.request('/cgi-bin/file1.py', 'GET', headers=headers) |
|
78433
bc4fdb758b8c
Fix CGI tests to take into account the platform's line ending (issue #13119)
Antoine Pitrou <solipsis@pitrou.net>
parents:
76248
diff
changeset
|
471 self.assertEqual((b'Hello World' + self.linesep, 'text/html', 200), |
|
59728
4587e1f74ed8
Merged revisions 79100 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
56871
diff
changeset
|
472 (res.read(), res.getheader('Content-type'), res.status)) |
|
47278
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
473 |
|
53073
3b1b6142690a
Merged revisions 71303 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
48334
diff
changeset
|
474 def test_no_leading_slash(self): |
|
3b1b6142690a
Merged revisions 71303 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
48334
diff
changeset
|
475 # http://bugs.python.org/issue2254 |
|
3b1b6142690a
Merged revisions 71303 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
48334
diff
changeset
|
476 res = self.request('cgi-bin/file1.py') |
|
78433
bc4fdb758b8c
Fix CGI tests to take into account the platform's line ending (issue #13119)
Antoine Pitrou <solipsis@pitrou.net>
parents:
76248
diff
changeset
|
477 self.assertEqual((b'Hello World' + self.linesep, 'text/html', 200), |
|
53073
3b1b6142690a
Merged revisions 71303 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
48334
diff
changeset
|
478 (res.read(), res.getheader('Content-type'), res.status)) |
|
3b1b6142690a
Merged revisions 71303 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
48334
diff
changeset
|
479 |
|
65076
945a55d4e73e
Merged revisions 85202 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents:
65029
diff
changeset
|
480 def test_os_environ_is_not_altered(self): |
|
945a55d4e73e
Merged revisions 85202 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents:
65029
diff
changeset
|
481 signature = "Test CGI Server" |
|
945a55d4e73e
Merged revisions 85202 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents:
65029
diff
changeset
|
482 os.environ['SERVER_SOFTWARE'] = signature |
|
945a55d4e73e
Merged revisions 85202 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents:
65029
diff
changeset
|
483 res = self.request('/cgi-bin/file1.py') |
|
78433
bc4fdb758b8c
Fix CGI tests to take into account the platform's line ending (issue #13119)
Antoine Pitrou <solipsis@pitrou.net>
parents:
76248
diff
changeset
|
484 self.assertEqual((b'Hello World' + self.linesep, 'text/html', 200), |
|
65076
945a55d4e73e
Merged revisions 85202 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents:
65029
diff
changeset
|
485 (res.read(), res.getheader('Content-type'), res.status)) |
|
945a55d4e73e
Merged revisions 85202 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents:
65029
diff
changeset
|
486 self.assertEqual(os.environ['SERVER_SOFTWARE'], signature) |
|
47278
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
487 |
|
66971
dc32788f0e4e
Merged revisions 87317 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
66340
diff
changeset
|
488 |
|
63558
58c22d30f749
Move test_SimpleHTTPServer into test_httpservers.
Georg Brandl <georg@python.org>
parents:
62874
diff
changeset
|
489 class SocketlessRequestHandler(SimpleHTTPRequestHandler): |
|
58c22d30f749
Move test_SimpleHTTPServer into test_httpservers.
Georg Brandl <georg@python.org>
parents:
62874
diff
changeset
|
490 def __init__(self): |
|
65028
7add45bcc9c6
Issue1491 - BaseHTTPServer incorrectly implements response code 100
Senthil Kumaran <orsenthil@gmail.com>
parents:
63558
diff
changeset
|
491 self.get_called = False |
|
7add45bcc9c6
Issue1491 - BaseHTTPServer incorrectly implements response code 100
Senthil Kumaran <orsenthil@gmail.com>
parents:
63558
diff
changeset
|
492 self.protocol_version = "HTTP/1.1" |
|
7add45bcc9c6
Issue1491 - BaseHTTPServer incorrectly implements response code 100
Senthil Kumaran <orsenthil@gmail.com>
parents:
63558
diff
changeset
|
493 |
|
7add45bcc9c6
Issue1491 - BaseHTTPServer incorrectly implements response code 100
Senthil Kumaran <orsenthil@gmail.com>
parents:
63558
diff
changeset
|
494 def do_GET(self): |
|
7add45bcc9c6
Issue1491 - BaseHTTPServer incorrectly implements response code 100
Senthil Kumaran <orsenthil@gmail.com>
parents:
63558
diff
changeset
|
495 self.get_called = True |
|
7add45bcc9c6
Issue1491 - BaseHTTPServer incorrectly implements response code 100
Senthil Kumaran <orsenthil@gmail.com>
parents:
63558
diff
changeset
|
496 self.send_response(200) |
|
7add45bcc9c6
Issue1491 - BaseHTTPServer incorrectly implements response code 100
Senthil Kumaran <orsenthil@gmail.com>
parents:
63558
diff
changeset
|
497 self.send_header('Content-Type', 'text/html') |
|
7add45bcc9c6
Issue1491 - BaseHTTPServer incorrectly implements response code 100
Senthil Kumaran <orsenthil@gmail.com>
parents:
63558
diff
changeset
|
498 self.end_headers() |
|
7add45bcc9c6
Issue1491 - BaseHTTPServer incorrectly implements response code 100
Senthil Kumaran <orsenthil@gmail.com>
parents:
63558
diff
changeset
|
499 self.wfile.write(b'<html><body>Data</body></html>\r\n') |
|
7add45bcc9c6
Issue1491 - BaseHTTPServer incorrectly implements response code 100
Senthil Kumaran <orsenthil@gmail.com>
parents:
63558
diff
changeset
|
500 |
|
7add45bcc9c6
Issue1491 - BaseHTTPServer incorrectly implements response code 100
Senthil Kumaran <orsenthil@gmail.com>
parents:
63558
diff
changeset
|
501 def log_message(self, format, *args): |
|
63558
58c22d30f749
Move test_SimpleHTTPServer into test_httpservers.
Georg Brandl <georg@python.org>
parents:
62874
diff
changeset
|
502 pass |
|
58c22d30f749
Move test_SimpleHTTPServer into test_httpservers.
Georg Brandl <georg@python.org>
parents:
62874
diff
changeset
|
503 |
|
65028
7add45bcc9c6
Issue1491 - BaseHTTPServer incorrectly implements response code 100
Senthil Kumaran <orsenthil@gmail.com>
parents:
63558
diff
changeset
|
504 class RejectingSocketlessRequestHandler(SocketlessRequestHandler): |
|
7add45bcc9c6
Issue1491 - BaseHTTPServer incorrectly implements response code 100
Senthil Kumaran <orsenthil@gmail.com>
parents:
63558
diff
changeset
|
505 def handle_expect_100(self): |
|
7add45bcc9c6
Issue1491 - BaseHTTPServer incorrectly implements response code 100
Senthil Kumaran <orsenthil@gmail.com>
parents:
63558
diff
changeset
|
506 self.send_error(417) |
|
7add45bcc9c6
Issue1491 - BaseHTTPServer incorrectly implements response code 100
Senthil Kumaran <orsenthil@gmail.com>
parents:
63558
diff
changeset
|
507 return False |
|
7add45bcc9c6
Issue1491 - BaseHTTPServer incorrectly implements response code 100
Senthil Kumaran <orsenthil@gmail.com>
parents:
63558
diff
changeset
|
508 |
|
69981
25298224cb25
Issue #3709: a flush_headers method to BaseHTTPRequestHandler which manages the
Senthil Kumaran <senthil@uthcode.com>
parents:
68776
diff
changeset
|
509 |
|
25298224cb25
Issue #3709: a flush_headers method to BaseHTTPRequestHandler which manages the
Senthil Kumaran <senthil@uthcode.com>
parents:
68776
diff
changeset
|
510 class AuditableBytesIO: |
|
25298224cb25
Issue #3709: a flush_headers method to BaseHTTPRequestHandler which manages the
Senthil Kumaran <senthil@uthcode.com>
parents:
68776
diff
changeset
|
511 |
|
25298224cb25
Issue #3709: a flush_headers method to BaseHTTPRequestHandler which manages the
Senthil Kumaran <senthil@uthcode.com>
parents:
68776
diff
changeset
|
512 def __init__(self): |
|
25298224cb25
Issue #3709: a flush_headers method to BaseHTTPRequestHandler which manages the
Senthil Kumaran <senthil@uthcode.com>
parents:
68776
diff
changeset
|
513 self.datas = [] |
|
25298224cb25
Issue #3709: a flush_headers method to BaseHTTPRequestHandler which manages the
Senthil Kumaran <senthil@uthcode.com>
parents:
68776
diff
changeset
|
514 |
|
25298224cb25
Issue #3709: a flush_headers method to BaseHTTPRequestHandler which manages the
Senthil Kumaran <senthil@uthcode.com>
parents:
68776
diff
changeset
|
515 def write(self, data): |
|
25298224cb25
Issue #3709: a flush_headers method to BaseHTTPRequestHandler which manages the
Senthil Kumaran <senthil@uthcode.com>
parents:
68776
diff
changeset
|
516 self.datas.append(data) |
|
25298224cb25
Issue #3709: a flush_headers method to BaseHTTPRequestHandler which manages the
Senthil Kumaran <senthil@uthcode.com>
parents:
68776
diff
changeset
|
517 |
|
25298224cb25
Issue #3709: a flush_headers method to BaseHTTPRequestHandler which manages the
Senthil Kumaran <senthil@uthcode.com>
parents:
68776
diff
changeset
|
518 def getData(self): |
|
25298224cb25
Issue #3709: a flush_headers method to BaseHTTPRequestHandler which manages the
Senthil Kumaran <senthil@uthcode.com>
parents:
68776
diff
changeset
|
519 return b''.join(self.datas) |
|
25298224cb25
Issue #3709: a flush_headers method to BaseHTTPRequestHandler which manages the
Senthil Kumaran <senthil@uthcode.com>
parents:
68776
diff
changeset
|
520 |
|
25298224cb25
Issue #3709: a flush_headers method to BaseHTTPRequestHandler which manages the
Senthil Kumaran <senthil@uthcode.com>
parents:
68776
diff
changeset
|
521 @property |
|
25298224cb25
Issue #3709: a flush_headers method to BaseHTTPRequestHandler which manages the
Senthil Kumaran <senthil@uthcode.com>
parents:
68776
diff
changeset
|
522 def numWrites(self): |
|
25298224cb25
Issue #3709: a flush_headers method to BaseHTTPRequestHandler which manages the
Senthil Kumaran <senthil@uthcode.com>
parents:
68776
diff
changeset
|
523 return len(self.datas) |
|
25298224cb25
Issue #3709: a flush_headers method to BaseHTTPRequestHandler which manages the
Senthil Kumaran <senthil@uthcode.com>
parents:
68776
diff
changeset
|
524 |
|
25298224cb25
Issue #3709: a flush_headers method to BaseHTTPRequestHandler which manages the
Senthil Kumaran <senthil@uthcode.com>
parents:
68776
diff
changeset
|
525 |
|
65028
7add45bcc9c6
Issue1491 - BaseHTTPServer incorrectly implements response code 100
Senthil Kumaran <orsenthil@gmail.com>
parents:
63558
diff
changeset
|
526 class BaseHTTPRequestHandlerTestCase(unittest.TestCase): |
| 68586 | 527 """Test the functionality of the BaseHTTPServer. |
|
65028
7add45bcc9c6
Issue1491 - BaseHTTPServer incorrectly implements response code 100
Senthil Kumaran <orsenthil@gmail.com>
parents:
63558
diff
changeset
|
528 |
|
7add45bcc9c6
Issue1491 - BaseHTTPServer incorrectly implements response code 100
Senthil Kumaran <orsenthil@gmail.com>
parents:
63558
diff
changeset
|
529 Test the support for the Expect 100-continue header. |
|
7add45bcc9c6
Issue1491 - BaseHTTPServer incorrectly implements response code 100
Senthil Kumaran <orsenthil@gmail.com>
parents:
63558
diff
changeset
|
530 """ |
|
7add45bcc9c6
Issue1491 - BaseHTTPServer incorrectly implements response code 100
Senthil Kumaran <orsenthil@gmail.com>
parents:
63558
diff
changeset
|
531 |
|
7add45bcc9c6
Issue1491 - BaseHTTPServer incorrectly implements response code 100
Senthil Kumaran <orsenthil@gmail.com>
parents:
63558
diff
changeset
|
532 HTTPResponseMatch = re.compile(b'HTTP/1.[0-9]+ 200 OK') |
|
7add45bcc9c6
Issue1491 - BaseHTTPServer incorrectly implements response code 100
Senthil Kumaran <orsenthil@gmail.com>
parents:
63558
diff
changeset
|
533 |
|
7add45bcc9c6
Issue1491 - BaseHTTPServer incorrectly implements response code 100
Senthil Kumaran <orsenthil@gmail.com>
parents:
63558
diff
changeset
|
534 def setUp (self): |
|
7add45bcc9c6
Issue1491 - BaseHTTPServer incorrectly implements response code 100
Senthil Kumaran <orsenthil@gmail.com>
parents:
63558
diff
changeset
|
535 self.handler = SocketlessRequestHandler() |
|
7add45bcc9c6
Issue1491 - BaseHTTPServer incorrectly implements response code 100
Senthil Kumaran <orsenthil@gmail.com>
parents:
63558
diff
changeset
|
536 |
|
7add45bcc9c6
Issue1491 - BaseHTTPServer incorrectly implements response code 100
Senthil Kumaran <orsenthil@gmail.com>
parents:
63558
diff
changeset
|
537 def send_typical_request(self, message): |
|
7add45bcc9c6
Issue1491 - BaseHTTPServer incorrectly implements response code 100
Senthil Kumaran <orsenthil@gmail.com>
parents:
63558
diff
changeset
|
538 input = BytesIO(message) |
|
7add45bcc9c6
Issue1491 - BaseHTTPServer incorrectly implements response code 100
Senthil Kumaran <orsenthil@gmail.com>
parents:
63558
diff
changeset
|
539 output = BytesIO() |
|
7add45bcc9c6
Issue1491 - BaseHTTPServer incorrectly implements response code 100
Senthil Kumaran <orsenthil@gmail.com>
parents:
63558
diff
changeset
|
540 self.handler.rfile = input |
|
7add45bcc9c6
Issue1491 - BaseHTTPServer incorrectly implements response code 100
Senthil Kumaran <orsenthil@gmail.com>
parents:
63558
diff
changeset
|
541 self.handler.wfile = output |
|
7add45bcc9c6
Issue1491 - BaseHTTPServer incorrectly implements response code 100
Senthil Kumaran <orsenthil@gmail.com>
parents:
63558
diff
changeset
|
542 self.handler.handle_one_request() |
|
7add45bcc9c6
Issue1491 - BaseHTTPServer incorrectly implements response code 100
Senthil Kumaran <orsenthil@gmail.com>
parents:
63558
diff
changeset
|
543 output.seek(0) |
|
7add45bcc9c6
Issue1491 - BaseHTTPServer incorrectly implements response code 100
Senthil Kumaran <orsenthil@gmail.com>
parents:
63558
diff
changeset
|
544 return output.readlines() |
|
7add45bcc9c6
Issue1491 - BaseHTTPServer incorrectly implements response code 100
Senthil Kumaran <orsenthil@gmail.com>
parents:
63558
diff
changeset
|
545 |
|
7add45bcc9c6
Issue1491 - BaseHTTPServer incorrectly implements response code 100
Senthil Kumaran <orsenthil@gmail.com>
parents:
63558
diff
changeset
|
546 def verify_get_called(self): |
|
7add45bcc9c6
Issue1491 - BaseHTTPServer incorrectly implements response code 100
Senthil Kumaran <orsenthil@gmail.com>
parents:
63558
diff
changeset
|
547 self.assertTrue(self.handler.get_called) |
|
7add45bcc9c6
Issue1491 - BaseHTTPServer incorrectly implements response code 100
Senthil Kumaran <orsenthil@gmail.com>
parents:
63558
diff
changeset
|
548 |
|
7add45bcc9c6
Issue1491 - BaseHTTPServer incorrectly implements response code 100
Senthil Kumaran <orsenthil@gmail.com>
parents:
63558
diff
changeset
|
549 def verify_expected_headers(self, headers): |
|
7add45bcc9c6
Issue1491 - BaseHTTPServer incorrectly implements response code 100
Senthil Kumaran <orsenthil@gmail.com>
parents:
63558
diff
changeset
|
550 for fieldName in b'Server: ', b'Date: ', b'Content-Type: ': |
|
7add45bcc9c6
Issue1491 - BaseHTTPServer incorrectly implements response code 100
Senthil Kumaran <orsenthil@gmail.com>
parents:
63558
diff
changeset
|
551 self.assertEqual(sum(h.startswith(fieldName) for h in headers), 1) |
|
7add45bcc9c6
Issue1491 - BaseHTTPServer incorrectly implements response code 100
Senthil Kumaran <orsenthil@gmail.com>
parents:
63558
diff
changeset
|
552 |
|
7add45bcc9c6
Issue1491 - BaseHTTPServer incorrectly implements response code 100
Senthil Kumaran <orsenthil@gmail.com>
parents:
63558
diff
changeset
|
553 def verify_http_server_response(self, response): |
|
7add45bcc9c6
Issue1491 - BaseHTTPServer incorrectly implements response code 100
Senthil Kumaran <orsenthil@gmail.com>
parents:
63558
diff
changeset
|
554 match = self.HTTPResponseMatch.search(response) |
|
7add45bcc9c6
Issue1491 - BaseHTTPServer incorrectly implements response code 100
Senthil Kumaran <orsenthil@gmail.com>
parents:
63558
diff
changeset
|
555 self.assertTrue(match is not None) |
|
7add45bcc9c6
Issue1491 - BaseHTTPServer incorrectly implements response code 100
Senthil Kumaran <orsenthil@gmail.com>
parents:
63558
diff
changeset
|
556 |
|
7add45bcc9c6
Issue1491 - BaseHTTPServer incorrectly implements response code 100
Senthil Kumaran <orsenthil@gmail.com>
parents:
63558
diff
changeset
|
557 def test_http_1_1(self): |
|
7add45bcc9c6
Issue1491 - BaseHTTPServer incorrectly implements response code 100
Senthil Kumaran <orsenthil@gmail.com>
parents:
63558
diff
changeset
|
558 result = self.send_typical_request(b'GET / HTTP/1.1\r\n\r\n') |
|
7add45bcc9c6
Issue1491 - BaseHTTPServer incorrectly implements response code 100
Senthil Kumaran <orsenthil@gmail.com>
parents:
63558
diff
changeset
|
559 self.verify_http_server_response(result[0]) |
|
7add45bcc9c6
Issue1491 - BaseHTTPServer incorrectly implements response code 100
Senthil Kumaran <orsenthil@gmail.com>
parents:
63558
diff
changeset
|
560 self.verify_expected_headers(result[1:-1]) |
|
7add45bcc9c6
Issue1491 - BaseHTTPServer incorrectly implements response code 100
Senthil Kumaran <orsenthil@gmail.com>
parents:
63558
diff
changeset
|
561 self.verify_get_called() |
|
7add45bcc9c6
Issue1491 - BaseHTTPServer incorrectly implements response code 100
Senthil Kumaran <orsenthil@gmail.com>
parents:
63558
diff
changeset
|
562 self.assertEqual(result[-1], b'<html><body>Data</body></html>\r\n') |
|
7add45bcc9c6
Issue1491 - BaseHTTPServer incorrectly implements response code 100
Senthil Kumaran <orsenthil@gmail.com>
parents:
63558
diff
changeset
|
563 |
|
7add45bcc9c6
Issue1491 - BaseHTTPServer incorrectly implements response code 100
Senthil Kumaran <orsenthil@gmail.com>
parents:
63558
diff
changeset
|
564 def test_http_1_0(self): |
|
7add45bcc9c6
Issue1491 - BaseHTTPServer incorrectly implements response code 100
Senthil Kumaran <orsenthil@gmail.com>
parents:
63558
diff
changeset
|
565 result = self.send_typical_request(b'GET / HTTP/1.0\r\n\r\n') |
|
7add45bcc9c6
Issue1491 - BaseHTTPServer incorrectly implements response code 100
Senthil Kumaran <orsenthil@gmail.com>
parents:
63558
diff
changeset
|
566 self.verify_http_server_response(result[0]) |
|
7add45bcc9c6
Issue1491 - BaseHTTPServer incorrectly implements response code 100
Senthil Kumaran <orsenthil@gmail.com>
parents:
63558
diff
changeset
|
567 self.verify_expected_headers(result[1:-1]) |
|
7add45bcc9c6
Issue1491 - BaseHTTPServer incorrectly implements response code 100
Senthil Kumaran <orsenthil@gmail.com>
parents:
63558
diff
changeset
|
568 self.verify_get_called() |
|
7add45bcc9c6
Issue1491 - BaseHTTPServer incorrectly implements response code 100
Senthil Kumaran <orsenthil@gmail.com>
parents:
63558
diff
changeset
|
569 self.assertEqual(result[-1], b'<html><body>Data</body></html>\r\n') |
|
7add45bcc9c6
Issue1491 - BaseHTTPServer incorrectly implements response code 100
Senthil Kumaran <orsenthil@gmail.com>
parents:
63558
diff
changeset
|
570 |
|
7add45bcc9c6
Issue1491 - BaseHTTPServer incorrectly implements response code 100
Senthil Kumaran <orsenthil@gmail.com>
parents:
63558
diff
changeset
|
571 def test_http_0_9(self): |
|
7add45bcc9c6
Issue1491 - BaseHTTPServer incorrectly implements response code 100
Senthil Kumaran <orsenthil@gmail.com>
parents:
63558
diff
changeset
|
572 result = self.send_typical_request(b'GET / HTTP/0.9\r\n\r\n') |
|
7add45bcc9c6
Issue1491 - BaseHTTPServer incorrectly implements response code 100
Senthil Kumaran <orsenthil@gmail.com>
parents:
63558
diff
changeset
|
573 self.assertEqual(len(result), 1) |
|
7add45bcc9c6
Issue1491 - BaseHTTPServer incorrectly implements response code 100
Senthil Kumaran <orsenthil@gmail.com>
parents:
63558
diff
changeset
|
574 self.assertEqual(result[0], b'<html><body>Data</body></html>\r\n') |
|
7add45bcc9c6
Issue1491 - BaseHTTPServer incorrectly implements response code 100
Senthil Kumaran <orsenthil@gmail.com>
parents:
63558
diff
changeset
|
575 self.verify_get_called() |
|
7add45bcc9c6
Issue1491 - BaseHTTPServer incorrectly implements response code 100
Senthil Kumaran <orsenthil@gmail.com>
parents:
63558
diff
changeset
|
576 |
|
7add45bcc9c6
Issue1491 - BaseHTTPServer incorrectly implements response code 100
Senthil Kumaran <orsenthil@gmail.com>
parents:
63558
diff
changeset
|
577 def test_with_continue_1_0(self): |
|
7add45bcc9c6
Issue1491 - BaseHTTPServer incorrectly implements response code 100
Senthil Kumaran <orsenthil@gmail.com>
parents:
63558
diff
changeset
|
578 result = self.send_typical_request(b'GET / HTTP/1.0\r\nExpect: 100-continue\r\n\r\n') |
|
7add45bcc9c6
Issue1491 - BaseHTTPServer incorrectly implements response code 100
Senthil Kumaran <orsenthil@gmail.com>
parents:
63558
diff
changeset
|
579 self.verify_http_server_response(result[0]) |
|
7add45bcc9c6
Issue1491 - BaseHTTPServer incorrectly implements response code 100
Senthil Kumaran <orsenthil@gmail.com>
parents:
63558
diff
changeset
|
580 self.verify_expected_headers(result[1:-1]) |
|
7add45bcc9c6
Issue1491 - BaseHTTPServer incorrectly implements response code 100
Senthil Kumaran <orsenthil@gmail.com>
parents:
63558
diff
changeset
|
581 self.verify_get_called() |
|
7add45bcc9c6
Issue1491 - BaseHTTPServer incorrectly implements response code 100
Senthil Kumaran <orsenthil@gmail.com>
parents:
63558
diff
changeset
|
582 self.assertEqual(result[-1], b'<html><body>Data</body></html>\r\n') |
|
7add45bcc9c6
Issue1491 - BaseHTTPServer incorrectly implements response code 100
Senthil Kumaran <orsenthil@gmail.com>
parents:
63558
diff
changeset
|
583 |
|
7add45bcc9c6
Issue1491 - BaseHTTPServer incorrectly implements response code 100
Senthil Kumaran <orsenthil@gmail.com>
parents:
63558
diff
changeset
|
584 def test_with_continue_1_1(self): |
|
7add45bcc9c6
Issue1491 - BaseHTTPServer incorrectly implements response code 100
Senthil Kumaran <orsenthil@gmail.com>
parents:
63558
diff
changeset
|
585 result = self.send_typical_request(b'GET / HTTP/1.1\r\nExpect: 100-continue\r\n\r\n') |
|
7add45bcc9c6
Issue1491 - BaseHTTPServer incorrectly implements response code 100
Senthil Kumaran <orsenthil@gmail.com>
parents:
63558
diff
changeset
|
586 self.assertEqual(result[0], b'HTTP/1.1 100 Continue\r\n') |
|
7add45bcc9c6
Issue1491 - BaseHTTPServer incorrectly implements response code 100
Senthil Kumaran <orsenthil@gmail.com>
parents:
63558
diff
changeset
|
587 self.assertEqual(result[1], b'HTTP/1.1 200 OK\r\n') |
|
7add45bcc9c6
Issue1491 - BaseHTTPServer incorrectly implements response code 100
Senthil Kumaran <orsenthil@gmail.com>
parents:
63558
diff
changeset
|
588 self.verify_expected_headers(result[2:-1]) |
|
7add45bcc9c6
Issue1491 - BaseHTTPServer incorrectly implements response code 100
Senthil Kumaran <orsenthil@gmail.com>
parents:
63558
diff
changeset
|
589 self.verify_get_called() |
|
7add45bcc9c6
Issue1491 - BaseHTTPServer incorrectly implements response code 100
Senthil Kumaran <orsenthil@gmail.com>
parents:
63558
diff
changeset
|
590 self.assertEqual(result[-1], b'<html><body>Data</body></html>\r\n') |
|
7add45bcc9c6
Issue1491 - BaseHTTPServer incorrectly implements response code 100
Senthil Kumaran <orsenthil@gmail.com>
parents:
63558
diff
changeset
|
591 |
|
69981
25298224cb25
Issue #3709: a flush_headers method to BaseHTTPRequestHandler which manages the
Senthil Kumaran <senthil@uthcode.com>
parents:
68776
diff
changeset
|
592 def test_header_buffering_of_send_error(self): |
|
66351
9717153d558d
Fix issue3709 - BaseHTTPRequestHandler will buffer the headers and write only on end_headers call.
Senthil Kumaran <orsenthil@gmail.com>
parents:
65788
diff
changeset
|
593 |
|
69981
25298224cb25
Issue #3709: a flush_headers method to BaseHTTPRequestHandler which manages the
Senthil Kumaran <senthil@uthcode.com>
parents:
68776
diff
changeset
|
594 input = BytesIO(b'GET / HTTP/1.1\r\n\r\n') |
|
25298224cb25
Issue #3709: a flush_headers method to BaseHTTPRequestHandler which manages the
Senthil Kumaran <senthil@uthcode.com>
parents:
68776
diff
changeset
|
595 output = AuditableBytesIO() |
|
25298224cb25
Issue #3709: a flush_headers method to BaseHTTPRequestHandler which manages the
Senthil Kumaran <senthil@uthcode.com>
parents:
68776
diff
changeset
|
596 handler = SocketlessRequestHandler() |
|
25298224cb25
Issue #3709: a flush_headers method to BaseHTTPRequestHandler which manages the
Senthil Kumaran <senthil@uthcode.com>
parents:
68776
diff
changeset
|
597 handler.rfile = input |
|
25298224cb25
Issue #3709: a flush_headers method to BaseHTTPRequestHandler which manages the
Senthil Kumaran <senthil@uthcode.com>
parents:
68776
diff
changeset
|
598 handler.wfile = output |
|
25298224cb25
Issue #3709: a flush_headers method to BaseHTTPRequestHandler which manages the
Senthil Kumaran <senthil@uthcode.com>
parents:
68776
diff
changeset
|
599 handler.request_version = 'HTTP/1.1' |
|
25298224cb25
Issue #3709: a flush_headers method to BaseHTTPRequestHandler which manages the
Senthil Kumaran <senthil@uthcode.com>
parents:
68776
diff
changeset
|
600 handler.requestline = '' |
|
25298224cb25
Issue #3709: a flush_headers method to BaseHTTPRequestHandler which manages the
Senthil Kumaran <senthil@uthcode.com>
parents:
68776
diff
changeset
|
601 handler.command = None |
|
25298224cb25
Issue #3709: a flush_headers method to BaseHTTPRequestHandler which manages the
Senthil Kumaran <senthil@uthcode.com>
parents:
68776
diff
changeset
|
602 |
|
25298224cb25
Issue #3709: a flush_headers method to BaseHTTPRequestHandler which manages the
Senthil Kumaran <senthil@uthcode.com>
parents:
68776
diff
changeset
|
603 handler.send_error(418) |
|
25298224cb25
Issue #3709: a flush_headers method to BaseHTTPRequestHandler which manages the
Senthil Kumaran <senthil@uthcode.com>
parents:
68776
diff
changeset
|
604 self.assertEqual(output.numWrites, 2) |
|
25298224cb25
Issue #3709: a flush_headers method to BaseHTTPRequestHandler which manages the
Senthil Kumaran <senthil@uthcode.com>
parents:
68776
diff
changeset
|
605 |
|
25298224cb25
Issue #3709: a flush_headers method to BaseHTTPRequestHandler which manages the
Senthil Kumaran <senthil@uthcode.com>
parents:
68776
diff
changeset
|
606 def test_header_buffering_of_send_response_only(self): |
|
66351
9717153d558d
Fix issue3709 - BaseHTTPRequestHandler will buffer the headers and write only on end_headers call.
Senthil Kumaran <orsenthil@gmail.com>
parents:
65788
diff
changeset
|
607 |
|
9717153d558d
Fix issue3709 - BaseHTTPRequestHandler will buffer the headers and write only on end_headers call.
Senthil Kumaran <orsenthil@gmail.com>
parents:
65788
diff
changeset
|
608 input = BytesIO(b'GET / HTTP/1.1\r\n\r\n') |
|
69981
25298224cb25
Issue #3709: a flush_headers method to BaseHTTPRequestHandler which manages the
Senthil Kumaran <senthil@uthcode.com>
parents:
68776
diff
changeset
|
609 output = AuditableBytesIO() |
|
25298224cb25
Issue #3709: a flush_headers method to BaseHTTPRequestHandler which manages the
Senthil Kumaran <senthil@uthcode.com>
parents:
68776
diff
changeset
|
610 handler = SocketlessRequestHandler() |
|
25298224cb25
Issue #3709: a flush_headers method to BaseHTTPRequestHandler which manages the
Senthil Kumaran <senthil@uthcode.com>
parents:
68776
diff
changeset
|
611 handler.rfile = input |
|
25298224cb25
Issue #3709: a flush_headers method to BaseHTTPRequestHandler which manages the
Senthil Kumaran <senthil@uthcode.com>
parents:
68776
diff
changeset
|
612 handler.wfile = output |
|
25298224cb25
Issue #3709: a flush_headers method to BaseHTTPRequestHandler which manages the
Senthil Kumaran <senthil@uthcode.com>
parents:
68776
diff
changeset
|
613 handler.request_version = 'HTTP/1.1' |
|
25298224cb25
Issue #3709: a flush_headers method to BaseHTTPRequestHandler which manages the
Senthil Kumaran <senthil@uthcode.com>
parents:
68776
diff
changeset
|
614 |
|
25298224cb25
Issue #3709: a flush_headers method to BaseHTTPRequestHandler which manages the
Senthil Kumaran <senthil@uthcode.com>
parents:
68776
diff
changeset
|
615 handler.send_response_only(418) |
|
25298224cb25
Issue #3709: a flush_headers method to BaseHTTPRequestHandler which manages the
Senthil Kumaran <senthil@uthcode.com>
parents:
68776
diff
changeset
|
616 self.assertEqual(output.numWrites, 0) |
|
25298224cb25
Issue #3709: a flush_headers method to BaseHTTPRequestHandler which manages the
Senthil Kumaran <senthil@uthcode.com>
parents:
68776
diff
changeset
|
617 handler.end_headers() |
|
25298224cb25
Issue #3709: a flush_headers method to BaseHTTPRequestHandler which manages the
Senthil Kumaran <senthil@uthcode.com>
parents:
68776
diff
changeset
|
618 self.assertEqual(output.numWrites, 1) |
|
25298224cb25
Issue #3709: a flush_headers method to BaseHTTPRequestHandler which manages the
Senthil Kumaran <senthil@uthcode.com>
parents:
68776
diff
changeset
|
619 |
|
25298224cb25
Issue #3709: a flush_headers method to BaseHTTPRequestHandler which manages the
Senthil Kumaran <senthil@uthcode.com>
parents:
68776
diff
changeset
|
620 def test_header_buffering_of_send_header(self): |
|
66351
9717153d558d
Fix issue3709 - BaseHTTPRequestHandler will buffer the headers and write only on end_headers call.
Senthil Kumaran <orsenthil@gmail.com>
parents:
65788
diff
changeset
|
621 |
|
69981
25298224cb25
Issue #3709: a flush_headers method to BaseHTTPRequestHandler which manages the
Senthil Kumaran <senthil@uthcode.com>
parents:
68776
diff
changeset
|
622 input = BytesIO(b'GET / HTTP/1.1\r\n\r\n') |
|
25298224cb25
Issue #3709: a flush_headers method to BaseHTTPRequestHandler which manages the
Senthil Kumaran <senthil@uthcode.com>
parents:
68776
diff
changeset
|
623 output = AuditableBytesIO() |
|
25298224cb25
Issue #3709: a flush_headers method to BaseHTTPRequestHandler which manages the
Senthil Kumaran <senthil@uthcode.com>
parents:
68776
diff
changeset
|
624 handler = SocketlessRequestHandler() |
|
25298224cb25
Issue #3709: a flush_headers method to BaseHTTPRequestHandler which manages the
Senthil Kumaran <senthil@uthcode.com>
parents:
68776
diff
changeset
|
625 handler.rfile = input |
|
25298224cb25
Issue #3709: a flush_headers method to BaseHTTPRequestHandler which manages the
Senthil Kumaran <senthil@uthcode.com>
parents:
68776
diff
changeset
|
626 handler.wfile = output |
|
25298224cb25
Issue #3709: a flush_headers method to BaseHTTPRequestHandler which manages the
Senthil Kumaran <senthil@uthcode.com>
parents:
68776
diff
changeset
|
627 handler.request_version = 'HTTP/1.1' |
|
25298224cb25
Issue #3709: a flush_headers method to BaseHTTPRequestHandler which manages the
Senthil Kumaran <senthil@uthcode.com>
parents:
68776
diff
changeset
|
628 |
|
25298224cb25
Issue #3709: a flush_headers method to BaseHTTPRequestHandler which manages the
Senthil Kumaran <senthil@uthcode.com>
parents:
68776
diff
changeset
|
629 handler.send_header('Foo', 'foo') |
|
25298224cb25
Issue #3709: a flush_headers method to BaseHTTPRequestHandler which manages the
Senthil Kumaran <senthil@uthcode.com>
parents:
68776
diff
changeset
|
630 handler.send_header('bar', 'bar') |
|
25298224cb25
Issue #3709: a flush_headers method to BaseHTTPRequestHandler which manages the
Senthil Kumaran <senthil@uthcode.com>
parents:
68776
diff
changeset
|
631 self.assertEqual(output.numWrites, 0) |
|
25298224cb25
Issue #3709: a flush_headers method to BaseHTTPRequestHandler which manages the
Senthil Kumaran <senthil@uthcode.com>
parents:
68776
diff
changeset
|
632 handler.end_headers() |
|
25298224cb25
Issue #3709: a flush_headers method to BaseHTTPRequestHandler which manages the
Senthil Kumaran <senthil@uthcode.com>
parents:
68776
diff
changeset
|
633 self.assertEqual(output.getData(), b'Foo: foo\r\nbar: bar\r\n\r\n') |
|
25298224cb25
Issue #3709: a flush_headers method to BaseHTTPRequestHandler which manages the
Senthil Kumaran <senthil@uthcode.com>
parents:
68776
diff
changeset
|
634 self.assertEqual(output.numWrites, 1) |
|
66351
9717153d558d
Fix issue3709 - BaseHTTPRequestHandler will buffer the headers and write only on end_headers call.
Senthil Kumaran <orsenthil@gmail.com>
parents:
65788
diff
changeset
|
635 |
|
9717153d558d
Fix issue3709 - BaseHTTPRequestHandler will buffer the headers and write only on end_headers call.
Senthil Kumaran <orsenthil@gmail.com>
parents:
65788
diff
changeset
|
636 def test_header_unbuffered_when_continue(self): |
|
9717153d558d
Fix issue3709 - BaseHTTPRequestHandler will buffer the headers and write only on end_headers call.
Senthil Kumaran <orsenthil@gmail.com>
parents:
65788
diff
changeset
|
637 |
|
9717153d558d
Fix issue3709 - BaseHTTPRequestHandler will buffer the headers and write only on end_headers call.
Senthil Kumaran <orsenthil@gmail.com>
parents:
65788
diff
changeset
|
638 def _readAndReseek(f): |
|
9717153d558d
Fix issue3709 - BaseHTTPRequestHandler will buffer the headers and write only on end_headers call.
Senthil Kumaran <orsenthil@gmail.com>
parents:
65788
diff
changeset
|
639 pos = f.tell() |
|
9717153d558d
Fix issue3709 - BaseHTTPRequestHandler will buffer the headers and write only on end_headers call.
Senthil Kumaran <orsenthil@gmail.com>
parents:
65788
diff
changeset
|
640 f.seek(0) |
|
9717153d558d
Fix issue3709 - BaseHTTPRequestHandler will buffer the headers and write only on end_headers call.
Senthil Kumaran <orsenthil@gmail.com>
parents:
65788
diff
changeset
|
641 data = f.read() |
|
9717153d558d
Fix issue3709 - BaseHTTPRequestHandler will buffer the headers and write only on end_headers call.
Senthil Kumaran <orsenthil@gmail.com>
parents:
65788
diff
changeset
|
642 f.seek(pos) |
|
9717153d558d
Fix issue3709 - BaseHTTPRequestHandler will buffer the headers and write only on end_headers call.
Senthil Kumaran <orsenthil@gmail.com>
parents:
65788
diff
changeset
|
643 return data |
|
9717153d558d
Fix issue3709 - BaseHTTPRequestHandler will buffer the headers and write only on end_headers call.
Senthil Kumaran <orsenthil@gmail.com>
parents:
65788
diff
changeset
|
644 |
|
9717153d558d
Fix issue3709 - BaseHTTPRequestHandler will buffer the headers and write only on end_headers call.
Senthil Kumaran <orsenthil@gmail.com>
parents:
65788
diff
changeset
|
645 input = BytesIO(b'GET / HTTP/1.1\r\nExpect: 100-continue\r\n\r\n') |
|
9717153d558d
Fix issue3709 - BaseHTTPRequestHandler will buffer the headers and write only on end_headers call.
Senthil Kumaran <orsenthil@gmail.com>
parents:
65788
diff
changeset
|
646 output = BytesIO() |
|
9717153d558d
Fix issue3709 - BaseHTTPRequestHandler will buffer the headers and write only on end_headers call.
Senthil Kumaran <orsenthil@gmail.com>
parents:
65788
diff
changeset
|
647 self.handler.rfile = input |
|
9717153d558d
Fix issue3709 - BaseHTTPRequestHandler will buffer the headers and write only on end_headers call.
Senthil Kumaran <orsenthil@gmail.com>
parents:
65788
diff
changeset
|
648 self.handler.wfile = output |
|
9717153d558d
Fix issue3709 - BaseHTTPRequestHandler will buffer the headers and write only on end_headers call.
Senthil Kumaran <orsenthil@gmail.com>
parents:
65788
diff
changeset
|
649 self.handler.request_version = 'HTTP/1.1' |
|
9717153d558d
Fix issue3709 - BaseHTTPRequestHandler will buffer the headers and write only on end_headers call.
Senthil Kumaran <orsenthil@gmail.com>
parents:
65788
diff
changeset
|
650 |
|
9717153d558d
Fix issue3709 - BaseHTTPRequestHandler will buffer the headers and write only on end_headers call.
Senthil Kumaran <orsenthil@gmail.com>
parents:
65788
diff
changeset
|
651 self.handler.handle_one_request() |
|
9717153d558d
Fix issue3709 - BaseHTTPRequestHandler will buffer the headers and write only on end_headers call.
Senthil Kumaran <orsenthil@gmail.com>
parents:
65788
diff
changeset
|
652 self.assertNotEqual(_readAndReseek(output), b'') |
|
9717153d558d
Fix issue3709 - BaseHTTPRequestHandler will buffer the headers and write only on end_headers call.
Senthil Kumaran <orsenthil@gmail.com>
parents:
65788
diff
changeset
|
653 result = _readAndReseek(output).split(b'\r\n') |
|
9717153d558d
Fix issue3709 - BaseHTTPRequestHandler will buffer the headers and write only on end_headers call.
Senthil Kumaran <orsenthil@gmail.com>
parents:
65788
diff
changeset
|
654 self.assertEqual(result[0], b'HTTP/1.1 100 Continue') |
|
9717153d558d
Fix issue3709 - BaseHTTPRequestHandler will buffer the headers and write only on end_headers call.
Senthil Kumaran <orsenthil@gmail.com>
parents:
65788
diff
changeset
|
655 self.assertEqual(result[1], b'HTTP/1.1 200 OK') |
|
9717153d558d
Fix issue3709 - BaseHTTPRequestHandler will buffer the headers and write only on end_headers call.
Senthil Kumaran <orsenthil@gmail.com>
parents:
65788
diff
changeset
|
656 |
|
65028
7add45bcc9c6
Issue1491 - BaseHTTPServer incorrectly implements response code 100
Senthil Kumaran <orsenthil@gmail.com>
parents:
63558
diff
changeset
|
657 def test_with_continue_rejected(self): |
|
7add45bcc9c6
Issue1491 - BaseHTTPServer incorrectly implements response code 100
Senthil Kumaran <orsenthil@gmail.com>
parents:
63558
diff
changeset
|
658 usual_handler = self.handler # Save to avoid breaking any subsequent tests. |
|
7add45bcc9c6
Issue1491 - BaseHTTPServer incorrectly implements response code 100
Senthil Kumaran <orsenthil@gmail.com>
parents:
63558
diff
changeset
|
659 self.handler = RejectingSocketlessRequestHandler() |
|
7add45bcc9c6
Issue1491 - BaseHTTPServer incorrectly implements response code 100
Senthil Kumaran <orsenthil@gmail.com>
parents:
63558
diff
changeset
|
660 result = self.send_typical_request(b'GET / HTTP/1.1\r\nExpect: 100-continue\r\n\r\n') |
|
7add45bcc9c6
Issue1491 - BaseHTTPServer incorrectly implements response code 100
Senthil Kumaran <orsenthil@gmail.com>
parents:
63558
diff
changeset
|
661 self.assertEqual(result[0], b'HTTP/1.1 417 Expectation Failed\r\n') |
|
7add45bcc9c6
Issue1491 - BaseHTTPServer incorrectly implements response code 100
Senthil Kumaran <orsenthil@gmail.com>
parents:
63558
diff
changeset
|
662 self.verify_expected_headers(result[1:-1]) |
|
7add45bcc9c6
Issue1491 - BaseHTTPServer incorrectly implements response code 100
Senthil Kumaran <orsenthil@gmail.com>
parents:
63558
diff
changeset
|
663 # The expect handler should short circuit the usual get method by |
|
7add45bcc9c6
Issue1491 - BaseHTTPServer incorrectly implements response code 100
Senthil Kumaran <orsenthil@gmail.com>
parents:
63558
diff
changeset
|
664 # returning false here, so get_called should be false |
|
7add45bcc9c6
Issue1491 - BaseHTTPServer incorrectly implements response code 100
Senthil Kumaran <orsenthil@gmail.com>
parents:
63558
diff
changeset
|
665 self.assertFalse(self.handler.get_called) |
|
7add45bcc9c6
Issue1491 - BaseHTTPServer incorrectly implements response code 100
Senthil Kumaran <orsenthil@gmail.com>
parents:
63558
diff
changeset
|
666 self.assertEqual(sum(r == b'Connection: close\r\n' for r in result[1:-1]), 1) |
|
7add45bcc9c6
Issue1491 - BaseHTTPServer incorrectly implements response code 100
Senthil Kumaran <orsenthil@gmail.com>
parents:
63558
diff
changeset
|
667 self.handler = usual_handler # Restore to avoid breaking any subsequent tests. |
|
7add45bcc9c6
Issue1491 - BaseHTTPServer incorrectly implements response code 100
Senthil Kumaran <orsenthil@gmail.com>
parents:
63558
diff
changeset
|
668 |
|
66970
436bbc7f0aa6
Issue #10714: Limit length of incoming request in http.server to 65536 bytes
Antoine Pitrou <solipsis@pitrou.net>
parents:
66606
diff
changeset
|
669 def test_request_length(self): |
|
436bbc7f0aa6
Issue #10714: Limit length of incoming request in http.server to 65536 bytes
Antoine Pitrou <solipsis@pitrou.net>
parents:
66606
diff
changeset
|
670 # Issue #10714: huge request lines are discarded, to avoid Denial |
|
436bbc7f0aa6
Issue #10714: Limit length of incoming request in http.server to 65536 bytes
Antoine Pitrou <solipsis@pitrou.net>
parents:
66606
diff
changeset
|
671 # of Service attacks. |
|
436bbc7f0aa6
Issue #10714: Limit length of incoming request in http.server to 65536 bytes
Antoine Pitrou <solipsis@pitrou.net>
parents:
66606
diff
changeset
|
672 result = self.send_typical_request(b'GET ' + b'x' * 65537) |
|
436bbc7f0aa6
Issue #10714: Limit length of incoming request in http.server to 65536 bytes
Antoine Pitrou <solipsis@pitrou.net>
parents:
66606
diff
changeset
|
673 self.assertEqual(result[0], b'HTTP/1.1 414 Request-URI Too Long\r\n') |
|
436bbc7f0aa6
Issue #10714: Limit length of incoming request in http.server to 65536 bytes
Antoine Pitrou <solipsis@pitrou.net>
parents:
66606
diff
changeset
|
674 self.assertFalse(self.handler.get_called) |
|
65028
7add45bcc9c6
Issue1491 - BaseHTTPServer incorrectly implements response code 100
Senthil Kumaran <orsenthil@gmail.com>
parents:
63558
diff
changeset
|
675 |
|
67020
0b94635ed2f6
Fix Issue6791 - Limit the HTTP header readline with _MAXLENGTH. Patch by Antoine Pitrou
Senthil Kumaran <orsenthil@gmail.com>
parents:
66970
diff
changeset
|
676 def test_header_length(self): |
|
0b94635ed2f6
Fix Issue6791 - Limit the HTTP header readline with _MAXLENGTH. Patch by Antoine Pitrou
Senthil Kumaran <orsenthil@gmail.com>
parents:
66970
diff
changeset
|
677 # Issue #6791: same for headers |
|
0b94635ed2f6
Fix Issue6791 - Limit the HTTP header readline with _MAXLENGTH. Patch by Antoine Pitrou
Senthil Kumaran <orsenthil@gmail.com>
parents:
66970
diff
changeset
|
678 result = self.send_typical_request( |
|
0b94635ed2f6
Fix Issue6791 - Limit the HTTP header readline with _MAXLENGTH. Patch by Antoine Pitrou
Senthil Kumaran <orsenthil@gmail.com>
parents:
66970
diff
changeset
|
679 b'GET / HTTP/1.1\r\nX-Foo: bar' + b'r' * 65537 + b'\r\n\r\n') |
|
0b94635ed2f6
Fix Issue6791 - Limit the HTTP header readline with _MAXLENGTH. Patch by Antoine Pitrou
Senthil Kumaran <orsenthil@gmail.com>
parents:
66970
diff
changeset
|
680 self.assertEqual(result[0], b'HTTP/1.1 400 Line too long\r\n') |
|
0b94635ed2f6
Fix Issue6791 - Limit the HTTP header readline with _MAXLENGTH. Patch by Antoine Pitrou
Senthil Kumaran <orsenthil@gmail.com>
parents:
66970
diff
changeset
|
681 self.assertFalse(self.handler.get_called) |
|
0b94635ed2f6
Fix Issue6791 - Limit the HTTP header readline with _MAXLENGTH. Patch by Antoine Pitrou
Senthil Kumaran <orsenthil@gmail.com>
parents:
66970
diff
changeset
|
682 |
|
66971
dc32788f0e4e
Merged revisions 87317 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
66340
diff
changeset
|
683 class SimpleHTTPRequestHandlerTestCase(unittest.TestCase): |
|
dc32788f0e4e
Merged revisions 87317 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
66340
diff
changeset
|
684 """ Test url parsing """ |
|
dc32788f0e4e
Merged revisions 87317 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
66340
diff
changeset
|
685 def setUp(self): |
|
dc32788f0e4e
Merged revisions 87317 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
66340
diff
changeset
|
686 self.translated = os.getcwd() |
|
dc32788f0e4e
Merged revisions 87317 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
66340
diff
changeset
|
687 self.translated = os.path.join(self.translated, 'filename') |
|
dc32788f0e4e
Merged revisions 87317 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
66340
diff
changeset
|
688 self.handler = SocketlessRequestHandler() |
|
dc32788f0e4e
Merged revisions 87317 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
66340
diff
changeset
|
689 |
|
dc32788f0e4e
Merged revisions 87317 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
66340
diff
changeset
|
690 def test_query_arguments(self): |
|
dc32788f0e4e
Merged revisions 87317 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
66340
diff
changeset
|
691 path = self.handler.translate_path('/filename') |
|
dc32788f0e4e
Merged revisions 87317 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
66340
diff
changeset
|
692 self.assertEqual(path, self.translated) |
|
dc32788f0e4e
Merged revisions 87317 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
66340
diff
changeset
|
693 path = self.handler.translate_path('/filename?foo=bar') |
|
dc32788f0e4e
Merged revisions 87317 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
66340
diff
changeset
|
694 self.assertEqual(path, self.translated) |
|
dc32788f0e4e
Merged revisions 87317 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
66340
diff
changeset
|
695 path = self.handler.translate_path('/filename?a=b&spam=eggs#zot') |
|
dc32788f0e4e
Merged revisions 87317 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
66340
diff
changeset
|
696 self.assertEqual(path, self.translated) |
|
dc32788f0e4e
Merged revisions 87317 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
66340
diff
changeset
|
697 |
|
dc32788f0e4e
Merged revisions 87317 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
66340
diff
changeset
|
698 def test_start_with_double_slash(self): |
|
dc32788f0e4e
Merged revisions 87317 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
66340
diff
changeset
|
699 path = self.handler.translate_path('//filename') |
|
dc32788f0e4e
Merged revisions 87317 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
66340
diff
changeset
|
700 self.assertEqual(path, self.translated) |
|
dc32788f0e4e
Merged revisions 87317 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
66340
diff
changeset
|
701 path = self.handler.translate_path('//filename?foo=bar') |
|
dc32788f0e4e
Merged revisions 87317 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
66340
diff
changeset
|
702 self.assertEqual(path, self.translated) |
|
dc32788f0e4e
Merged revisions 87317 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
66340
diff
changeset
|
703 |
|
dc32788f0e4e
Merged revisions 87317 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
66340
diff
changeset
|
704 |
|
47278
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
705 def test_main(verbose=None): |
|
63558
58c22d30f749
Move test_SimpleHTTPServer into test_httpservers.
Georg Brandl <georg@python.org>
parents:
62874
diff
changeset
|
706 cwd = os.getcwd() |
|
47278
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
707 try: |
|
63558
58c22d30f749
Move test_SimpleHTTPServer into test_httpservers.
Georg Brandl <georg@python.org>
parents:
62874
diff
changeset
|
708 support.run_unittest( |
|
65028
7add45bcc9c6
Issue1491 - BaseHTTPServer incorrectly implements response code 100
Senthil Kumaran <orsenthil@gmail.com>
parents:
63558
diff
changeset
|
709 BaseHTTPRequestHandlerTestCase, |
|
63558
58c22d30f749
Move test_SimpleHTTPServer into test_httpservers.
Georg Brandl <georg@python.org>
parents:
62874
diff
changeset
|
710 BaseHTTPServerTestCase, |
|
58c22d30f749
Move test_SimpleHTTPServer into test_httpservers.
Georg Brandl <georg@python.org>
parents:
62874
diff
changeset
|
711 SimpleHTTPServerTestCase, |
|
58c22d30f749
Move test_SimpleHTTPServer into test_httpservers.
Georg Brandl <georg@python.org>
parents:
62874
diff
changeset
|
712 CGIHTTPServerTestCase, |
|
58c22d30f749
Move test_SimpleHTTPServer into test_httpservers.
Georg Brandl <georg@python.org>
parents:
62874
diff
changeset
|
713 SimpleHTTPRequestHandlerTestCase, |
|
58c22d30f749
Move test_SimpleHTTPServer into test_httpservers.
Georg Brandl <georg@python.org>
parents:
62874
diff
changeset
|
714 ) |
|
47278
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
715 finally: |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
716 os.chdir(cwd) |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
717 |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
718 if __name__ == '__main__': |
|
f762a9ab69dd
Merged revisions 63412,63445-63447,63449-63450,63452,63454,63459,63463,63465,63470,63483-63484,63496-63497,63499-63501,63530-63531,63540,63614 via svnmerge from
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
719 test_main() |
