/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar

« back to all changes in this revision

Viewing changes to bzrlib/tests/test_http.py

  • Committer: v.ladeuil+lp at free
  • Date: 2006-10-04 14:42:05 UTC
  • mto: (2145.1.1 keepalive)
  • mto: This revision was merged to the branch mainline in revision 2146.
  • Revision ID: v.ladeuil+lp@free.fr-20061004144205-6a7496410b893ab1
Add tests against erroneous http status lines.

* bzrlib/transport/http/_urllib2_wrappers.py:
(Response.begin): In some subtle cases we MUST not try to read the
response body.
(AbstractHTTPConnection.strict): Do not try to support HTTP/0.9 or we
may fail to detect bad status lines.
(AbstractHTTPHandler.do_open): Translate BasStatusLine into
InvalidHttpResponse and don't retry in that case.

* bzrlib/transport/http/_pycurl.py:
(PyCurlTransport.has): 

* bzrlib/transport/http/__init__.py:
(BadStatusRequestHandler, InvalidStatusRequestHandler): New classes.

* bzrlib/tests/test_http.py:
(TestBadStatusServer.create_transport_server,
TestBadStatusServer_urllib, TestBadStatusServer_pycurl,
TestInvalidStatusServer, TestInvalidStatusServer_urllib,
TestInvalidStatusServer_pycurl): New classes.

Show diffs side-by-side

added added

removed removed

Lines of Context:
25
25
from bzrlib.errors import (
26
26
    DependencyNotPresent,
27
27
    ConnectionError,
 
28
    InvalidHttpResponse,
28
29
    )
29
30
from bzrlib.tests import (
30
31
    TestCase,
36
37
    )
37
38
from bzrlib.transport.http import (
38
39
    extract_auth,
 
40
    BadStatusRequestHandler,
39
41
    HttpTransportBase,
 
42
    InvalidStatusRequestHandler,
40
43
    WallRequestHandler,
41
44
    )
42
45
from bzrlib.transport.http._urllib import HttpTransport_urllib
112
115
 
113
116
    This MUST be used by daughter classes that also inherit from
114
117
    TestCaseWithWebserver.
 
118
 
 
119
    We can't inherit directly from TestCaseWithWebserver or the
 
120
    test framework will try to create an instance which cannot
 
121
    run, its implementation being incomplete.
115
122
    """
116
123
 
117
124
    def setUp(self):
274
281
    """Tests WallServer for pycurl implementation"""
275
282
 
276
283
 
 
284
class TestBadStatusServer(object):
 
285
    """Tests bad status from server."""
 
286
 
 
287
    def create_transport_server(self):
 
288
        return bzrlib.transport.http.HttpServer(BadStatusRequestHandler)
 
289
 
 
290
    def test_http_has(self):
 
291
        server = self.get_server()
 
292
        t = self._transport(server.get_url())
 
293
        self.assertRaises(InvalidHttpResponse, t.has, 'foo/bar')
 
294
 
 
295
    def test_http_get(self):
 
296
        server = self.get_server()
 
297
        t = self._transport(server.get_url())
 
298
        self.assertRaises(InvalidHttpResponse, t.get, 'foo/bar')
 
299
 
 
300
 
 
301
class TestBadStatusServer_urllib(TestBadStatusServer, TestCaseWithWebserver):
 
302
    """Tests BadStatusServer for urllib implementation"""
 
303
 
 
304
    _transport = HttpTransport_urllib
 
305
 
 
306
 
 
307
class TestBadStatusServer_pycurl(TestWithTransport_pycurl,
 
308
                                 TestBadStatusServer,
 
309
                                 TestCaseWithWebserver):
 
310
    """Tests BadStatusServer for pycurl implementation"""
 
311
 
 
312
 
 
313
class TestInvalidStatusServer(TestBadStatusServer):
 
314
    """Tests invalid status from server.
 
315
 
 
316
    Both implementations raises the same error as for a bad status.
 
317
    """
 
318
 
 
319
    def create_transport_server(self):
 
320
        return bzrlib.transport.http.HttpServer(InvalidStatusRequestHandler)
 
321
 
 
322
 
 
323
class TestInvalidStatusServer_urllib(TestInvalidStatusServer,
 
324
                                     TestCaseWithWebserver):
 
325
    """Tests InvalidStatusServer for urllib implementation"""
 
326
 
 
327
    _transport = HttpTransport_urllib
 
328
 
 
329
 
 
330
class TestInvalidStatusServer_pycurl(TestWithTransport_pycurl,
 
331
                                     TestInvalidStatusServer,
 
332
                                     TestCaseWithWebserver):
 
333
    """Tests InvalidStatusServer for pycurl implementation"""