260
260
def test_url_parsing(self):
261
261
f = FakeManager()
262
url = extract_auth('http://example.com', f)
262
url = http.extract_auth('http://example.com', f)
263
263
self.assertEquals('http://example.com', url)
264
264
self.assertEquals(0, len(f.credentials))
265
url = extract_auth('http://user:pass@www.bazaar-vcs.org/bzr/bzr.dev', f)
265
url = http.extract_auth('http://user:pass@www.bazaar-vcs.org/bzr/bzr.dev', f)
266
266
self.assertEquals('http://www.bazaar-vcs.org/bzr/bzr.dev', url)
267
267
self.assertEquals(1, len(f.credentials))
268
268
self.assertEquals([None, 'www.bazaar-vcs.org', 'user', 'pass'],
442
442
offsets = [ (start, end - start + 1) for start, end in ranges]
443
443
coalesce = transport.Transport._coalesce_offsets
444
444
coalesced = list(coalesce(offsets, limit=0, fudge_factor=0))
445
range_header = HttpTransportBase._range_header
445
range_header = http.HttpTransportBase._range_header
446
446
self.assertEqual(value, range_header(coalesced, tail))
448
448
def test_range_header_single(self):
477
477
return http_server.HttpServer(self._req_handler_class,
478
478
protocol_version=self._protocol_version)
480
def _testing_pycurl(self):
481
return pycurl_present and self._transport == PyCurlTransport
481
484
class WallRequestHandler(http_server.TestingHTTPRequestHandler):
482
485
"""Whatever request comes in, close the connection"""
515
518
def parse_request(self):
516
519
"""Fakes handling a single HTTP request, returns a bad status"""
517
520
ignored = http_server.TestingHTTPRequestHandler.parse_request(self)
519
self.send_response(0, "Bad status")
521
except socket.error, e:
522
# We don't want to pollute the test results with
523
# spurious server errors while test succeed. In our
524
# case, it may occur that the test has already read
525
# the 'Bad Status' and closed the socket while we are
526
# still trying to send some headers... So the test is
527
# ok, but if we raise the exception, the output is
528
# dirty. So we don't raise, but we close the
529
# connection, just to be safe :)
530
spurious = [errno.EPIPE,
534
if (len(e.args) > 0) and (e.args[0] in spurious):
535
self.close_connection = 1
521
self.send_response(0, "Bad status")
522
self.close_connection = 1
558
542
class InvalidStatusRequestHandler(http_server.TestingHTTPRequestHandler):
559
"""Whatever request comes in, returns am invalid status"""
543
"""Whatever request comes in, returns an invalid status"""
561
545
def parse_request(self):
562
546
"""Fakes handling a single HTTP request, returns a bad status"""
574
558
_req_handler_class = InvalidStatusRequestHandler
560
def test_http_has(self):
561
if self._testing_pycurl() and self._protocol_version == 'HTTP/1.1':
562
raise tests.KnownFailure('pycurl hangs if the server send back garbage')
563
super(TestInvalidStatusServer, self).test_http_has()
565
def test_http_get(self):
566
if self._testing_pycurl() and self._protocol_version == 'HTTP/1.1':
567
raise tests.KnownFailure('pycurl hangs if the server send back garbage')
568
super(TestInvalidStatusServer, self).test_http_get()
577
571
class BadProtocolRequestHandler(http_server.TestingHTTPRequestHandler):
578
572
"""Whatever request comes in, returns a bad protocol version"""
880
874
osutils.set_or_unset_env(name, value)
882
876
def _proxied_request(self):
883
handler = ProxyHandler()
884
request = Request('GET','http://baz/buzzle')
877
handler = _urllib2_wrappers.ProxyHandler()
878
request = _urllib2_wrappers.Request('GET','http://baz/buzzle')
885
879
handler.set_proxy(request, 'http')
1170
1164
self.old_server.port)
1171
1165
new_prefix = 'http://%s:%s' % (self.new_server.host,
1172
1166
self.new_server.port)
1173
self.old_server.redirections = \
1174
[('/1(.*)', r'%s/2\1' % (old_prefix), 302),
1175
('/2(.*)', r'%s/3\1' % (old_prefix), 303),
1176
('/3(.*)', r'%s/4\1' % (old_prefix), 307),
1177
('/4(.*)', r'%s/5\1' % (new_prefix), 301),
1178
('(/[^/]+)', r'%s/1\1' % (old_prefix), 301),
1167
self.old_server.redirections = [
1168
('/1(.*)', r'%s/2\1' % (old_prefix), 302),
1169
('/2(.*)', r'%s/3\1' % (old_prefix), 303),
1170
('/3(.*)', r'%s/4\1' % (old_prefix), 307),
1171
('/4(.*)', r'%s/5\1' % (new_prefix), 301),
1172
('(/[^/]+)', r'%s/1\1' % (old_prefix), 301),
1180
1174
self.assertEquals('redirected 5 times',t._perform(req).read())