示例#1
0
 def testBuffer(self):
     b = StringIOWithoutClosing()
     a = http.HTTPChannel()
     a.requestFactory = DummyHTTPHandler
     a.makeConnection(protocol.FileWrapper(b))
     # one byte at a time, to stress it.
     for byte in self.requests:
         a.dataReceived(byte)
     a.connectionLost(IOError("all one"))
     value = b.getvalue()
     if value != self.expected_response:
         for i in range(len(value)):
             if len(self.expected_response) <= i:
                 print ` value[i - 5:i +
                               10] `, ` self.expected_response[i - 5:i +
                                                               10] `
             elif value[i] != self.expected_response[i]:
                 print ` value[i - 5:i +
                               10] `, ` self.expected_response[i - 5:i +
                                                               10] `
                 break
         print '---VALUE---'
         print repr(value)
         print '---EXPECTED---'
         print repr(self.expected_response)
         raise AssertionError
示例#2
0
 def testAlgorithm(self):
     c = http.HTTPChannel()
     for req, version, correctResult, resultHeaders in self.ptests:
         result = c.checkPersistence(req, version)
         self.assertEquals(result, correctResult)
         for header in resultHeaders.keys():
             self.assertEquals(req.responseHeaders.getRawHeaders(header, None), resultHeaders[header])
示例#3
0
 def _create_post_request(self, path, data):
     request = http.Request(http.HTTPChannel(), True)
     request.method = "post"
     request.path = path
     request.args = {}
     request.gotLength(1000)
     request.requestHeaders = Headers(
         {"Content-Type": ['application/json']})
     request.handleContentChunk(json.dumps(data))
     return request
示例#4
0
 def testLoopback(self):
     server = http.HTTPChannel()
     server.requestFactory = DummyHTTPHandler
     client = LoopbackHTTPClient()
     client.handleResponse = self._handleResponse
     client.handleHeader = self._handleHeader
     client.handleEndHeaders = self._handleEndHeaders
     client.handleStatus = self._handleStatus
     d = loopback.loopbackAsync(server, client)
     d.addCallback(self._cbTestLoopback)
     return d
示例#5
0
 def test_buffer(self):
     """
     Send requests over a channel and check responses match what is expected.
     """
     b = StringTransport()
     a = http.HTTPChannel()
     a.requestFactory = DummyHTTPHandler
     a.makeConnection(b)
     # one byte at a time, to stress it.
     for byte in self.requests:
         a.dataReceived(byte)
     a.connectionLost(IOError("all one"))
     value = b.value()
     self.assertResponseEquals(value, self.expected_response)
示例#6
0
文件: test_http.py 项目: kusoof/wprof
 def test_buffer(self):
     """
     Send requests over a channel and check responses match what is expected.
     """
     b = StringIOWithoutClosing()
     a = http.HTTPChannel()
     a.requestFactory = DummyHTTPHandler
     a.makeConnection(protocol.FileWrapper(b))
     # one byte at a time, to stress it.
     for byte in self.requests:
         a.dataReceived(byte)
     a.connectionLost(IOError("all one"))
     value = b.getvalue()
     self.assertEquals(value, self.expected_response)
示例#7
0
文件: test_http.py 项目: kusoof/wprof
 def runRequest(self, httpRequest, requestClass, success=1):
     httpRequest = httpRequest.replace("\n", "\r\n")
     b = StringIOWithoutClosing()
     a = http.HTTPChannel()
     a.requestFactory = requestClass
     a.makeConnection(protocol.FileWrapper(b))
     # one byte at a time, to stress it.
     for byte in httpRequest:
         if a.transport.closed:
             break
         a.dataReceived(byte)
     a.connectionLost(IOError("all done"))
     if success:
         self.assertEquals(self.didRequest, 1)
         del self.didRequest
     else:
         self.assert_(not hasattr(self, "didRequest"))
示例#8
0
 def testLoopback(self):
     server = http.HTTPChannel()
     server.requestFactory = DummyHTTPHandler
     client = LoopbackHTTPClient()
     client.handleResponse = self._handleResponse
     client.handleHeader = self._handleHeader
     client.handleEndHeaders = self._handleEndHeaders
     client.handleStatus = self._handleStatus
     loopback.loopback(server, client)
     if not (self.gotStatus and self.gotResponse and self.gotEndHeaders):
         raise RuntimeError, "didn't got all callbacks %s" % [
             self.gotStatus, self.gotResponse, self.gotEndHeaders
         ]
     del self.gotEndHeaders
     del self.gotResponse
     del self.gotStatus
     del self.numHeaders
