File: test_scrypt_py3x.py

package info (click to toggle)
python-scrypt 0.9.4-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 832 kB
  • sloc: ansic: 6,290; python: 733; sh: 99; makefile: 5
file content (48 lines) | stat: -rw-r--r-- 1,727 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
40
41
42
43
44
45
46
47
48
import unittest as testm
from sys import version_info

import scrypt


@testm.skipIf(version_info < (3, 0, 0, "final", 0), "Tests for Python 3 only")
class TestScryptForPy3(testm.TestCase):
    def setUp(self):
        self.input = "message"
        self.password = "password"
        self.byte_text = (
            b"\xe1\x93\x84\xe1\x93\x87\xe1\x95\x97"
            b"\xe1\x92\xbb\xe1\x92\xa5\xe1\x90\x85\xe1\x91\xa6"
        )
        self.unicode_text = self.byte_text.decode("utf-8", "strict")

    def test_py3_encrypt_allows_bytes_input(self):
        """Test Py3 encrypt allows unicode input."""
        s = scrypt.encrypt(self.byte_text, self.password, 0.1)
        m = scrypt.decrypt(s, self.password)
        self.assertEqual(bytes(m.encode("utf-8")), self.byte_text)

    def test_py3_encrypt_allows_bytes_password(self):
        """Test Py3 encrypt allows unicode password."""
        s = scrypt.encrypt(self.input, self.byte_text, 0.1)
        m = scrypt.decrypt(s, self.byte_text)
        self.assertEqual(m, self.input)

    def test_py3_encrypt_returns_bytes(self):
        """Test Py3 encrypt return bytes."""
        s = scrypt.encrypt(self.input, self.password, 0.1)
        self.assertTrue(isinstance(s, bytes))

    def test_py3_decrypt_returns_unicode_string(self):
        """Test Py3 decrypt returns Unicode UTF-8 string."""
        s = scrypt.encrypt(self.input, self.password, 0.1)
        m = scrypt.decrypt(s, self.password)
        self.assertTrue(isinstance(m, str))

    def test_py3_hash_returns_bytes(self):
        """Test Py3 hash return bytes."""
        h = scrypt.hash(self.input, self.password)
        self.assertTrue(isinstance(h, bytes))


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