class FieldsSet: arguments_field = api.ArgumentsField() char_field = api.CharField() email_field = api.EmailField() phone_field = api.PhoneField() date_field = api.DateField() birthday_field = api.BirthDayField() gender_field = api.GenderField() client_ids_field = api.ClientIDsField()
def test_args_field(self): field = api.ArgumentsField() field.field_name = 'field' field.validate_value({'a': 1}) self.assertTrue(field.is_null_value(None)) self.assertTrue(field.is_null_value({})) self.assertFalse(field.is_null_value({'a': 1}))
def test_arguments_field_ok_cases(required, nullable, field_value): _field = api.ArgumentsField(required=required, nullable=nullable) _field.field_name = "test_field" MockRequest.test_field = _field mock_obj = MockRequest(test_field=field_value) mock_obj.fields["test_field"] = _field MockRequest.__dict__["test_field"].__set__(mock_obj, field_value) assert getattr(mock_obj, "test_field") == field_value
def test_arguments_field_bad_cases(required, nullable, field_value): _field = api.ArgumentsField(required=required, nullable=nullable) _field.field_name = "test_field" MockRequest.test_field = _field mock_obj = MockRequest(test_field=field_value) mock_obj.fields["test_field"] = _field with pytest.raises(api.ValidationError): MockRequest.__dict__["test_field"].__set__(mock_obj, field_value)
class FieldContainer(object): char_field = api.CharField(nullable=False) int_field = api.IntField(nullable=False) arg_field = api.ArgumentsField(nullable=False) email_field = api.EmailField(nullable=False) phone_field = api.PhoneField(nullable=False) date_field = api.DateField(nullable=False) birthday_field = api.BirthDayField(nullable=False) gender_field = api.GenderField(nullable=False) ids_field = api.ClientIDsField(nullable=False)
class TestArgumentsField(TestCase): field = api.ArgumentsField() @cases([ {'argument': 'value'}, ]) def test_good_field(self, val): api.ArgumentsField.name = '_field' self.field = val self.assertEqual(self.field, val) @cases([ 1, 'test', [], () ]) def test_bad_field(self, val): api.ArgumentsField.name = '_field' def assign(): self.field = val self.assertRaises(Exception, assign)
def test_invalid_arguments_field(self, value): field = api.ArgumentsField() self.assertInvalid(field, value)
def test_ArgumentsField_fail(self, val): arguments = api.ArgumentsField(required=True, nullable=True) self.assertFalse(is_value_valid(arguments, val))
def test_argument_field(self): field = api.ArgumentsField() self.assertEqual(field.clean({'a': 1}), {'a': 1})
def test_invalid_type_value(self, value): with self.assertRaises(TypeError): api.ArgumentsField(nullable=True).validate(value)
def test_argumnentsfield_invalid(self, value): self.assertRaises(ValueError, api.ArgumentsField().run_validators, value)
def setUpClass(cls): cls.field = api.ArgumentsField()
def setUp(self): self.af = api.ArgumentsField(required=True, nullable=True)
def test_bad_arguments_attribute(self, value): attr = api.ArgumentsField(required=True, nullable=True) self.assertFalse(attr.validate(value))
class TestSuite(unittest.TestCase): def setUp(self): self.context = {'request_id': 0} self.headers = {} def get_response(self, request): return api.method_handler({ "body": request, "headers": self.headers }, self.context) def test_empty_request(self): _, code = self.get_response({}) self.assertEqual(api.INVALID_REQUEST, code) @cases([0, -1, []]) def test_bad_char_attribute(self, value): attr = api.CharField(required=False, nullable=True) self.assertFalse(attr.validate(value)) @cases([0, -1, { 1, }, '0', '-1']) def test_bad_arguments_attribute(self, value): attr = api.ArgumentsField(required=True, nullable=True) self.assertFalse(attr.validate(value)) @cases([0, -1, '0', 'iuejh339 dl93', []]) def test_bad_email_attribute(self, value): attr = api.EmailField(required=False, nullable=True) self.assertFalse(attr.validate(value)) @cases(['737473dh321', 0, -1, '790000323732']) def test_bad_phone_attribute(self, value): attr = api.PhoneField(required=False, nullable=True) self.assertFalse(attr.validate(value)) @cases([ '01.', 12122017, -1, '32.12.2017', '2017.12.31', '12.01.17', '10.01.200', '..', [], -0.0 ]) def test_bad_date_attribute(self, value): attr = api.DateField(required=False, nullable=True) self.assertFalse(attr.validate(value)) @cases([ '01.', 12122017, -1, '32.12.2017', '2017.12.31', '12.01.17', '10.01.200', '..', [], -0.0, '01.01.1917', '20.12.3018' ]) def test_bad_birthday_attribute(self, value): attr = api.BirthDayField(required=False, nullable=True) self.assertFalse(attr.validate(value)) @cases(['1', 1.0, -1, 7, -2.0, [], -0.0]) def test_bad_gender_attribute(self, value): attr = api.GenderField(required=False, nullable=True) self.assertFalse(attr.validate(value)) @cases([[0], [-1], -1, 0, ' ', '[1, -1, 0]', -1.0, [1.0, 2.0, 3.0]]) def test_bad_clientids_attribute(self, value): attr = api.ClientIDsField(required=True) self.assertFalse(attr.validate(value)) @cases([ api.ClientIDsField(required=True), api.GenderField(required=True, nullable=True), api.BirthDayField(required=True, nullable=True), api.DateField(required=True, nullable=True), api.PhoneField(required=True, nullable=True), api.EmailField(required=True, nullable=True), api.ArgumentsField(required=True, nullable=True), api.CharField(required=True, nullable=True) ]) def test_required_attributes(self, value): self.assertFalse(value.validate(None)) @cases([ api.ClientIDsField(required=True), api.GenderField(required=True, nullable=False), api.BirthDayField(required=True, nullable=False), api.DateField(required=True, nullable=False), api.PhoneField(required=True, nullable=False), api.EmailField(required=True, nullable=False), api.ArgumentsField(required=True, nullable=False), api.CharField(required=True, nullable=False) ]) def test_nullable_attributes(self, value): self.assertFalse(value.validate('')) @cases([{ "account": "horns&hoofs", "login": "******", "method": "online_score", "token": "", "arguments": {} }, { "account": "ой", "login": "******", "method": "online_score", "token": "sdd", "arguments": {} }, { "account": "horns&hoofs", "login": "******", "method": "online_score", "token": "ой", "arguments": {} }, { "account": "", "login": "******", "method": "online_score", "token": "", "arguments": {} }, { "account": "horns&hoofs", "login": "******", "method": "online_score", "token": "", "arguments": {} }, { "account": "horns&hoofs", "login": "******", "method": "online_score", "token": "", "arguments": {} }]) def test_bad_auth(self, request): request = api.set_attributes(api.MethodRequest, request) self.assertFalse(api.check_auth(request)) @cases([{ 'test_class': api.MethodRequest, 'values': { "account": "Ой", "login": "", "method": "метод", "token": "что-то", "arguments": { 'аргумент': 'значение' } } }, { 'test_class': api.ClientsInterestsRequest, 'values': { 'date': '20.07.2017', 'client_ids': [1, 2, 3, 4] } }, { 'test_class': api.OnlineScoreRequest, 'values': { 'first_name': 'имя', 'last_name': 'фамилия', 'gender': 1, 'phone': '79175002040', 'birthday': '01.01.1990', 'email': 'имя@domain.com' } }]) def test_set_attributes(self, kwargs): filled_obj = api.set_attributes(kwargs['test_class'], kwargs['values']) for attr, value in kwargs['values'].items(): self.assertEqual(filled_obj.__dict__[attr].__dict__['value'], value)
def test_invalid_value_(self, case): value, error = case field = api.ArgumentsField(required=True, nullable=False) field.value = value field.validate() self.assertEquals(field.errors, [error])
def test_valid_value(self, case): field = api.ArgumentsField(required=True, nullable=False) field.value = case field.validate() self.assertFalse(field.errors)
def test_non_argument_field(self, param): f = api.ArgumentsField() with self.assertRaises(ValueError): f.parse_validate(param)
def test_arguments_valid_value(self, value): self.assertDictEqual(value, api.ArgumentsField().valid_value(value))
def test_arguments_field(arguments, load_warm_store, context): field = api.ArgumentsField() with pytest.raises(Exception) as e: val = field.validate(arguments) assert 'This field must be a dict' in str(e)
def test_argument_field(self, param): f = api.ArgumentsField() self.assertEqual(type(f.parse_validate(param)), dict)
def test_invalid_type_arguments_value(self, value): with self.assertRaises(api.ValidationError): api.ArgumentsField().valid_value(value)
def test_argumnentsfield_valid(self, value): self.assertEqual(value, api.ArgumentsField().run_validators(value))
def test_valid_value(self, val): """ Test ArgumentsField VALID values """ api.ArgumentsField(required=False, nullable=True, value=val).check_type()
def test_valid_value(self, value): self.assertEqual(value, api.ArgumentsField(nullable=True).validate(value))
def test_invalid_value(self, val): """ Test ArgumentsField INVALID values """ with self.assertRaises(ValidationError): api.ArgumentsField(required=False, nullable=True, value=val).check_type()
def test_invalid_value(self, value): with self.assertRaises(ValueError): api.ArgumentsField(nullable=False).validate(value)
def setUp(self): self.field = api.ArgumentsField() self.field.field_name = 'args_field'
def test_bad_argument_field(self, value): field = api.ArgumentsField() with self.assertRaises(Exception): field.clean(value)
def test_valid_arguments_field(self): value = {"some": 'dict'} field = api.ArgumentsField() self.assertValid(field, value)