mirror of
https://salsa.debian.org/freeipa-team/freeipa.git
synced 2025-02-25 18:55:28 -06:00
Add a new parameter type, SerialNumber, as a subclass of Str
Transmitting a big integer like a random serial number over either xmlrpc or JSON is problematic because they only support 32-bit integers at best. A random serial number can be as big as 128 bits (theoretically 160 but dogtag limits it). Treat as a string instead. Internally the value can be treated as an Integer to conversions to/from hex as needed but for transmission purposes handle it as a string. Fixes: https://pagure.io/freeipa/issue/2016 Signed-off-by: Rob Crittenden <rcritten@redhat.com> Reviewed-By: Florence Blanc-Renaud <flo@redhat.com> Reviewed-By: Francisco Trivino <ftrivino@redhat.com> Reviewed-By: Alexander Bokovoy <abokovoy@redhat.com>
This commit is contained in:
committed by
Florence Blanc-Renaud
parent
d3481449ee
commit
83be923ac5
@@ -1858,3 +1858,44 @@ class test_DNParam(ClassChecker):
|
||||
for value in good:
|
||||
assert mthd(value) == tuple(DN(oneval) for oneval in value)
|
||||
assert o.convert(None) is None
|
||||
|
||||
|
||||
class test_SerialNumber(ClassChecker):
|
||||
"""
|
||||
Test the `ipalib.parameters.SerialNumber` class.
|
||||
"""
|
||||
_cls = parameters.SerialNumber
|
||||
|
||||
def test_init(self):
|
||||
"""
|
||||
Test the `ipalib.parameters.SerialNumber.__init__` method.
|
||||
"""
|
||||
o = self.cls('my_serial')
|
||||
assert o.type is str
|
||||
assert o.length is None
|
||||
|
||||
def test_validate_scalar(self):
|
||||
"""
|
||||
Test the `ipalib.parameters.SerialNumber._convert_scalar` method.
|
||||
"""
|
||||
o = self.cls('my_serial')
|
||||
mthd = o._validate_scalar
|
||||
for value in ('1234', '0xabcd', '0xABCD'):
|
||||
assert mthd(value) is None
|
||||
bad = ['Hello', '123A']
|
||||
for value in bad:
|
||||
e = raises(errors.ValidationError, mthd, value)
|
||||
assert e.name == 'my_serial'
|
||||
assert_equal(e.error, 'must be an integer')
|
||||
bad = ['-1234', '-0xAFF']
|
||||
for value in bad:
|
||||
e = raises(errors.ValidationError, mthd, value)
|
||||
assert e.name == 'my_serial'
|
||||
assert_equal(e.error, 'must be at least 0')
|
||||
bad = ['0xGAH', '0x',]
|
||||
for value in bad:
|
||||
e = raises(errors.ValidationError, mthd, value)
|
||||
assert e.name == 'my_serial'
|
||||
assert_equal(
|
||||
e.error, 'invalid valid hex'
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user