def test_illegal_encoding(encoding): kw = _make_valid_kw() kw['encoding'] = encoding with pytest.raises(ValueError) as ex: make_epc_qr_data(**kw) assert 'encoding' in str(ex.value) with pytest.raises(ValueError) as ex: make_epc_qr(**kw) assert 'encoding' in str(ex.value)
def test_illegal_purpose(purpose): kw = _make_valid_kw() kw['purpose'] = purpose with pytest.raises(ValueError) as ex: make_epc_qr_data(**kw) assert 'purpose' in str(ex.value) with pytest.raises(ValueError) as ex: make_epc_qr(**kw) assert 'purpose' in str(ex.value)
def test_illegal_name(name): kw = _make_valid_kw() kw['name'] = name with pytest.raises(ValueError) as ex: make_epc_qr_data(**kw) assert 'name' in str(ex.value) with pytest.raises(ValueError) as ex: make_epc_qr(**kw) assert 'name' in str(ex.value)
def test_illegal_iban(iban): kw = _make_valid_kw() kw['iban'] = iban with pytest.raises(ValueError) as ex: make_epc_qr_data(**kw) assert 'IBAN' in str(ex.value) with pytest.raises(ValueError) as ex: make_epc_qr(**kw) assert 'IBAN' in str(ex.value)
def test_invalid_bic(bic): kw = _make_valid_kw() kw['bic'] = bic with pytest.raises(ValueError) as ex: make_epc_qr_data(**kw) assert 'BIC' in str(ex.value) with pytest.raises(ValueError) as ex: make_epc_qr(**kw) assert 'BIC' in str(ex.value)
def test_invalid_amount(amount): kw = _make_valid_kw() kw['amount'] = amount with pytest.raises(ValueError) as ex: make_epc_qr_data(**kw) assert 'amount' in str(ex.value) with pytest.raises(ValueError) as ex: make_epc_qr(**kw) assert 'amount' in str(ex.value)
def test_no_text_no_reference(text, reference): kw = _make_valid_kw() kw['text'] = text kw['reference'] = reference with pytest.raises(ValueError) as ex: make_epc_qr_data(**kw) assert 'reference' in str(ex.value) with pytest.raises(ValueError) as ex: make_epc_qr(**kw) assert 'reference' in str(ex.value)
def test_reference_002(amount): name = 'Franz Mustermänn' iban = 'DE71110220330123456789' reference = 'RF18539007547034' purpose = 'GDDS' bic = 'BHBLDEHHXXX' kw = dict(name=name, iban=iban, reference=reference, bic=bic, purpose=purpose, amount=amount, encoding=1) data = make_epc_qr_data(**kw) assert len( data ) == 96 # See. EPC069-12 Version 2.1 dtd. 9 February 2012 example 1 encoding = 'utf-8' d = [x.decode(encoding) for x in data.split(b'\n')] assert 10 == len(d) assert 'BCD' == d[0] assert '002' == d[1] assert '1' == d[2] assert 'SCT' == d[3] assert name == d[5] assert iban == d[6] assert 'EUR12.3' == d[7] assert purpose == d[8] assert reference == d[9] qr = make_epc_qr(**kw) assert qr assert not qr.is_micro assert qr.version <= 13 assert 'M' == qr.error
def test_text_002(amount): name = "François D'Alsace S.A." iban = 'FR1420041010050500013M02606' text = 'Client:Marie Louise La Lune' kw = dict(name=name, iban=iban, text=text, amount=amount) data = make_epc_qr_data(**kw) assert len( data ) == 103 # See. EPC069-12 Version 2.1 dtd. 9 February 2012 example 2 encoding = 'iso-8859-1' d = [x.decode(encoding) for x in data.split(b'\n')] assert 11 == len(d) assert 'BCD' == d[0] assert '002' == d[1] assert '2' == d[2] assert 'SCT' == d[3] assert name == d[5] assert iban == d[6] assert 'EUR12.3' == d[7] assert '' == d[8] assert '' == d[9] assert text == d[10] qr = make_epc_qr(**kw) assert qr assert not qr.is_micro assert qr.version <= 13 assert 'M' == qr.error
def test_valid_encoding(encoding, number): kw = _make_valid_kw() kw['name'] = 'Simple name' kw['encoding'] = encoding d = make_epc_qr_data(**kw).split(b'\n') assert str(number).encode() == d[2] qr = make_epc_qr(**kw) assert qr
def test_epc_slash(text): name = "This is a Test" iban = 'FR1420041010050500013M02606' amount = 111.7 kw = dict(name=name, iban=iban, text=text, amount=amount) qr_code = make_epc_qr(**kw) assert qr_code decoded = decode(qr_code) assert text in decoded
def make_epc_qrfile(payment, **kwargs): qrfile = io.BytesIO() # TODO: this isn't currently used. Need to fetch IBAN from payment.recommended_destination # and name from somewhere - maybe config rather than hard-coding. qr = helpers.make_epc_qr( name="FIXME FIXME FIXME", iban="FIXME FIXME FIXME", amount=payment.amount, reference=payment.bankref, encoding=1, ) qr.save(qrfile, **kwargs) qrfile.seek(0) return qrfile