@@ -312,6 +312,9 @@ def handle(socket, address):
312
312
assert nsq .unpack_size (socket .recv (4 )) == 6
313
313
assert socket .recv (6 ) == 'secret'
314
314
315
+ resp = json .dumps ({'identity' : 'awesome' })
316
+ socket .send (mock_response (nsq .FRAME_TYPE_RESPONSE , resp ))
317
+
315
318
with handle as server :
316
319
conn = Nsqd (
317
320
address = '127.0.0.1' ,
@@ -320,40 +323,53 @@ def handle(socket, address):
320
323
)
321
324
322
325
conn .connect ()
323
- conn .auth ()
326
+ resp = conn .auth ()
327
+ assert resp ['identify' ] == 'awesome'
324
328
325
329
326
- @pytest .mark .slow
327
- def test_server_auth ():
328
- with NsqdIntegrationServer () as server :
330
+ def test_identify_auth ():
331
+ @mock_server
332
+ def handle (socket , address ):
333
+ assert socket .recv (4 ) == ' V2'
334
+ assert socket .recv (9 ) == 'IDENTIFY\n '
335
+
336
+ size = nsq .unpack_size (socket .recv (4 ))
337
+ data = json .loads (socket .recv (size ))
338
+ assert 'gnsq' in data ['user_agent' ]
339
+
340
+ resp = json .dumps ({'auth_required' : True })
341
+ socket .send (mock_response (nsq .FRAME_TYPE_RESPONSE , resp ))
342
+
343
+ assert socket .recv (5 ) == 'AUTH\n '
344
+ assert nsq .unpack_size (socket .recv (4 )) == 6
345
+ assert socket .recv (6 ) == 'secret'
346
+
347
+ resp = json .dumps ({'identity' : 'awesome' })
348
+ socket .send (mock_response (nsq .FRAME_TYPE_RESPONSE , resp ))
349
+
350
+ with handle as server :
329
351
conn = Nsqd (
330
352
address = '127.0.0.1' ,
331
- tcp_port = server .tcp_address ,
332
- auth_secret = 'secret' ,
353
+ tcp_port = server .server_port ,
354
+ auth_secret = 'secret'
333
355
)
334
- conn .connect ()
335
- assert conn .state == states .CONNECTED
336
356
337
- resp = conn .identify ()
338
- assert isinstance (resp , dict )
339
- assert resp ['auth_required' ] is True
357
+ server .auth_was_called = False
358
+ _auth = conn .auth
340
359
341
- conn .publish ('topic' , 'sup' )
342
- frame , data = conn .read_response ()
343
- assert frame == nsq .FRAME_TYPE_RESPONSE
344
- assert data == 'OK'
360
+ def auth ():
361
+ assert server .auth_was_called is False
362
+ server .auth_was_called = True
345
363
346
- conn .subscribe ('topic' , 'channel' )
347
- frame , data = conn .read_response ()
348
- assert frame == nsq .FRAME_TYPE_RESPONSE
349
- assert data == 'OK'
364
+ resp = _auth ()
365
+ assert resp ['identify' ] == 'awesome'
350
366
351
- conn .ready (1 )
352
- frame , data = conn .read_response ()
353
- assert frame == nsq .FRAME_TYPE_MESSAGE
354
- assert data .body == 'sup'
367
+ conn .auth = auth
368
+ conn .connect ()
355
369
356
- conn .close_stream ()
370
+ resp = conn .identify ()
371
+ assert resp ['auth_required' ]
372
+ assert server .auth_was_called
357
373
358
374
359
375
@pytest .mark .parametrize ('tls,deflate,snappy' , product ((True , False ), repeat = 3 ))
0 commit comments