File: test_sasl_scram.py

package info (click to toggle)
python-nbxmpp 2.0.2-1%2Bdeb11u1
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 1,120 kB
  • sloc: python: 14,949; makefile: 8
file content (34 lines) | stat: -rw-r--r-- 1,383 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
import unittest
from unittest.mock import Mock

from nbxmpp.auth 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=')

    def test_auth(self):
        self._method.initiate(self._username, self._password)
        self.assertEqual(self.auth, str(self.con.send_nonza.call_args[0][0]))

        self._method.response(self.challenge)
        self.assertEqual(self.response, str(self.con.send_nonza.call_args[0][0]))

        self._method.success(self.success)


if __name__ == '__main__':
    unittest.main()