Welcome to mirror list, hosted at ThFree Co, Russian Federation.

dev.gajim.org/gajim/python-nbxmpp.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorlovetox <philipp@hoerist.com>2022-08-28 09:46:49 +0300
committerPhilipp Hörist <philipp@hoerist.com>2022-08-28 10:01:40 +0300
commitc9969f4fe6caafa07397fe04d940c5e08a912f33 (patch)
treec49a0e4e145949c10bc005a7139caa1fa3676161 /test
parent85120e7ccc04e835312b6043d54e8c4091c984e0 (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.py27
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__':