@@ -106,10 +106,11 @@ def make_request(self):
106
106
),
107
107
)
108
108
109
- def test_send_accept (self ):
109
+ def test_send_response_after_successful_accept (self ):
110
110
server = ServerProtocol ()
111
+ request = self .make_request ()
111
112
with unittest .mock .patch ("email.utils.formatdate" , return_value = DATE ):
112
- response = server .accept (self . make_request () )
113
+ response = server .accept (request )
113
114
self .assertIsInstance (response , Response )
114
115
server .send_response (response )
115
116
self .assertEqual (
@@ -126,7 +127,32 @@ def test_send_accept(self):
126
127
self .assertFalse (server .close_expected ())
127
128
self .assertEqual (server .state , OPEN )
128
129
129
- def test_send_reject (self ):
130
+ def test_send_response_after_failed_accept (self ):
131
+ server = ServerProtocol ()
132
+ request = self .make_request ()
133
+ del request .headers ["Sec-WebSocket-Key" ]
134
+ with unittest .mock .patch ("email.utils.formatdate" , return_value = DATE ):
135
+ response = server .accept (request )
136
+ self .assertIsInstance (response , Response )
137
+ server .send_response (response )
138
+ self .assertEqual (
139
+ server .data_to_send (),
140
+ [
141
+ f"HTTP/1.1 400 Bad Request\r \n "
142
+ f"Date: { DATE } \r \n "
143
+ f"Connection: close\r \n "
144
+ f"Content-Length: 94\r \n "
145
+ f"Content-Type: text/plain; charset=utf-8\r \n "
146
+ f"\r \n "
147
+ f"Failed to open a WebSocket connection: "
148
+ f"missing Sec-WebSocket-Key header; 'sec-websocket-key'.\n " .encode (),
149
+ b"" ,
150
+ ],
151
+ )
152
+ self .assertTrue (server .close_expected ())
153
+ self .assertEqual (server .state , CONNECTING )
154
+
155
+ def test_send_response_after_reject (self ):
130
156
server = ServerProtocol ()
131
157
with unittest .mock .patch ("email.utils.formatdate" , return_value = DATE ):
132
158
response = server .reject (http .HTTPStatus .NOT_FOUND , "Sorry folks.\n " )
@@ -148,6 +174,19 @@ def test_send_reject(self):
148
174
self .assertTrue (server .close_expected ())
149
175
self .assertEqual (server .state , CONNECTING )
150
176
177
+ def test_send_response_without_accept_or_reject (self ):
178
+ server = ServerProtocol ()
179
+ server .send_response (Response (410 , "Gone" , Headers (), b"AWOL.\n " ))
180
+ self .assertEqual (
181
+ server .data_to_send (),
182
+ [
183
+ "HTTP/1.1 410 Gone\r \n \r \n AWOL.\n " .encode (),
184
+ b"" ,
185
+ ],
186
+ )
187
+ self .assertTrue (server .close_expected ())
188
+ self .assertEqual (server .state , CONNECTING )
189
+
151
190
def test_accept_response (self ):
152
191
server = ServerProtocol ()
153
192
with unittest .mock .patch ("email.utils.formatdate" , return_value = DATE ):
0 commit comments