コード例 #1
0
 def test_renderRealRequest(self):
     """
     The request managed by L{WebSocketsResource.render} doesn't contain
     unnecessary HTTP headers like I{Content-Type}.
     """
     channel = DummyChannel()
     channel.transport = StringTransportWithDisconnection()
     channel.transport.protocol = channel
     request = Request(channel, False)
     headers = {
         b"upgrade": b"Websocket",
         b"connection": b"Upgrade",
         b"sec-websocket-key": b"secure",
         b"sec-websocket-version": b"13"
     }
     for key, value in headers.items():
         request.requestHeaders.setRawHeaders(key, [value])
     request.method = b"GET"
     request.clientproto = b"HTTP/1.1"
     result = self.resource.render(request)
     self.assertEqual(NOT_DONE_YET, result)
     self.assertEqual(
         [(b"Connection", [b"Upgrade"]),
          (b"Sec-Websocket-Accept", [b"oYBv54i42V5dw6KnZqOFroecUTc="]),
          (b"Upgrade", [b"WebSocket"])],
         sorted(request.responseHeaders.getAllRawHeaders()))
     self.assertThat(
         channel.transport.value(),
         StartsWith(b"HTTP/1.1 101 Switching Protocols\r\n"
                    b"Transfer-Encoding: chunked\r\n"))
     self.assertEqual(101, request.code)
     self.assertIdentical(None, request.transport)
コード例 #2
0
ファイル: test_websockets.py プロジェクト: codecats/kitty
 def test_renderRealRequest(self):
     """
     The request managed by L{WebSocketsResource.render} doesn't contain
     unnecessary HTTP headers like I{Content-Type} or I{Transfer-Encoding}.
     """
     channel = DummyChannel()
     channel.transport = StringTransportWithDisconnection()
     channel.transport.protocol = channel
     request = Request(channel, False)
     headers = {
         "upgrade": "Websocket",
         "connection": "Upgrade",
         "sec-websocket-key": "secure",
         "sec-websocket-version": "13"}
     for key, value in headers.items():
         request.requestHeaders.setRawHeaders(key, [value])
     request.method = "GET"
     request.clientproto = "HTTP/1.1"
     result = self.resource.render(request)
     self.assertEqual(NOT_DONE_YET, result)
     self.assertEqual(
         [("Connection", ["Upgrade"]),
          ("Upgrade", ["WebSocket"]),
          ("Sec-Websocket-Accept", ["oYBv54i42V5dw6KnZqOFroecUTc="])],
         list(request.responseHeaders.getAllRawHeaders()))
     self.assertEqual(
         "HTTP/1.1 101 Switching Protocols\r\n"
         "Connection: Upgrade\r\n"
         "Upgrade: WebSocket\r\n"
         "Sec-Websocket-Accept: oYBv54i42V5dw6KnZqOFroecUTc=\r\n\r\n",
         channel.transport.value())
     self.assertEqual(101, request.code)
     self.assertIdentical(None, request.transport)
コード例 #3
0
 def renderRequest(self,
                   headers=None,
                   url="/test",
                   ssl=False,
                   queued=False,
                   body=None):
     """
     Render a request against C{self.site}, writing the WebSocket
     handshake.
     """
     if headers is None:
         headers = [("Upgrade", "WebSocket"), ("Connection", "Upgrade"),
                    ("Host", "localhost"), ("Origin", "http://localhost/")]
     channel = DummyChannel()
     if ssl:
         channel.transport = channel.SSL()
     channel.site = self.site
     request = self.site.requestFactory(channel, queued)
     for k, v in headers:
         request.requestHeaders.addRawHeader(k, v)
     request.gotLength(0)
     request.requestReceived("GET", url, "HTTP/1.1")
     if body:
         request.channel._transferDecoder.finishCallback(body)
     return channel
コード例 #4
0
 def test_renderRealRequest(self):
     """
     The request managed by L{WebSocketsResource.render} doesn't contain
     unnecessary HTTP headers like I{Content-Type} or I{Transfer-Encoding}.
     """
     channel = DummyChannel()
     channel.transport = StringTransportWithDisconnection()
     channel.transport.protocol = channel
     request = Request(channel, False)
     headers = {
         "upgrade": "Websocket",
         "connection": "Upgrade",
         "sec-websocket-key": "secure",
         "sec-websocket-version": "13"
     }
     for key, value in headers.items():
         request.requestHeaders.setRawHeaders(key, [value])
     request.method = "GET"
     request.clientproto = "HTTP/1.1"
     result = self.resource.render(request)
     self.assertEqual(NOT_DONE_YET, result)
     self.assertEqual(
         [("Connection", ["Upgrade"]), ("Upgrade", ["WebSocket"]),
          ("Sec-Websocket-Accept", ["oYBv54i42V5dw6KnZqOFroecUTc="])],
         list(request.responseHeaders.getAllRawHeaders()))
     self.assertEqual(
         "HTTP/1.1 101 Switching Protocols\r\n"
         "Connection: Upgrade\r\n"
         "Upgrade: WebSocket\r\n"
         "Sec-Websocket-Accept: oYBv54i42V5dw6KnZqOFroecUTc=\r\n\r\n",
         channel.transport.value())
     self.assertEqual(101, request.code)
     self.assertIdentical(None, request.transport)
コード例 #5
0
 def renderRequest(self, headers=None, url="/test", ssl=False,
                   queued=False, body=None):
     """
     Render a request against C{self.site}, writing the WebSocket
     handshake.
     """
     if headers is None:
         headers = [
             ("Upgrade", "WebSocket"), ("Connection", "Upgrade"),
             ("Host", "localhost"), ("Origin", "http://localhost/")]
     channel = DummyChannel()
     if ssl:
         channel.transport = channel.SSL()
     channel.site = self.site
     request = self.site.requestFactory(channel, queued)
     for k, v in headers:
         request.requestHeaders.addRawHeader(k, v)
     request.gotLength(0)
     request.requestReceived("GET", url, "HTTP/1.1")
     if body:
         request.channel._transferDecoder.finishCallback(body)
     return channel
コード例 #6
0
ファイル: test_wsgi.py プロジェクト: AnthonyNystrom/YoGoMee
 def channelFactory():
     channel = DummyChannel()
     channel.transport = DummyChannel.SSL()
     return channel
コード例 #7
0
ファイル: test_wsgi.py プロジェクト: AnthonyNystrom/YoGoMee
 def makeChannel():
     channel = DummyChannel()
     channel.transport = DummyChannel.TCP()
     channel.transport.port = portNumber
     return channel