Skip to content

Commit 32a52d1

Browse files
committed
Test auth with identify.
1 parent f4cf57f commit 32a52d1

File tree

1 file changed

+40
-24
lines changed

1 file changed

+40
-24
lines changed

tests/test_nsqd.py

+40-24
Original file line numberDiff line numberDiff line change
@@ -312,6 +312,9 @@ def handle(socket, address):
312312
assert nsq.unpack_size(socket.recv(4)) == 6
313313
assert socket.recv(6) == 'secret'
314314

315+
resp = json.dumps({'identity': 'awesome'})
316+
socket.send(mock_response(nsq.FRAME_TYPE_RESPONSE, resp))
317+
315318
with handle as server:
316319
conn = Nsqd(
317320
address='127.0.0.1',
@@ -320,40 +323,53 @@ def handle(socket, address):
320323
)
321324

322325
conn.connect()
323-
conn.auth()
326+
resp = conn.auth()
327+
assert resp['identify'] == 'awesome'
324328

325329

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:
329351
conn = Nsqd(
330352
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'
333355
)
334-
conn.connect()
335-
assert conn.state == states.CONNECTED
336356

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
340359

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
345363

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'
350366

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()
355369

356-
conn.close_stream()
370+
resp = conn.identify()
371+
assert resp['auth_required']
372+
assert server.auth_was_called
357373

358374

359375
@pytest.mark.parametrize('tls,deflate,snappy', product((True, False), repeat=3))

0 commit comments

Comments
 (0)