示例#1
0
    def test_http_version(self):
        """
        A request method != GET must result in a 400.
        """
        environ = {
            'REQUEST_METHOD': 'GET'
        }

        for version in ['HTTP/0.9', 'HTTP/1.0']:
            env = environ.copy()
            env['SERVER_PROTOCOL'] = version

            self.executed = False

            def start_response(status, headers):
                self.executed = True
                self.assertEqual(status, '400 Bad Request')
                self.assertEqual(headers, [])

            result = wsgi.upgrade_websocket(env, start_response, None)

            self.assertEqual(
                result,
                ['Bad protocol version']
            )
示例#2
0
    def test_method(self):
        """
        A request method != GET must result in a 400.
        """
        for request_method in ['POST', 'DELETE', 'PUT', 'OPTIONS', 'HEAD']:
            self.executed = False
            environ = {
                'REQUEST_METHOD': request_method
            }

            def start_response(status, headers):
                self.executed = True
                self.assertEqual(status, '400 Bad Request')
                self.assertEqual(headers, [])

            result = wsgi.upgrade_websocket(environ, start_response, None)

            self.assertTrue(self.executed)
            self.assertEqual(
                result,
                ['Unknown request method']
            )
示例#3
0
    def test_upgrade(self):
        """
        Given the correct conditions, `upgrade_websocket` should return true.
        """
        from geventwebsocket import hixie

        environ = {
            'REQUEST_METHOD': 'GET',
            'HTTP_ORIGIN': '*',
            'wsgi.websocket': object()
        }

        with mock.patch.object(hixie, 'upgrade_connection'):
            self.executed = False

            def start_response(status, headers):
                self.executed = True
                self.assertEqual(status, '400 Bad Request')
                self.assertEqual(headers, [])

            result = wsgi.upgrade_websocket(environ, start_response, None)

            self.assertTrue(self.executed)
            self.assertTrue(result)
示例#4
0
    def test_set_status(self):
        """
        Setting a status != 101 in `*.upgrade_connection` must result in a
        failure.
        """
        environ = {
            'REQUEST_METHOD': 'GET',
            'HTTP_ORIGIN': '*'
        }

        self.executed = False

        def start_response(status, headers):
            self.executed = True
            self.assertEqual(status, '400 Bad Request')
            self.assertEqual(headers, [])

        result = wsgi.upgrade_websocket(environ, start_response, None)

        self.assertTrue(self.executed)
        self.assertEqual(
            result,
            ['Bad protocol version']
        )