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'] )
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'] )
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)
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'] )