示例#9
0
 def test_requestBodyTimeout(self):
     """
     L{HTTPChannel} resets its timeout whenever data from a request body is
     delivered to it.
     """
     clock = Clock()
     transport = StringTransport()
     protocol = http.HTTPChannel()
     protocol.timeOut = 100
     protocol.callLater = clock.callLater
     protocol.makeConnection(transport)
     protocol.dataReceived('POST / HTTP/1.0\r\nContent-Length: 2\r\n\r\n')
     clock.advance(99)
     self.assertFalse(transport.disconnecting)
     protocol.dataReceived('x')
     clock.advance(99)
     self.assertFalse(transport.disconnecting)
     protocol.dataReceived('x')
     self.assertEqual(len(protocol.requests), 1)
示例#10
0
 def _create_get_request(self, path, args):
     request = http.Request(http.HTTPChannel(), True)
     request.method = "get"
     request.path = path
     request.args = args
     return request
示例#11
0
    def test_multipartFormatCorrection(self):

        requestBody = BytesIO()

        class TestRequest(DreamuploaderRequest):
            def process(self):
                requestBody.write(self.content.read())
                self.write(b"done")
                self.finish()

        channel = http.HTTPChannel()
        channel.requestFactory = TestRequest
        transport = StringTransport()
        channel.makeConnection(transport)
        channel.dataReceived(b'''\
POST /upload HTTP/1.0
User-Agent: Mozilla/3.0 (DreamPassport/3.15)
Content-Type: multipart/form-data; boundary=-----------------------------3943144700513
Content-Length: 6714

-----------------------------3943144700513
Content-Disposition: form-data; name="upfile"

filename=C_TAXI02.R00&fs=4608&bl=9&tp=0&fl=16&of=0&tm=200508210125370

SVS+ENT4QdFb7eA5EOA5EYceSyJDENzZXYM56aA5IMyS9YNDEYzZyYY5EOA5EOA5YY2LdSS5YZ5YyaWy
yAAAAAYAASAAAccUeRvAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2/vAHSLRK////RL0AAAAAAAAAAAAAAAA
AAAAAAAAAAAZAAAAAAAAAAAAASAAAAAAAzAAAAAAASAAASAAASAAASASAAAAAzAAAZYAAZAAAAYAAAAA
AAASAAASAAYAAAYAAZAAASAAYAAZAAAZAAAzAAASAAYAAAYZAAAAAZAZYAAAASAZYAAOEaEaAAASASAA
AAYAAzAeE+Ea6+EZAZYAAAAzAAASEkEaEa6kESAZYAAAYSAAYt6aEaEt6kEAAzAZAzYAAO6+EaEaEk6+
AAYSASYzYAEtEaEk6+Et6bAzYAYZYzYt6+Ek6kEaEtEzYzAZAZYeEaEt6k6+EaEbYzYAASAZEazO6k6k
EaEaEzYSAAAAAeTYEt6k6aEaE5YzYAAAAZEaEa6k6+EaEaAZYzYAAAYeTOEt6kEaEaE5YzYzYAYzEaEa
Et6aEaEaYzYzYzYzYe6MTOEaEaEaEzYzYzYzYzEkEaEaEaEaEzzYzYzYzOYe6+EaEaEaEbNYzOEMzYEb
YtEaEaE+YzYIzYEazYSaEzEaEaEt6+YzzYSaTYzOEbYeEaEa6k6bNYzYzYzYEaYzYaEaEk6+YIzYEMzO
EaEzYzEaEt6k6bzYSaTYSaEbYzYeEa6k6+NYzOEMzYEbYzYzYe6k6+EIzYEazYSaEzYzYzyeEaTyIaEa
EeEaEbYzYzYyyyyyyyYaEbYeEaYzYzYzYzYzYzYzYzYzYzYzYzYzYyTNIO2R69IGSYZASYZASYZASYZA
zY6uPeVmIOVL6LM26IEVzIcL6IcASYZASYZASYZASYZASYZASYZASYZASYZASYZASYZASYZASYZASYZA
SYZASYZASYZASYZASYZASYZASYZASYZASYZASYZASYZASYZASYZASYZASYZASYZASYZASYZASYZASYZA
SYZASYZASYZASYZASYZASYZASYZASYZASYZASYZASYZASYZASYZASYZASYZASYZASYZASYZASYZASYZA
SYZASYZASYZASLER6LIRiLEF6LY+c96wP9AR6LAR6LAR6LAR6LAR6LA+6LZImMYjXOJTmtEjIMZASYZA
SYZASO2R6LAR6LAR6LAR6LAR6LAR6tARSYZASYZASYZASYZASYZASYZASYZASYZASYZASYZASYZASYZA
SYZASYZASYZASYZASYZASYZASYZASYZAEOA5EOZLSyE5P+ZTS2ycSIGASYZASYZASYZASYZASYZASYZA
SYZASYZASYZASYZASYZASYZASYZASYZAEOARTk60Et6GSYZASYZASYZASYZASYZASYZASYZASYZASYZA
SYZASYZASYZASYZASYZASYZASYZASYZAcO2+EYceSyJDENT3SIzASYZASYZASYZASYZASYZASYZASYZA
SYZASYZASYZASYZASYZASYZASYZASYZAS2NeSYZASYZASYZASYZASYZASYZASYZASYZASYZASYZASYZA
SYZASYZASYZASYZASYZASYZASYZASYZAeIcN9INiSYZASYZASYZASYZASYZASYZASYZASYZASYZASYZA
SYZASYZASYZASYZASYZASYZASYZASYZA6LYu6LAR6LAR6LIRiLEF6LY+cIZASYZASYZASYZASYZASYZA
SYZAATC6AAZLQrNo7yzb7dM+PIbJqdVbg0y+PIzLP9ER6LY5EOA5EA5AAAAZAAAAAAAAAAAAAAO5O5AA
pRAAALQiAAAAAAAAAAAAAAAAAAAAAAAAAIkxyNSqy4EcIrNe54yeKyPIIs4eH4SbBMUY94Ji/zSiLBGi
vYogB4yevNPyI84OgRVySaFaSba/Q5V+Yyy+EBEUQMu+Byy+aBm7Q8c+U4YZQxJH9sGia5YZAtNiOyGi
AyGyBE4Q44+4BPzyBPWQFVk6B6GyB6uQsV+CBmNyBTbQM4+cBE4yBEDQbN+LBETzZN+ZB4FHBnuyBnyQ
f4FpBdZyBNuQyVFIBNTyBNcQyVFqBdzyBduQQyFVBnbyBnJQlNFWBnGz6NF/B4F/BnVyBnJQqVFkBnZy
BdGQfNF8BdJyBduQfNFRBnzyBnqQ74FvBnVNeVFHBnW7BnvyZyFHBnVQlNF1SSEZBnFQ7VFvBnVNONFH
BnW7BnGyBnFQ74FwBnyNAVFkBnTQQyF+yyFkBnzQqVFoyyFvBnVQl4F/yAT7BnWQl4FvzSNQ7VFoBn4Q
74yQlNFWBnGQlVSNB4F/BnFQ7NyQQVFuBdbQDYIZBdNQBVF7BdNyBd4QfVF2BnqyBnJQlNFWBnGznNF/
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

-----------------------------3943144700513
Content-Disposition: form-data; name="name"

CTAXI2R0
-----------------------------3943144700513
Content-Disposition: form-data; name="submit"

Upload
-----------------------------3943144700513--
'''.replace(b"\n", b"\r\n"))
        channel.connectionLost(IOError("all done"))

        self.assertEqual(
            requestBody.getvalue().replace(b"\r\n", b"\n"), b'''\
-------------------------------3943144700513
Content-Disposition: form-data; name="upfile"

filename=C_TAXI02.R00&fs=4608&bl=9&tp=0&fl=16&of=0&tm=200508210125370

SVS+ENT4QdFb7eA5EOA5EYceSyJDENzZXYM56aA5IMyS9YNDEYzZyYY5EOA5EOA5YY2LdSS5YZ5YyaWy
yAAAAAYAASAAAccUeRvAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2/vAHSLRK////RL0AAAAAAAAAAAAAAAA
AAAAAAAAAAAZAAAAAAAAAAAAASAAAAAAAzAAAAAAASAAASAAASAAASASAAAAAzAAAZYAAZAAAAYAAAAA
AAASAAASAAYAAAYAAZAAASAAYAAZAAAZAAAzAAASAAYAAAYZAAAAAZAZYAAAASAZYAAOEaEaAAASASAA
AAYAAzAeE+Ea6+EZAZYAAAAzAAASEkEaEa6kESAZYAAAYSAAYt6aEaEt6kEAAzAZAzYAAO6+EaEaEk6+
AAYSASYzYAEtEaEk6+Et6bAzYAYZYzYt6+Ek6kEaEtEzYzAZAZYeEaEt6k6+EaEbYzYAASAZEazO6k6k
EaEaEzYSAAAAAeTYEt6k6aEaE5YzYAAAAZEaEa6k6+EaEaAZYzYAAAYeTOEt6kEaEaE5YzYzYAYzEaEa
Et6aEaEaYzYzYzYzYe6MTOEaEaEaEzYzYzYzYzEkEaEaEaEaEzzYzYzYzOYe6+EaEaEaEbNYzOEMzYEb
YtEaEaE+YzYIzYEazYSaEzEaEaEt6+YzzYSaTYzOEbYeEaEa6k6bNYzYzYzYEaYzYaEaEk6+YIzYEMzO
EaEzYzEaEt6k6bzYSaTYSaEbYzYeEa6k6+NYzOEMzYEbYzYzYe6k6+EIzYEazYSaEzYzYzyeEaTyIaEa
EeEaEbYzYzYyyyyyyyYaEbYeEaYzYzYzYzYzYzYzYzYzYzYzYzYzYyTNIO2R69IGSYZASYZASYZASYZA
zY6uPeVmIOVL6LM26IEVzIcL6IcASYZASYZASYZASYZASYZASYZASYZASYZASYZASYZASYZASYZASYZA
SYZASYZASYZASYZASYZASYZASYZASYZASYZASYZASYZASYZASYZASYZASYZASYZASYZASYZASYZASYZA
SYZASYZASYZASYZASYZASYZASYZASYZASYZASYZASYZASYZASYZASYZASYZASYZASYZASYZASYZASYZA
SYZASYZASYZASLER6LIRiLEF6LY+c96wP9AR6LAR6LAR6LAR6LAR6LA+6LZImMYjXOJTmtEjIMZASYZA
SYZASO2R6LAR6LAR6LAR6LAR6LAR6tARSYZASYZASYZASYZASYZASYZASYZASYZASYZASYZASYZASYZA
SYZASYZASYZASYZASYZASYZASYZASYZAEOA5EOZLSyE5P+ZTS2ycSIGASYZASYZASYZASYZASYZASYZA
SYZASYZASYZASYZASYZASYZASYZASYZAEOARTk60Et6GSYZASYZASYZASYZASYZASYZASYZASYZASYZA
SYZASYZASYZASYZASYZASYZASYZASYZAcO2+EYceSyJDENT3SIzASYZASYZASYZASYZASYZASYZASYZA
SYZASYZASYZASYZASYZASYZASYZASYZAS2NeSYZASYZASYZASYZASYZASYZASYZASYZASYZASYZASYZA
SYZASYZASYZASYZASYZASYZASYZASYZAeIcN9INiSYZASYZASYZASYZASYZASYZASYZASYZASYZASYZA
SYZASYZASYZASYZASYZASYZASYZASYZA6LYu6LAR6LAR6LIRiLEF6LY+cIZASYZASYZASYZASYZASYZA
SYZAATC6AAZLQrNo7yzb7dM+PIbJqdVbg0y+PIzLP9ER6LY5EOA5EA5AAAAZAAAAAAAAAAAAAAO5O5AA
pRAAALQiAAAAAAAAAAAAAAAAAAAAAAAAAIkxyNSqy4EcIrNe54yeKyPIIs4eH4SbBMUY94Ji/zSiLBGi
vYogB4yevNPyI84OgRVySaFaSba/Q5V+Yyy+EBEUQMu+Byy+aBm7Q8c+U4YZQxJH9sGia5YZAtNiOyGi
AyGyBE4Q44+4BPzyBPWQFVk6B6GyB6uQsV+CBmNyBTbQM4+cBE4yBEDQbN+LBETzZN+ZB4FHBnuyBnyQ
f4FpBdZyBNuQyVFIBNTyBNcQyVFqBdzyBduQQyFVBnbyBnJQlNFWBnGz6NF/B4F/BnVyBnJQqVFkBnZy
BdGQfNF8BdJyBduQfNFRBnzyBnqQ74FvBnVNeVFHBnW7BnvyZyFHBnVQlNF1SSEZBnFQ7VFvBnVNONFH
BnW7BnGyBnFQ74FwBnyNAVFkBnTQQyF+yyFkBnzQqVFoyyFvBnVQl4F/yAT7BnWQl4FvzSNQ7VFoBn4Q
74yQlNFWBnGQlVSNB4F/BnFQ7NyQQVFuBdbQDYIZBdNQBVF7BdNyBd4QfVF2BnqyBnJQlNFWBnGznNF/
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

-------------------------------3943144700513
Content-Disposition: form-data; name="name"

CTAXI2R0
-------------------------------3943144700513
Content-Disposition: form-data; name="submit"

Upload
-------------------------------3943144700513--
''')
示例#12
0
def txrequest():
    tcp_channel = DummyChannel.TCP()
    http_channel = http.HTTPChannel()
    http_channel.makeConnection(tcp_channel)
    return Request(http_channel)
示例#13
0
 def make_dummy_http_request(self):
     """Make a dummy HTTP request for tests."""
     transport = FileWrapper(io.BytesIO())
     channel = http.HTTPChannel()
     channel.makeConnection(transport)
     return http.Request(channel, True)