test_utils inventory and new tests
This commit is contained in:
@@ -10,6 +10,8 @@ fix_sys_path(__file__)
|
||||
|
||||
from utils import md5_hash
|
||||
from utils import compare
|
||||
from utils import is_valid_ip_address
|
||||
from utils import web2py_uuid
|
||||
|
||||
import hashlib
|
||||
from hashlib import md5, sha1, sha224, sha256, sha384, sha512
|
||||
@@ -19,11 +21,7 @@ from utils import simple_hash, get_digest, secure_dumps, secure_loads
|
||||
class TestUtils(unittest.TestCase):
|
||||
""" Tests the utils.py module """
|
||||
|
||||
def test_md5_hash(self):
|
||||
""" Tests the md5_hash function """
|
||||
|
||||
data = md5_hash("web2py rocks")
|
||||
self.assertEqual(data, '79509f3246a2824dee64635303e99204')
|
||||
# TODO: def test_AES_new(self):
|
||||
|
||||
def test_compare(self):
|
||||
""" Tests the compare funciton """
|
||||
@@ -36,35 +34,62 @@ class TestUtils(unittest.TestCase):
|
||||
compare_result_false = compare(a, b)
|
||||
self.assertFalse(compare_result_false)
|
||||
|
||||
def test_md5_hash(self):
|
||||
""" Tests the md5_hash function """
|
||||
|
||||
data = md5_hash("web2py rocks")
|
||||
self.assertEqual(data, '79509f3246a2824dee64635303e99204')
|
||||
|
||||
def test_simple_hash(self):
|
||||
""" Tests the simple_hash function """
|
||||
|
||||
# no key, no salt, md5
|
||||
# no key, no salt, digest_alg=None
|
||||
self.assertRaises(RuntimeError, simple_hash, 'web2py rocks!', key='', salt='', digest_alg=None)
|
||||
|
||||
# no key, no salt, digest_alg = md5
|
||||
data_md5 = simple_hash('web2py rocks!', key='', salt='', digest_alg=md5)
|
||||
self.assertEqual(data_md5, '37d95defba6c8834cb8cae86ee888568')
|
||||
|
||||
# no key, no salt, 'md5'
|
||||
data_md5 = simple_hash('web2py rocks!', key='', salt='', digest_alg='md5')
|
||||
self.assertEqual(data_md5, '37d95defba6c8834cb8cae86ee888568')
|
||||
|
||||
# no key, no salt, sha1
|
||||
# no key, no salt, 'sha1'
|
||||
data_sha1 = simple_hash('web2py rocks!', key='', salt='', digest_alg='sha1')
|
||||
self.assertEqual(data_sha1, '00489a46753d8db260c71542611cdef80652c4b7')
|
||||
|
||||
# no key, no salt, sha224
|
||||
# no key, no salt, 'sha224'
|
||||
data_sha224 = simple_hash('web2py rocks!', key='', salt='', digest_alg='sha224')
|
||||
self.assertEqual(data_sha224, '84d7054271842c2c17983baa2b1447e0289d101140a8c002d49d60da')
|
||||
|
||||
# no key, no salt, sha256
|
||||
# no key, no salt, 'sha256'
|
||||
data_sha256 = simple_hash('web2py rocks!', key='', salt='', digest_alg='sha256')
|
||||
self.assertEqual(data_sha256, '0849f224d8deb267e4598702aaec1bd749e6caec90832469891012a4be24af08')
|
||||
|
||||
# no key, no salt, sha384
|
||||
# no key, no salt, 'sha384'
|
||||
data_sha384 = simple_hash('web2py rocks!', key='', salt='', digest_alg='sha384')
|
||||
self.assertEqual(data_sha384,
|
||||
'3cffaf39371adbe84eb10f588d2718207d8e965e9172a27a278321b86977351376ae79f92e91d8c58cad86c491282d5f')
|
||||
'3cffaf39371adbe84eb10f588d2718207d8e965e9172a27a278321b86977351376ae79f92e91d8c58cad86c491282d5f')
|
||||
|
||||
# no key, no salt, sha512
|
||||
# no key, no salt, 'sha512'
|
||||
data_sha512 = simple_hash('web2py rocks!', key='', salt='', digest_alg='sha512')
|
||||
self.assertEqual(data_sha512, 'fa3237f594743e1d7b6c800bb134b3255cf4a98ab8b01e2ec23256328c9f8059'
|
||||
'64fdef25a038d6cc3fda1b2fb45d66461eeed5c4669e506ec8bdfee71348db7e')
|
||||
|
||||
# NOTE : get_digest() is covered by simple_hash tests above except raise error...
|
||||
def test_get_digest(self):
|
||||
# Bad algorithm
|
||||
# Option 1, think not working with python 2.6
|
||||
# with self.assertRaises(ValueError) as cm:
|
||||
# get_digest('123')
|
||||
# self.assertEqual(cm.exception[0], 'Invalid digest algorithm: 123')
|
||||
# Option 2
|
||||
self.assertRaises(ValueError, get_digest, '123')
|
||||
|
||||
# TODO: def test_get_callable_argspec(self):
|
||||
|
||||
# TODO: def test_pad(self):
|
||||
|
||||
def test_secure_dumps_and_loads(self):
|
||||
""" Tests secure_dumps and secure_loads"""
|
||||
testobj = {'a': 1, 'b': 2}
|
||||
@@ -96,5 +121,40 @@ class TestUtils(unittest.TestCase):
|
||||
wrong4 = secure_loads('abc', 'a', 'b')
|
||||
self.assertEqual(wrong4, None)
|
||||
|
||||
# TODO: def test_initialize_urandom(self):
|
||||
|
||||
# TODO: def test_fast_urandom16(self):
|
||||
|
||||
def test_web2py_uuid(self):
|
||||
from uuid import UUID
|
||||
self.assertTrue(UUID(web2py_uuid()))
|
||||
|
||||
def test_is_valid_ip_address(self):
|
||||
# IPv4
|
||||
# False
|
||||
# self.assertEqual(is_valid_ip_address('127.0'), False) # Fail with AppVeyor?? should pass
|
||||
self.assertEqual(is_valid_ip_address('unknown'), False)
|
||||
self.assertEqual(is_valid_ip_address(''), False)
|
||||
# True
|
||||
self.assertEqual(is_valid_ip_address('127.0.0.1'), True)
|
||||
self.assertEqual(is_valid_ip_address('localhost'), True)
|
||||
self.assertEqual(is_valid_ip_address('::1'), True)
|
||||
# IPv6
|
||||
# True
|
||||
# Compressed
|
||||
self.assertEqual(is_valid_ip_address('::ffff:7f00:1'), True) # IPv6 127.0.0.1 compressed
|
||||
self.assertEqual(is_valid_ip_address('2001:660::1'), True)
|
||||
# Expanded
|
||||
self.assertEqual(is_valid_ip_address('0:0:0:0:0:ffff:7f00:1'), True) # IPv6 127.0.0.1 expanded
|
||||
self.assertEqual(is_valid_ip_address('2607:fa48:6d50:69f1:21f:3cff:fe9d:9be3'), True) # Any address
|
||||
# False
|
||||
# self.assertEqual(is_valid_ip_address('2607:fa48:6d50:69f1:21f:3cff:fe9d:'), False) # Any address with mistake
|
||||
# The above pass locally but fail with AppVeyor
|
||||
|
||||
# TODO: def test_is_loopback_ip_address(self):
|
||||
|
||||
# TODO: def test_getipaddrinfo(self):
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
unittest.main()
|
||||
|
||||
Reference in New Issue
Block a user