38 lines
1.2 KiB
Python
38 lines
1.2 KiB
Python
|
# -*- encoding: utf-8 -*-
|
||
|
|
||
|
import unittest
|
||
|
|
||
|
from pillar.web import utils
|
||
|
|
||
|
|
||
|
class IsValidIdTest(unittest.TestCase):
|
||
|
def test_valid(self):
|
||
|
# 24-byte hex strings
|
||
|
self.assertTrue(utils.is_valid_id(24 * 'a'))
|
||
|
self.assertTrue(utils.is_valid_id(24 * u'a'))
|
||
|
self.assertTrue(utils.is_valid_id('deadbeefbeefcacedeadcace'))
|
||
|
self.assertTrue(utils.is_valid_id(u'deadbeefbeefcacedeadcace'))
|
||
|
|
||
|
# 12-byte arbitrary ASCII strings
|
||
|
self.assertTrue(utils.is_valid_id('DeadBeefCake'))
|
||
|
self.assertTrue(utils.is_valid_id(u'DeadBeefCake'))
|
||
|
|
||
|
# 12-byte str object
|
||
|
self.assertTrue(utils.is_valid_id('beef€67890'))
|
||
|
|
||
|
def test_bad_length(self):
|
||
|
self.assertFalse(utils.is_valid_id(23 * 'a'))
|
||
|
self.assertFalse(utils.is_valid_id(25 * u'a'))
|
||
|
|
||
|
def test_non_string(self):
|
||
|
self.assertFalse(utils.is_valid_id(None))
|
||
|
self.assertFalse(utils.is_valid_id(1234))
|
||
|
self.assertFalse(utils.is_valid_id([24 * 'a']))
|
||
|
|
||
|
def test_bad_content(self):
|
||
|
# 24-character non-hexadecimal string
|
||
|
self.assertFalse(utils.is_valid_id('deadbeefbeefcakedeadcake'))
|
||
|
|
||
|
# unicode variant of valid 12-byte str object
|
||
|
self.assertFalse(utils.is_valid_id(u'beef€67890'))
|