Added pillarsdk.utils.is_valid_id(some_id) function.
This allows Pillar-Web to check for ID validity before sending IDs from the URL to Pillar.
This commit is contained in:
@@ -161,3 +161,19 @@ def sanitize_filename(file_name):
|
||||
safe_name = ''.join(c for c in file_name
|
||||
if ord(c) > 31 and c not in badchars)
|
||||
return safe_name.strip(' .')
|
||||
|
||||
|
||||
def is_valid_id(some_id, _valid_id_chars=frozenset(b'0123456789abcdef')):
|
||||
"""Returns True iff the ID has a valid form."""
|
||||
|
||||
if isinstance(some_id, text_type):
|
||||
try:
|
||||
some_id = some_id.encode('ascii')
|
||||
except UnicodeEncodeError:
|
||||
return False
|
||||
|
||||
if len(some_id) != 24:
|
||||
return False
|
||||
|
||||
return all(char in _valid_id_chars
|
||||
for char in some_id)
|
||||
|
||||
@@ -77,3 +77,17 @@ class PillarUtilsTests(unittest.TestCase):
|
||||
self.assertEqual('abc......def', utils.sanitize_filename('././abc../..///..def'))
|
||||
self.assertEqual('Pad Thai is ผัดไทย', utils.sanitize_filename('Pad Thai is ผัดไทย'))
|
||||
self.assertEqual(u'Pad Thai is ผัดไทย', utils.sanitize_filename(u'Pad Thai is ผัดไทย'))
|
||||
|
||||
def test_is_valid_id(self):
|
||||
self.assertTrue(utils.is_valid_id(24 * 'a'))
|
||||
self.assertTrue(utils.is_valid_id('55f35f7e2beb3300960bb074'))
|
||||
self.assertTrue(utils.is_valid_id(u'55f35f7e2beb3300960bb074'))
|
||||
|
||||
self.assertFalse(utils.is_valid_id(u'555f35f7e2beb3300960bb074'))
|
||||
self.assertFalse(utils.is_valid_id(u'%2355f35f7e2beb3300960bb074'))
|
||||
self.assertFalse(utils.is_valid_id(u'#55f35f7e2beb3300960bb074'))
|
||||
self.assertFalse(utils.is_valid_id(u'a55f-35f7-e2be-b330-0960-bb07'))
|
||||
self.assertFalse(utils.is_valid_id(u'a55f-35f7-e2be-b330-0960-bb07'[:24]))
|
||||
|
||||
self.assertFalse(utils.is_valid_id(u'55f…'))
|
||||
self.assertFalse(utils.is_valid_id(u'ประเทศไทย'))
|
||||
|
||||
Reference in New Issue
Block a user