diff --git a/test_cerberus.py b/test_cerberus.py index 6921f7f..87f388e 100644 --- a/test_cerberus.py +++ b/test_cerberus.py @@ -1,6 +1,6 @@ -#!/usr/bin/python3 +#!/usr/bin/env python3 -import cerberus +from cerberus import Validator from schwifty import IBAN, BIC import datetime @@ -73,45 +73,92 @@ document = { } schema_fin={ - 'bic': { - 'type': 'string', - 'required': True, - 'check_with': valid_bic}, - 'iban': { - 'type': 'string', - 'required': True, - 'check_with': valid_iban}, - 'issuance': { - 'type': 'string', - 'required': True, - 'check_with': iso_date}, - 'reference': {'type': 'string'}, - 'scan-sepa-mandate': {'type': 'string'}, - 'holder': {'type': 'string'}} + 'bic': { + 'type': 'string', + 'required': True, + 'check_with': valid_bic}, + 'iban': { + 'type': 'string', + 'required': True, + 'check_with': valid_iban}, + 'issuance': { + 'type': 'string', + 'required': True, + 'check_with': iso_date}, + 'reference': {'type': 'string'}, + 'scan-sepa-mandate': {'type': 'string'}, + 'holder': {'type': 'string'}} -schema_member={'bis': { - 'type': 'string', - 'oneof': [{'check_with': iso_date},{'empty': True}]}, - 'mitgliedsbeitrag': { - 'type': 'string', - 'check_with': valid_money_amount}, - 'scan-antrag': {'type': 'string'}, - 'schliessberechtigung': { - 'type': 'string', - 'allowed': ['Ja', 'Nein', 'J', 'N', 'j', 'n', 'y', 'Y']}, - 'spendenbeitrag': { - 'type': 'string', - 'check_with': valid_money_amount}, - 'status': { - 'type': 'string', - 'allowed': ['V', 'E', 'F']}, - 'von': { - 'type': 'string', - 'required': True, - 'check_with': iso_date}} +schema_membership={ + 'bis': { + 'type': 'string', + 'oneof': [{'check_with': iso_date},{'empty': True}]}, + 'mitgliedsbeitrag': { + 'type': 'string', + 'check_with': valid_money_amount}, + 'scan-antrag': {'type': 'string'}, + 'schliessberechtigung': { + 'type': 'string', + 'allowed': ['Ja', 'Nein', 'J', 'N', 'j', 'n', 'y', 'Y']}, + 'spendenbeitrag': { + 'type': 'string', + 'check_with': valid_money_amount}, + 'status': { + 'type': 'string', + 'allowed': ['V', 'E', 'F']}, + 'von': { + 'type': 'string', + 'required': True, + 'check_with': iso_date}} -v = cerberus.Validator() -print(v.validate(document['finanzdaten'], schema_fin)) -print(v.errors) -print(v.validate(document['mitgliederdaten'], schema_member)) +schema_base={ + 'address_code': { + 'type': 'string'}, + 'address_country': { + 'type': 'string'}, + 'address_label': { + 'type': 'string'}, + 'address_locality': { + 'type': 'string'}, + 'address_region': { + 'type': 'string'}, + 'address_street': { + 'type': 'string'}, + 'birth_date': { + 'type': 'string', + 'required': True, + 'check_with': iso_date}, + 'birth_location': { + 'type': 'string'}, + 'email': { + 'type': 'string', + 'regex': '^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$'}, + 'fullname': { + 'type': 'string'}, + 'nickname': { + 'type': 'string'}, + 'pgp-key': { + 'type': 'string'}, + 'ssh-key': { + 'type': 'string'}} + +schema = { + 'finanzdaten': { + 'type': 'dict', + 'schema': schema_fin}, + 'mitgliederdaten': { + 'type': 'dict', + 'schema': schema_membership}, + 'stammdaten': { + 'type': 'dict', + 'schema': schema_base}, + 'id': { + 'type': 'string', + 'regex': '^[a-f0-9]{5}$'}, + 'timestamp': { + 'type': 'string'} +} + +v = Validator() +print(v.validate(document, schema)) print(v.errors) \ No newline at end of file