1111# Run a test server in a thread. This is easier than running an asyncio server
1212# because we would have to run main() in a thread, due to using asyncio.run().
1313from .sync .server import get_uri , run_server
14+ from .utils import SERVER_CONTEXT
1415
1516
1617vt100_commands = re .compile (r"\x1b\[[A-Z]|\x1b[78]|\r" )
@@ -24,6 +25,10 @@ def add_connection_messages(output, server_uri):
2425 return f"Connected to { server_uri } .\n { output } Connection closed: 1000 (OK).\n "
2526
2627
28+ def echo_handler (websocket ):
29+ websocket .send (websocket .recv ())
30+
31+
2732class CLITests (unittest .TestCase ):
2833 def run_main (self , argv , inputs = "" , close_input = False , expected_exit_code = None ):
2934 # Replace sys.stdin with a file-like object backed by a file descriptor
@@ -93,9 +98,6 @@ def handler(websocket):
9398 )
9499
95100 def test_send_message (self ):
96- def echo_handler (websocket ):
97- websocket .send (websocket .recv ())
98-
99101 with run_server (echo_handler ) as server :
100102 server_uri = get_uri (server )
101103 output = self .run_main ([server_uri ], "hello\n " )
@@ -117,6 +119,21 @@ def wait_handler(websocket):
117119 add_connection_messages ("" , server_uri ),
118120 )
119121
122+ def test_insecure_connection_rejected (self ):
123+ with run_server (echo_handler , ssl = SERVER_CONTEXT ) as server :
124+ server_uri = get_uri (server , secure = True )
125+ output = self .run_main ([server_uri ], "hello\n " , expected_exit_code = 1 )
126+ self .assertTrue (output .startswith (f"Failed to connect to { server_uri } : " ))
127+
128+ def test_insecure_connection_accepted (self ):
129+ with run_server (echo_handler , ssl = SERVER_CONTEXT ) as server :
130+ server_uri = get_uri (server , secure = True )
131+ output = self .run_main ([server_uri , "--insecure" ], "hello\n " )
132+ self .assertEqual (
133+ remove_commands_and_prompts (output ),
134+ add_connection_messages ("\n < hello\n " , server_uri ),
135+ )
136+
120137 def test_connection_failure (self ):
121138 output = self .run_main (["ws://localhost:54321" ], expected_exit_code = 1 )
122139 self .assertTrue (
0 commit comments