Example #1
0
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)
Example #2
0
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)
Example #3
0
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)
Example #4
0
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)
Example #5
0
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)
Example #6
0
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)
Example #7
0
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)
Example #8
0
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
Example #9
0
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
Example #10
0
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
Example #11
0
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
Example #12
0
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