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 action(cls, request, *args, **kwargs): """ Gets and translates/validates the fields. """ # TODO This is so terrible. I really need to fix this. from ripozo.resources.fields.base import translate_fields translate_fields(request, self.fields(cls.manager), skip_required=self.skip_required, validate=self.validate) return func(cls, request, *args, **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)