class TestClientIDsField(TestCase): field = api.ClientIDsField() @cases([ [1], [1, 2, 3], ]) def test_good_field(self, val): api.ClientIDsField.name = '_field' self.field = val self.assertEqual(self.field, val) @cases([ [], 1, ['1'], '1, 2', ]) def test_bad_field(self, val): api.ClientIDsField.name = '_field' def assign(): self.field = val self.assertRaises(Exception, assign)
def test_invalid_clients_id_field(value): field = api.ClientIDsField(required=True, nullable=False) try: field.clean(value) pytest.fail("ValidationError expected") except api.ValidationError: assert True
class FieldTester(api.Structure): charfield = api.CharField(nullable=True) # emailfield = api.EmailField(nullable=True) phonefield = api.PhoneField(nullable=True) birthdayfield = api.BirthDayField(nullable=True) genderfield = api.GenderField(nullable=True) datefield = api.DateField(nullable=True) client_ids = api.ClientIDsField(required=True)
def test_client_id_field_ok_cases(required, nullable, field_value): _field = api.ClientIDsField(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__validate_success(self, mock__check_type): f = api.ClientIDsField() _id = 1 value = [_id] calls = (call(f, value, list), call(f, _id, int, text=f.MSG_ERROR)) assert f._validate(value) == value assert mock__check_type.call_count == 2 mock__check_type.assert_has_calls(calls)
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()
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)
def test_client_ids_field(self): field = api.ClientIDsField() field.field_name = 'field' field.validate_value([1, 2]) field.validate_value([]) self.assertRaises(api.ValidationError, field.validate_value, '123') self.assertRaises(api.ValidationError, field.validate_value, [1, '2']) self.assertTrue(field.is_null_value(None)) self.assertTrue(field.is_null_value([])) self.assertFalse(field.is_null_value([1, 2]))
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_client_ids_field(self, value): field = api.ClientIDsField() self.assertInvalid(field, value)
def test_bad_client_ids_field(self, value): field = api.ClientIDsField() with self.assertRaises(Exception): field.clean(value)
def test_invalid_type_value(self, value): with self.assertRaises(TypeError): api.ClientIDsField(nullable=True).validate(value)
def test_clientidsfield_invalid(self, value): self.assertRaises(ValueError, api.ClientIDsField().run_validators, value)
def test_ClientIDsField_fail(self, val): client_ids = api.ClientIDsField(required=True) self.assertFalse(is_value_valid(client_ids, val))
def test_clientid(self, clientid): f = api.ClientIDsField() self.assertEqual(type(f.parse_validate(clientid)), list) for cid in clientid: self.assertEqual(type(cid), int)
def test_invalid_value_(self, case): value, error = case field = api.ClientIDsField(required=True, nullable=False) field.value = value field.validate() self.assertEquals(field.errors, [error])
def test_valid_value(self, case): field = api.ClientIDsField(required=True, nullable=False) field.value = case field.validate() self.assertFalse(field.errors)
def test_clients_id_field(arguments, load_warm_store, context): field = api.ClientIDsField() with pytest.raises(Exception) as e: val = field.validate(arguments) assert 'Client IDs should be list or positive integers' in str(e)
def setUpClass(cls): cls.field = api.ClientIDsField()
def test_bad_clientids_attribute(self, value): attr = api.ClientIDsField(required=True) self.assertFalse(attr.validate(value))
def test_non_clientid(self, clientid): f = api.ClientIDsField() with self.assertRaises(ValueError): f.parse_validate(clientid)
def test_valid_client_fields(self, value): self.assertListEqual(value, api.ClientIDsField().valid_value(value))
def test_clientidsfield_valid(self, value): self.assertEqual(value, api.ClientIDsField().run_validators(value))
def test_invalid_client_fields(self, value): with self.assertRaises(api.ValidationError): api.ClientIDsField().valid_value(value)
def test_valid_value(self, value): self.assertEqual(value, api.ClientIDsField(nullable=True).validate(value))
def test_valid_value(self, val): """ Test ClientIDsField VALID values """ api.ClientIDsField(required=False, nullable=True, value=val).validate()
def test_invalid_value(self, value): with self.assertRaises(ValueError): api.ClientIDsField(nullable=False).validate(value)
def test_invalid_value(self, val): """ Test ClientIDsField INVALID values """ with self.assertRaises(ValidationError): api.ClientIDsField(required=False, nullable=True, value=val).validate()
def test_client_ids_field(self): field = api.ClientIDsField() self.assertEqual(field.clean([1, 2, 3]), [1, 2, 3]) self.assertEqual(field.clean([-1, 2, -3]), [-1, 2, -3])
def setUp(self): self.field = api.ClientIDsField() self.field.field_name = 'client_ids_field'