Ejemplo n.º 1
0
 def test_validate_float(self):
     self.assertEqual(types.validate_value(float, 1), 1.0)
     self.assertEqual(types.validate_value(float, '1'), 1.0)
     self.assertEqual(types.validate_value(float, 1.1), 1.1)
     self.assertRaises(ValueError, types.validate_value, float, [])
     self.assertRaises(ValueError, types.validate_value, float,
                       'not-a-float')
Ejemplo n.º 2
0
    def test_validate_dict(self):
        assert types.validate_value({int: str}, {1: '1', 5: '5'})

        self.assertRaises(ValueError, types.validate_value, {int: str}, [])

        assert types.validate_value({int: str}, {'1': '1', 5: '5'})

        self.assertRaises(ValueError, types.validate_value, {int: str}, {
            1: 1,
            5: '5'
        })
Ejemplo n.º 3
0
def fromjson_complex(datatype, value):
    obj = datatype()
    attributes = atypes.list_attributes(datatype)

    # Here we check that all the attributes in the value are also defined
    # in our type definition, otherwise we raise an Error.
    v_keys = set(value.keys())
    a_keys = set(adef.name for adef in attributes)
    if not v_keys <= a_keys:
        raise exception.UnknownAttribute(None, v_keys - a_keys)

    for attrdef in attributes:
        if attrdef.name in value:
            try:
                val_fromjson = fromjson(attrdef.datatype, value[attrdef.name])
            except exception.UnknownAttribute as e:
                e.add_fieldname(attrdef.name)
                raise
            if getattr(attrdef, 'readonly', False):
                raise exception.InvalidInput(attrdef.name, val_fromjson,
                                             "Cannot set read only field.")
            setattr(obj, attrdef.key, val_fromjson)
        elif attrdef.mandatory:
            raise exception.InvalidInput(attrdef.name, None,
                                         "Mandatory field missing.")

    return atypes.validate_value(datatype, obj)
Ejemplo n.º 4
0
 def test_validate_int(self):
     self.assertEqual(types.validate_value(int, 1), 1)
     self.assertEqual(types.validate_value(int, '1'), 1)
     self.assertRaises(ValueError, types.validate_value, int, 1.1)
Ejemplo n.º 5
0
 def test_validate_list_empty(self):
     assert types.validate_value([int], []) == []
Ejemplo n.º 6
0
 def test_validate_list_valid(self):
     assert types.validate_value([int], [1, 2])
     assert types.validate_value([int], ['5'])