File: test_sasl_scram.py

package info (click to toggle)
python-nbxmpp 6.3.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 1,340 kB
  • sloc: python: 19,639; makefile: 4
file content (39 lines) | stat: -rw-r--r-- 1,235 bytes parent folder | download | duplicates (2)
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
35
36
37
38
39
import unittest
from unittest.mock import Mock

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.maxDiff = None
        self._username = "user"
        self._password = "pencil"  # noqa: S105
        self._mechanism = SCRAM_SHA_1(self._username, self._password, None)
        self._mechanism._client_nonce = "fyko+d2lbbFgONRv9qkxdawL"

    def test_auth(self):
        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)

        response = b64encode(
            "c=biws,r=fyko+d2lbbFgONRv9qkxdawL3rfcNHYJY1ZVvWVs7j,p=v0X8v3Bz2T0CJGbJQyF0X+HI4Ts="
        )
        self.assertEqual(data, response)

        success = b64encode("v=rmF9pqV8S7suAoZWja4dJRkFsKQ=")
        self._mechanism.validate_success_data(success)


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