def test_input_category_types(self): cat = input_categories.URL_PARAMS test_input = dict(field='something') # URL_PARAMS field = BaseField('field', required=True, arg_type=input_categories.URL_PARAMS) req = RequestContainer(url_params=test_input) url, query, body = translate_fields(req, fields=[field], validate=True) self.assertEqual(url, test_input) req = RequestContainer(query_args=test_input, body_args=test_input) self.assertRaises(ValidationException, translate_fields, req, fields=[field], validate=True) # QUERY_ARGS field = BaseField('field', required=True, arg_type=input_categories.QUERY_ARGS) req = RequestContainer(query_args=test_input) url, query, body = translate_fields(req, fields=[field], validate=True) self.assertEqual(query, test_input) req = RequestContainer(url_params=test_input, body_args=test_input) self.assertRaises(ValidationException, translate_fields, req, fields=[field], validate=True) # BODY_ARGS field = BaseField('field', required=True, arg_type=input_categories.BODY_ARGS) req = RequestContainer(body_args=test_input) url, query, body = translate_fields(req, fields=[field], validate=True) self.assertEqual(body, test_input) req = RequestContainer(query_args=test_input, url_params=test_input) self.assertRaises(ValidationException, translate_fields, req, fields=[field], validate=True) # Non-existent input type field = BaseField('field', required=True, arg_type='fake') req = RequestContainer(query_args=test_input, url_params=test_input, body_args=test_input) self.assertRaises(RestException, translate_fields, req, fields=[field], validate=True)
def test_validate_type(self): f = BaseField('field', required=False) original = object() # test doesn't raise when valid new = f._validate_type(None) self.assertIsNone(new) new = f._validate_type(original) self.assertEqual(new, original) f.field_type = int self.assertRaises(ValidationException, f._validate_type, 'something')
def __init__(self, name, indv_field=BaseField('list'), **kwargs): """ :param unicode name: The name of the field. :param BaseField indv_field: The field to use when translating and validating individual items in the list. """ self.indv_field = indv_field super(ListField, self).__init__(name, **kwargs)
def test_required(self): field = BaseField('field', required=True) req = RequestContainer() self.assertRaises(ValidationException, translate_fields, req, fields=[field], validate=True) test_body = dict(nothere='this') req = RequestContainer(body_args=test_body) url, query, body = translate_fields(req, fields=[field], validate=True, skip_required=True) self.assertEqual(body, test_body)
def get_field_type(cls, name): """ Takes a field name and gets an appropriate BaseField instance for that column. It inspects the Model that is set on the manager to determine what the BaseField subclass should be. :param unicode name: :return: A BaseField subclass that is appropriate for translating a string input into the appropriate format. :rtype: ripozo.viewsets.fields.base.BaseField """ python_type = cls._get_field_python_type(cls.model, name) if python_type in _COLUMN_FIELD_MAP: field_class = _COLUMN_FIELD_MAP[python_type] return field_class(name) return BaseField(name)
def test_translate_none_like(self): f = BaseField('field') output = f._translate(False) self.assertIsNotNone(output) self.assertFalse(output)
def test_validate_size(self): f = BaseField('f', minimum=1, maximum=1) self.assertRaises(ValidationException, f._validate_size, 0, 0) self.assertRaises(ValidationException, f._validate_size, 2, 2) resp = f._validate_size(1, 1) self.assertEqual(resp, 1)
def test_validate_required(self): f = BaseField('f', required=True) self.assertRaises(ValidationException, f._validate_required, None) resp = f._validate_required(None, skip_required=True) self.assertIsNone(resp)
def get_field_type(cls, name): super(InMemoryManager, cls).get_field_type(name) return BaseField(name)
def test_translate_list(self): f = BaseField('field') output = f._translate([1, 2]) self.assertEqual(output, 1)
def test_empty_list(self): f = BaseField('field') output = f._translate([]) self.assertIsNone(output)