test für ein komplettes entities file

This commit is contained in:
David Kilias 2020-12-04 20:57:30 +01:00
parent 0376228d30
commit 7671739300

View file

@ -1,6 +1,6 @@
#!/usr/bin/python3 #!/usr/bin/env python3
import cerberus from cerberus import Validator
from schwifty import IBAN, BIC from schwifty import IBAN, BIC
import datetime import datetime
@ -73,45 +73,92 @@ document = {
} }
schema_fin={ schema_fin={
'bic': { 'bic': {
'type': 'string', 'type': 'string',
'required': True, 'required': True,
'check_with': valid_bic}, 'check_with': valid_bic},
'iban': { 'iban': {
'type': 'string', 'type': 'string',
'required': True, 'required': True,
'check_with': valid_iban}, 'check_with': valid_iban},
'issuance': { 'issuance': {
'type': 'string', 'type': 'string',
'required': True, 'required': True,
'check_with': iso_date}, 'check_with': iso_date},
'reference': {'type': 'string'}, 'reference': {'type': 'string'},
'scan-sepa-mandate': {'type': 'string'}, 'scan-sepa-mandate': {'type': 'string'},
'holder': {'type': 'string'}} 'holder': {'type': 'string'}}
schema_member={'bis': { schema_membership={
'type': 'string', 'bis': {
'oneof': [{'check_with': iso_date},{'empty': True}]}, 'type': 'string',
'mitgliedsbeitrag': { 'oneof': [{'check_with': iso_date},{'empty': True}]},
'type': 'string', 'mitgliedsbeitrag': {
'check_with': valid_money_amount}, 'type': 'string',
'scan-antrag': {'type': 'string'}, 'check_with': valid_money_amount},
'schliessberechtigung': { 'scan-antrag': {'type': 'string'},
'type': 'string', 'schliessberechtigung': {
'allowed': ['Ja', 'Nein', 'J', 'N', 'j', 'n', 'y', 'Y']}, 'type': 'string',
'spendenbeitrag': { 'allowed': ['Ja', 'Nein', 'J', 'N', 'j', 'n', 'y', 'Y']},
'type': 'string', 'spendenbeitrag': {
'check_with': valid_money_amount}, 'type': 'string',
'status': { 'check_with': valid_money_amount},
'type': 'string', 'status': {
'allowed': ['V', 'E', 'F']}, 'type': 'string',
'von': { 'allowed': ['V', 'E', 'F']},
'type': 'string', 'von': {
'required': True, 'type': 'string',
'check_with': iso_date}} 'required': True,
'check_with': iso_date}}
v = cerberus.Validator() schema_base={
print(v.validate(document['finanzdaten'], schema_fin)) 'address_code': {
print(v.errors) 'type': 'string'},
print(v.validate(document['mitgliederdaten'], schema_member)) '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) print(v.errors)