@@ -210,6 +210,60 @@ def test_on_connect_fail_hello(self, mock_read_response, mock_send_command):
210
210
mock_send_command .assert_called ()
211
211
mock_read_response .assert_called ()
212
212
213
+ @patch .object (Connection , 'send_command' )
214
+ @patch .object (Connection , 'read_response' )
215
+ def test_on_connect_fail_auth (self , mock_read_response , mock_send_command ):
216
+ """Test that on_connect handles connection failure AUTH command"""
217
+ conn = Connection ()
218
+
219
+ conn ._parser = MagicMock ()
220
+ conn ._parser .on_connect .return_value = None
221
+ conn .credential_provider = None
222
+ conn .username = "myuser"
223
+ conn .password = "wrong-password"
224
+ conn .protocol = 3
225
+ conn .client_name = "test-client"
226
+ conn .lib_name = "test"
227
+ conn .lib_version = "1234"
228
+ conn .db = 1
229
+ conn .client_cache = True
230
+
231
+ # simulate a failure in the HELLO command response
232
+ mock_read_response .side_effect = itertools .cycle ([
233
+ {"proto" : 3 , "version" : "6" }, # HELLO
234
+ b'QUEUED' , # MULTI
235
+ b'QUEUED' , # AUTH
236
+ b'QUEUED' , # CLIENT SETNAME
237
+ b'QUEUED' , # CLIENT SETINFO LIB-NAME
238
+ b'QUEUED' , # CLIENT SETINFO LIB-VER
239
+ b'QUEUED' , # SELECT
240
+ b'QUEUED' , # CLIENT TRACKING ON
241
+ [
242
+ {"proto" : 3 , "version" : "6" }, # HELLO response
243
+ b'ERR invalid password' , # AUTH response
244
+ b'OK' , # CLIENT SETNAME response
245
+ b'OK' , # CLIENT SETINFO LIB-NAME response
246
+ b'OK' , # CLIENT SETINFO LIB-VER response
247
+ b'OK' , # SELECT response
248
+ b'OK' # CLIENT TRACKING ON response
249
+ ]
250
+ ])
251
+
252
+ with self .assertRaises (AuthenticationError ):
253
+ conn .on_connect ()
254
+
255
+ mock_send_command .assert_any_call (
256
+ 'HELLO' , 3 , 'AUTH' , 'myuser' , 'wrong-password' ),
257
+ mock_send_command .assert_any_call ('CLIENT' , 'SETNAME' , 'test-client' ),
258
+ mock_send_command .assert_any_call ('CLIENT' , 'SETINFO' , 'LIB-NAME' , 'test' ),
259
+ mock_send_command .assert_any_call ('CLIENT' , 'SETINFO' , 'LIB-VER' , '1234' ),
260
+ mock_send_command .assert_any_call ('SELECT' , 1 ),
261
+ mock_send_command .assert_any_call ('CLIENT' , 'TRACKING' , 'ON' ),
262
+ mock_send_command .assert_any_call ('EXEC' )
263
+
264
+ mock_send_command .assert_called ()
265
+ mock_read_response .assert_called ()
266
+
213
267
214
268
215
269
@pytest .mark .onlynoncluster
0 commit comments