Example #1
0
def test_keep_alive_http10(transport):
    msg = protocol.Response(transport, 200, http_version=(1, 0))
    assert not msg.keepalive
    assert not msg.keep_alive()

    msg = protocol.Response(transport, 200, http_version=(1, 1))
    assert msg.keepalive is None
Example #2
0
    def test_keep_alive_http10(self):
        msg = protocol.Response(self.transport, 200, http_version=(1, 0))
        self.assertFalse(msg.keepalive)
        self.assertFalse(msg.keep_alive())

        msg = protocol.Response(self.transport, 200, http_version=(1, 1))
        self.assertIsNone(msg.keepalive)
Example #3
0
def test_add_headers_upgrade_websocket(transport):
    msg = protocol.Response(transport, 200)
    msg.add_headers(('upgrade', 'test'))
    assert not msg.websocket
    assert [('Upgrade', 'test')] == list(msg.headers.items())

    msg = protocol.Response(transport, 200)
    msg.add_headers(('upgrade', 'websocket'))
    assert msg.websocket
    assert [('Upgrade', 'websocket')] == list(msg.headers.items())
Example #4
0
def test_default_headers_chunked(transport):
    msg = protocol.Response(transport, 200)
    msg._add_default_headers()

    assert 'TRANSFER-ENCODING' not in msg.headers

    msg = protocol.Response(transport, 200)
    msg.enable_chunked_encoding()
    msg.send_headers()

    assert 'TRANSFER-ENCODING' in msg.headers
Example #5
0
def test_default_headers_chunked(stream):
    msg = protocol.Response(stream, 200)
    msg._add_default_headers()

    assert 'TRANSFER-ENCODING' not in msg.headers

    msg = protocol.Response(stream, 200)
    msg.enable_chunking()
    msg.send_headers()

    assert 'TRANSFER-ENCODING' in msg.headers
Example #6
0
    def test_default_headers_chunked(self):
        msg = protocol.Response(self.transport, 200)
        msg._add_default_headers()

        headers = [r for r, _ in msg.headers.items()]
        self.assertNotIn('TRANSFER-ENCODING', headers)

        msg = protocol.Response(self.transport, 200)
        msg.enable_chunked_encoding()
        msg.send_headers()

        headers = [r for r, _ in msg.headers.items()]
        self.assertIn('TRANSFER-ENCODING', headers)
Example #7
0
    def test_default_headers_chunked(self):
        msg = protocol.Response(self.transport, 200)
        msg._add_default_headers()

        headers = [r for r, _ in msg.headers]
        self.assertNotIn('TRANSFER-ENCODING', headers)

        msg = protocol.Response(self.transport, 200)
        msg.force_chunked()
        msg._add_default_headers()

        headers = [r for r, _ in msg.headers]
        self.assertIn('TRANSFER-ENCODING', headers)
Example #8
0
def test_default_headers_connection_keep_alive(transport):
    msg = protocol.Response(transport, 200)
    msg.keepalive = True
    msg._add_default_headers()

    headers = [r for r in msg.headers.items() if r[0] == 'CONNECTION']
    assert [('CONNECTION', 'keep-alive')] == headers
Example #9
0
    def test_default_headers_connection_keep_alive(self):
        msg = protocol.Response(self.transport, 200)
        msg.keepalive = True
        msg._add_default_headers()

        headers = [r for r in msg.headers if r[0] == 'CONNECTION']
        self.assertEqual([('CONNECTION', 'keep-alive')], headers)
Example #10
0
    def test_add_header_with_spaces(self):
        msg = protocol.Response(self.transport, 200)
        self.assertEqual([], list(msg.headers))

        msg.add_header('content-type', '  plain/html  ')
        self.assertEqual(
            [('CONTENT-TYPE', 'plain/html')], list(msg.headers.items()))
Example #11
0
def test_default_headers_connection_keep_alive_http_10(transport):
    msg = protocol.Response(transport, 200,
                            http_version=protocol.HttpVersion10)
    msg.keepalive = True
    msg._add_default_headers()

    assert msg.headers['Connection'] == 'keep-alive'
Example #12
0
def test_default_headers_http_10(transport):
    msg = protocol.Response(transport, 200,
                            http_version=protocol.HttpVersion10)
    msg._add_default_headers()

    assert 'DATE' in msg.headers
    assert 'keep-alive' == msg.headers['CONNECTION']
Example #13
0
def test_default_headers_connection_close(transport):
    msg = protocol.Response(transport, 200)
    msg.force_close()
    msg._add_default_headers()

    headers = [r for r in msg.headers.items() if r[0] == 'CONNECTION']
    assert [('CONNECTION', 'close')] == headers
Example #14
0
def test_send_headers_nomore_add(transport):
    msg = protocol.Response(transport, 200)
    msg.add_headers(('content-type', 'plain/html'))
    msg.send_headers()

    with pytest.raises(AssertionError):
        msg.add_header('content-type', 'plain/html')
