diff options
author | lovetox <philipp@hoerist.com> | 2022-08-28 09:46:49 +0300 |
---|---|---|
committer | Philipp Hörist <philipp@hoerist.com> | 2022-08-28 10:01:40 +0300 |
commit | c9969f4fe6caafa07397fe04d940c5e08a912f33 (patch) | |
tree | c49a0e4e145949c10bc005a7139caa1fa3676161 /test | |
parent | 85120e7ccc04e835312b6043d54e8c4091c984e0 (diff) |
refactor: SASL: Prepare module for XEP-0388
- Move sending stanzas out of mechanism impl
- Add missing SHA-512-PLUS method
- Add type hints
Diffstat (limited to 'test')
-rw-r--r-- | test/unit/test_sasl_scram.py | 27 |
1 files changed, 14 insertions, 13 deletions
diff --git a/test/unit/test_sasl_scram.py b/test/unit/test_sasl_scram.py index d41e48e..2c14e32 100644 --- a/test/unit/test_sasl_scram.py +++ b/test/unit/test_sasl_scram.py @@ -1,33 +1,34 @@ import unittest from unittest.mock import Mock -from nbxmpp.auth import SCRAM_SHA_1 +from nbxmpp.sasl import SCRAM_SHA_1 from nbxmpp.util import b64encode # Test vector from https://wiki.xmpp.org/web/SASL_and_SCRAM-SHA-1 + class SCRAM(unittest.TestCase): def setUp(self): self.con = Mock() - self._method = SCRAM_SHA_1(self.con, None) - self._method._client_nonce = 'fyko+d2lbbFgONRv9qkxdawL' self.maxDiff = None self._username = 'user' self._password = 'pencil' - - self.auth = '<auth xmlns="urn:ietf:params:xml:ns:xmpp-sasl" mechanism="SCRAM-SHA-1">%s</auth>' % b64encode('n,,n=user,r=fyko+d2lbbFgONRv9qkxdawL') - self.challenge = b64encode('r=fyko+d2lbbFgONRv9qkxdawL3rfcNHYJY1ZVvWVs7j,s=QSXCR+Q6sek8bf92,i=4096') - self.response = '<response xmlns="urn:ietf:params:xml:ns:xmpp-sasl">%s</response>' % b64encode('c=biws,r=fyko+d2lbbFgONRv9qkxdawL3rfcNHYJY1ZVvWVs7j,p=v0X8v3Bz2T0CJGbJQyF0X+HI4Ts=') - self.success = b64encode('v=rmF9pqV8S7suAoZWja4dJRkFsKQ=') + self._mechanism = SCRAM_SHA_1(self._username, self._password, None) + self._mechanism._client_nonce = 'fyko+d2lbbFgONRv9qkxdawL' def test_auth(self): - self._method.initiate(self._username, self._password) - self.assertEqual(self.auth, str(self.con.send_nonza.call_args[0][0])) + initial = b64encode('n,,n=user,r=fyko+d2lbbFgONRv9qkxdawL') + data = self._mechanism.get_initiate_data() + self.assertEqual(data, initial) + + challenge = b64encode('r=fyko+d2lbbFgONRv9qkxdawL3rfcNHYJY1ZVvWVs7j,s=QSXCR+Q6sek8bf92,i=4096') + data = self._mechanism.get_response_data(challenge) - self._method.response(self.challenge) - self.assertEqual(self.response, str(self.con.send_nonza.call_args[0][0])) + response = b64encode('c=biws,r=fyko+d2lbbFgONRv9qkxdawL3rfcNHYJY1ZVvWVs7j,p=v0X8v3Bz2T0CJGbJQyF0X+HI4Ts=') + self.assertEqual(data, response) - self._method.success(self.success) + success = b64encode('v=rmF9pqV8S7suAoZWja4dJRkFsKQ=') + self._mechanism.validate_success_data(success) if __name__ == '__main__': |