p.view_node(): check node_id for validity, before sending it to the API
This prevents a pillarsdk.exceptions.MethodNotAllowed exception, which would result in a 500 Internal Server Error on the frontend.
This commit is contained in:
37
tests/test_web/test_utils.py
Normal file
37
tests/test_web/test_utils.py
Normal file
@@ -0,0 +1,37 @@
|
||||
# -*- 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'))
|
Reference in New Issue
Block a user