Example #15
0
    def test_start_response_with_reason(self):
        msg = protocol.Response(self.transport, 333, close=True,
                                reason="My Reason")

        self.assertEqual(msg.status, 333)
        self.assertEqual(msg.reason, "My Reason")
        self.assertEqual(msg.status_line, 'HTTP/1.1 333 My Reason\r\n')
Example #16
0
def test_default_headers_connection_keep_alive_11(transport):
    msg = protocol.Response(transport, 200,
                            http_version=protocol.HttpVersion11)
    msg.keepalive = True
    msg._add_default_headers()

    assert 'Connection' not in msg.headers
Example #17
0
 def test_dont_override_response_headers_with_default_values(self):
     msg = protocol.Response(self.transport, 200, http_version=(1, 0))
     msg.add_header('DATE', 'now')
     msg.add_header('SERVER', 'custom')
     msg._add_default_headers()
     self.assertEqual('custom', msg.headers['SERVER'])
     self.assertEqual('now', msg.headers['DATE'])
Example #18
0
def test_start_response_with_reason(transport):
    msg = protocol.Response(transport, 333, close=True,
                            reason="My Reason")

    assert msg.status == 333
    assert msg.reason == "My Reason"
    assert msg.status_line == 'HTTP/1.1 333 My Reason\r\n'
Example #19
0
    def test_default_headers(self):
        msg = protocol.Response(self.transport, 200)
        msg._add_default_headers()

        headers = [r for r, _ in msg.headers]
        self.assertIn('DATE', headers)
        self.assertIn('CONNECTION', headers)
Example #20
0
def test_dont_override_response_headers_with_default_values(transport):
    msg = protocol.Response(transport, 200, http_version=(1, 0))
    msg.add_header('DATE', 'now')
    msg.add_header('SERVER', 'custom')
    msg._add_default_headers()
    assert 'custom' == msg.headers['SERVER']
    assert 'now' == msg.headers['DATE']
Example #21
0
    def test_default_headers_connection_close(self):
        msg = protocol.Response(self.transport, 200)
        msg.force_close()
        msg._add_default_headers()

        headers = [r for r in msg.headers if r[0] == 'CONNECTION']
        self.assertEqual([('CONNECTION', 'close')], headers)
Example #22
0
    def test_default_headers_connection_upgrade(self):
        msg = protocol.Response(self.transport, 200)
        msg.upgrade = True
        msg._add_default_headers()

        headers = [r for r in msg.headers.items() if r[0] == 'CONNECTION']
        self.assertEqual([('CONNECTION', 'upgrade')], headers)
Example #23
0
def test_default_headers(transport):
    msg = protocol.Response(transport, 200)
    msg._add_default_headers()

    headers = [r for r, _ in msg.headers.items()]
    assert 'DATE' in headers
    assert 'CONNECTION' in headers
Example #24
0
    def test_start_response(self):
        msg = protocol.Response(self.transport, 200, close=True)

        self.assertIs(msg.transport, self.transport)
        self.assertEqual(msg.status, 200)
        self.assertTrue(msg.closing)
        self.assertEqual(msg.status_line, 'HTTP/1.1 200 OK\r\n')
Example #25
0
    def test_add_headers_upgrade_websocket(self):
        msg = protocol.Response(self.transport, 200)

        msg.add_headers(('upgrade', 'test'))
        self.assertEqual([], list(msg.headers))

        msg.add_headers(('upgrade', 'websocket'))
        self.assertEqual([('UPGRADE', 'websocket')], list(msg.headers))
Example #26
0
def test_keep_alive(transport):
    msg = protocol.Response(transport, 200, close=True)
    assert not msg.keep_alive()
    msg.keepalive = True
    assert msg.keep_alive()

    msg.force_close()
    assert not msg.keep_alive()
Example #27
0
    def test_keep_alive(self):
        msg = protocol.Response(self.transport, 200, close=True)
        self.assertFalse(msg.keep_alive())
        msg.keepalive = True
        self.assertTrue(msg.keep_alive())

        msg.force_close()
        self.assertFalse(msg.keep_alive())
Example #28
0
    def test_write_auto_send_headers(self):
        msg = protocol.Response(self.transport, 200, http_version=(1, 0))
        msg._send_headers = True

        msg.write(b'data1')
        self.assertTrue(msg.headers_sent)
        # cleanup
        msg.writer.close()
Example #29
0
    def test_prepare_eof(self):
        msg = protocol.Response(self.transport, 200, http_version=(1, 0))

        eof = msg._write_eof_payload = unittest.mock.Mock()
        eof.return_value = iter([1, 2, 3])

        msg.send_headers()
        self.assertTrue(eof.called)
Example #30
0
    def test_prepare_chunked_no_length(self):
        msg = protocol.Response(self.transport, 200)

        chunked = msg._write_chunked_payload = unittest.mock.Mock()
        chunked.return_value = iter([1, 2, 3])

        msg.send_headers()
        self.assertTrue(chunked.called)