blob: 74963e6127a38c78ab3b0fde493979712f4e7b43 [file] [log] [blame]
Chris Craikb2cbf152015-07-28 16:26:29 -07001# -*- coding: utf-8 -*-
2import re
3
4from webapp2_extras import security
5
6import test_base
7
8
9class TestSecurity(test_base.BaseTestCase):
10 def test_generate_random_string(self):
11 self.assertRaises(ValueError, security.generate_random_string, None)
12 self.assertRaises(ValueError, security.generate_random_string, 0)
13 self.assertRaises(ValueError, security.generate_random_string, -1)
14 self.assertRaises(ValueError, security.generate_random_string, 1, 1)
15
16 token = security.generate_random_string(16)
17 self.assertTrue(re.match(r'^\w{16}$', token) is not None)
18
19 token = security.generate_random_string(32)
20 self.assertTrue(re.match(r'^\w{32}$', token) is not None)
21
22 token = security.generate_random_string(64)
23 self.assertTrue(re.match(r'^\w{64}$', token) is not None)
24
25 token = security.generate_random_string(128)
26 self.assertTrue(re.match(r'^\w{128}$', token) is not None)
27
28 def test_create_check_password_hash(self):
29 self.assertRaises(TypeError, security.generate_password_hash, 'foo',
30 'bar')
31
32 password = 'foo'
33 hashval = security.generate_password_hash(password, 'sha1')
34 self.assertTrue(security.check_password_hash(password, hashval))
35
36 hashval = security.generate_password_hash(password, 'sha1', pepper='bar')
37 self.assertTrue(security.check_password_hash(password, hashval,
38 pepper='bar'))
39
40 hashval = security.generate_password_hash(password, 'md5')
41 self.assertTrue(security.check_password_hash(password, hashval))
42
43 hashval = security.generate_password_hash(password, 'plain')
44 self.assertTrue(security.check_password_hash(password, hashval))
45
46 hashval = security.generate_password_hash(password, 'plain')
47 self.assertFalse(security.check_password_hash(password, ''))
48
49 hashval1 = security.hash_password(unicode(password), 'sha1', u'bar')
50 hashval2 = security.hash_password(unicode(password), 'sha1', u'bar')
51 self.assertTrue(hashval1 is not None)
52 self.assertEqual(hashval1, hashval2)
53
54 hashval1 = security.hash_password(unicode(password), 'md5', None)
55 hashval2 = security.hash_password(unicode(password), 'md5', None)
56 self.assertTrue(hashval1 is not None)
57 self.assertEqual(hashval1, hashval2)
58
59
60if __name__ == '__main__':
61 test_base.main()