WIP: validators #3

Closed
dkdent wants to merge 6 commits from validators into master
3 changed files with 114 additions and 0 deletions

View file

@ -1,3 +1,4 @@
tornado==6.0.4
isodate==0.6.0
pytest==5.4.1
schwifty==2020.9.0

View file

@ -0,0 +1,59 @@
from validators import mandatory, empty, iso_date, valid_iban, valid_bic, valid_money_amount
def test_mandatory():
assert mandatory("Foo") == True
assert mandatory("Foo Bar") == True
assert mandatory("1970-01-01") == True
assert mandatory("") == False
assert mandatory(None) == False
def test_empty():
assert empty(None) == True
assert empty("") == True
assert empty(" ") == False
assert empty("Foo") == False
assert empty("1970-01-01") == False
def test_iso_date():
assert iso_date("1970-01-01") == True
assert iso_date("1970-1-1") == True
assert iso_date("70-01-01") == False
assert iso_date("1970/01/01") == False
assert iso_date("1.1.1970") == False
assert iso_date("01.01.1970") == False
assert iso_date("") == False
assert iso_date(None) == False
def test_valid_iban():
assert valid_iban("DE89 3704 0044 0532 0130 00") == True
assert valid_iban("DE89370400440532013000") == True
assert valid_iban("DX89 3704 0044 0532 0130 00") == False
assert valid_iban("DE99 3704 0044 0532 0130 00") == False
assert valid_iban("") == False
assert valid_iban(None) == False
assert valid_iban("DE89 3704 0044 0532 0130 00".split()) == False
def test_valid_bic():
assert valid_bic("PBNKDEFFXXX") == True
assert valid_bic("PBNKDXFFXXX") == False
assert valid_bic("PBNKDXFFXXXX") == False
assert valid_bic("PBN1DXFFXXX") == False
assert valid_bic("") == False
assert valid_bic(None) == False
assert valid_bic("PBNKDEFFXXX".split()) == False
def test_valid_money_amount():
assert valid_money_amount(None) == False
assert valid_money_amount("") == False
assert valid_money_amount("0,00") == False
assert valid_money_amount("13,37") == False
assert valid_money_amount("0") == True
assert valid_money_amount("0.00") == True
assert valid_money_amount("13") == True
assert valid_money_amount("13.37") == True

54
validators/validators.py Normal file
View file

@ -0,0 +1,54 @@
import datetime
from schwifty import IBAN, BIC
def mandatory(field: str) -> bool:
return bool(field)
def empty(field: str) -> bool:
return not bool(field)
def iso_date(field: str) -> bool:
if not field:
return False
try:
datetime.datetime.strptime(field, "%Y-%m-%d")
return True
except ValueError:
return False
def valid_iban(field: str) -> bool:
if not field:
return False
if not type(field) == str:
return False
try:
IBAN(field)
return True
except ValueError:
return False
def valid_bic(field: str) -> bool:
if not field:
return False
if not type(field) == str:
return False
try:
BIC(field)
return True
except ValueError:
return False
def valid_money_amount(field: str) -> bool:
if not field:
return False
try:
float(field)
return True
except (ValueError, TypeError):
return False