Skip to content

Commit 30d839f

Browse files
committed
Add test (fails w/o changes)
1 parent e1c7f2b commit 30d839f

File tree

1 file changed

+42
-0
lines changed

1 file changed

+42
-0
lines changed

test/sasl/test_gssapi.py

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
from __future__ import absolute_import
2+
3+
try:
4+
from unittest import mock
5+
except ImportError:
6+
import mock
7+
8+
from kafka.sasl import get_sasl_mechanism
9+
import kafka.sasl.gssapi
10+
11+
12+
def test_gssapi():
13+
config = {
14+
'sasl_kerberos_domain_name': 'foo',
15+
'sasl_kerberos_service_name': 'bar',
16+
}
17+
client_ctx = mock.Mock()
18+
client_ctx.step.side_effect = [b'init', b'exchange', b'complete', b'xxxx']
19+
client_ctx.complete = False
20+
def mocked_message_wrapper(msg, *args):
21+
wrapped = mock.Mock()
22+
type(wrapped).message = mock.PropertyMock(return_value=msg)
23+
return wrapped
24+
client_ctx.unwrap.side_effect = mocked_message_wrapper
25+
client_ctx.wrap.side_effect = mocked_message_wrapper
26+
kafka.sasl.gssapi.gssapi = mock.Mock()
27+
kafka.sasl.gssapi.gssapi.SecurityContext.return_value = client_ctx
28+
gssapi = get_sasl_mechanism('GSSAPI')(**config)
29+
assert isinstance(gssapi, kafka.sasl.gssapi.SaslMechanismGSSAPI)
30+
client_ctx.step.assert_called_with(None)
31+
32+
while not gssapi.is_done():
33+
send_token = gssapi.auth_bytes()
34+
receive_token = send_token # not realistic, but enough for testing
35+
if send_token == b'\x00cbar@foo': # final wrapped message
36+
receive_token = b'' # final message gets an empty response
37+
gssapi.receive(receive_token)
38+
if client_ctx.step.call_count == 3:
39+
client_ctx.complete = True
40+
41+
assert gssapi.is_done()
42+
assert gssapi.is_authenticated()

0 commit comments

Comments
 (0)