def test_address_book(self): print('Testing address book') wallet = Wallet() # empty at start res = wallet.get_address_book() assert not 'entries' in res or (res.entries) == 0 ok = False try: wallet.get_address_book([0]) except: ok = True assert ok ok = False try: wallet.delete_address_book(0) except: ok = True assert ok ok = False try: wallet.edit_address_book(0, description='') except: ok = True assert ok # add one res = wallet.add_address_book( '42ey1afDFnn4886T7196doS9GPMzexD9gXpsZJDwVjeRVdFCSoHnv7KPbBeGpzJBzHRCAs9UxqeoyFQMYbqSWYTfJJQAWDm', description='self') assert res.index == 0, res for get_all in [True, False]: res = wallet.get_address_book( ) if get_all else wallet.get_address_book([0]) assert len(res.entries) == 1 e = res.entries[0] assert e.index == 0 assert e.address == '42ey1afDFnn4886T7196doS9GPMzexD9gXpsZJDwVjeRVdFCSoHnv7KPbBeGpzJBzHRCAs9UxqeoyFQMYbqSWYTfJJQAWDm', e assert e.description == 'self' # add a duplicate res = wallet.add_address_book( '42ey1afDFnn4886T7196doS9GPMzexD9gXpsZJDwVjeRVdFCSoHnv7KPbBeGpzJBzHRCAs9UxqeoyFQMYbqSWYTfJJQAWDm', description='self') assert res.index == 1 res = wallet.get_address_book() assert len(res.entries) == 2 assert res.entries[0].index == 0 assert res.entries[1].index == 1 assert res.entries[0].address == res.entries[1].address assert res.entries[0].description == res.entries[1].description e = res.entries[1] res = wallet.get_address_book([1]) assert len(res.entries) == 1 assert e == res.entries[0] # request (partially) out of range ok = False try: res = wallet.get_address_book[4, 2] except: ok = True assert ok ok = False try: res = wallet.get_address_book[0, 2] except: ok = True assert ok ok = False try: res = wallet.get_address_book[2, 0] except: ok = True assert ok # delete first res = wallet.delete_address_book(0) res = wallet.get_address_book() assert len(res.entries) == 1 assert res.entries[0].index == 0 assert res.entries[0].address == e.address assert res.entries[0].description == e.description # delete (new) first res = wallet.delete_address_book(0) res = wallet.get_address_book() assert not 'entries' in res or (res.entries) == 0 # add non-addresses errors = 0 try: wallet.add_address_book('', description='bad') except: errors += 1 try: wallet.add_address_book( '42ey1afDFnn4886T7196doS9GPMzexD9gXpsZJDwVjeRVdFCSoHnv7KPbBeGpzJBzHRCAs9UxqeoyFQMYbqSWYTfJJQAWDm ', description='bad') except: errors += 1 try: wallet.add_address_book( '42ey1afDFnn4886T7196doS9GPMzexD9gXpsZJDwVjeRVdFCSoHnv7KPbBeGpzJBzHRCAs9UxqeoyFQMYbqSWYTfJJQAWDn', description='bad') except: errors += 1 try: wallet.add_address_book( '9ujeXrjzf7bfeK3KZdCqnYaMwZVFuXemPU8Ubw335rj2FN1CdMiWNyFV3ksEfMFvRp9L9qum5UxkP5rN9aLcPxbH1au4WAB', description='bad') except: errors += 1 try: wallet.add_address_book('*****@*****.**', description='bad') except: errors += 1 assert errors == 5 res = wallet.get_address_book() assert not 'entries' in res or len(res.entries) == 0 # openalias res = wallet.add_address_book('*****@*****.**', description='dev fund') assert res.index == 0 res = wallet.get_address_book() assert len(res.entries) == 1 e = res.entries[0] assert e.address == '44AFFq5kSiGBoZ4NMDwYtN18obc8AemS33DBLWs3H7otXft3XjrpDtQGv7SqSsaBYBb98uNbr2VBBEt7f2wfn3RVGQBEP3A' assert e.description == 'dev fund' # UTF-8 res = wallet.add_address_book( '42ey1afDFnn4886T7196doS9GPMzexD9gXpsZJDwVjeRVdFCSoHnv7KPbBeGpzJBzHRCAs9UxqeoyFQMYbqSWYTfJJQAWDm', description=u'あまやかす') assert res.index == 1 res = wallet.get_address_book([1]) assert len(res.entries) == 1 assert res.entries[0].description == u'あまやかす' e = res.entries[0] # duplicate request res = wallet.get_address_book([1, 1]) assert len(res.entries) == 2 assert res.entries[0] == e assert res.entries[1] == e # various address types res = wallet.make_integrated_address() integrated_address = res.integrated_address res = wallet.add_address_book(integrated_address) assert res.index == 2 res = wallet.add_address_book( '87KfgTZ8ER5D3Frefqnrqif11TjVsTPaTcp37kqqKMrdDRUhpJRczeR7KiBmSHF32UJLP3HHhKUDmEQyJrv2mV8yFDCq8eB' ) assert res.index == 3 # get them back res = wallet.get_address_book([0]) assert len(res.entries) == 1 assert res.entries[ 0].address == '44AFFq5kSiGBoZ4NMDwYtN18obc8AemS33DBLWs3H7otXft3XjrpDtQGv7SqSsaBYBb98uNbr2VBBEt7f2wfn3RVGQBEP3A' assert res.entries[0].description == 'dev fund' res = wallet.get_address_book([1]) assert len(res.entries) == 1 assert res.entries[ 0].address == '42ey1afDFnn4886T7196doS9GPMzexD9gXpsZJDwVjeRVdFCSoHnv7KPbBeGpzJBzHRCAs9UxqeoyFQMYbqSWYTfJJQAWDm' assert res.entries[0].description == u'あまやかす' res = wallet.get_address_book([2]) assert len(res.entries) == 1 assert res.entries[0].address == integrated_address res = wallet.get_address_book([3]) assert len(res.entries) == 1 assert res.entries[ 0].address == '87KfgTZ8ER5D3Frefqnrqif11TjVsTPaTcp37kqqKMrdDRUhpJRczeR7KiBmSHF32UJLP3HHhKUDmEQyJrv2mV8yFDCq8eB' # edit res = wallet.get_address_book([1]) assert len(res.entries) == 1 e = res.entries[0] assert e.index == 1 assert e.address == '42ey1afDFnn4886T7196doS9GPMzexD9gXpsZJDwVjeRVdFCSoHnv7KPbBeGpzJBzHRCAs9UxqeoyFQMYbqSWYTfJJQAWDm' assert e.description == u'あまやかす' res = wallet.get_address_book([1]) assert len(res.entries) == 1 e = res.entries[0] assert e.index == 1 assert e.address == '42ey1afDFnn4886T7196doS9GPMzexD9gXpsZJDwVjeRVdFCSoHnv7KPbBeGpzJBzHRCAs9UxqeoyFQMYbqSWYTfJJQAWDm' assert e.description == u'あまやかす' res = wallet.edit_address_book(1, description='') res = wallet.get_address_book([1]) assert len(res.entries) == 1 e = res.entries[0] assert e.index == 1 assert e.address == '42ey1afDFnn4886T7196doS9GPMzexD9gXpsZJDwVjeRVdFCSoHnv7KPbBeGpzJBzHRCAs9UxqeoyFQMYbqSWYTfJJQAWDm' assert e.description == '' res = wallet.edit_address_book(1, description='えんしゅう') res = wallet.get_address_book([1]) assert len(res.entries) == 1 e = res.entries[0] assert e.index == 1 assert e.address == '42ey1afDFnn4886T7196doS9GPMzexD9gXpsZJDwVjeRVdFCSoHnv7KPbBeGpzJBzHRCAs9UxqeoyFQMYbqSWYTfJJQAWDm' assert e.description == u'えんしゅう' res = wallet.edit_address_book( 1, address= '44AFFq5kSiGBoZ4NMDwYtN18obc8AemS33DBLWs3H7otXft3XjrpDtQGv7SqSsaBYBb98uNbr2VBBEt7f2wfn3RVGQBEP3A' ) res = wallet.get_address_book([1]) assert len(res.entries) == 1 e = res.entries[0] assert e.index == 1 assert e.address == '44AFFq5kSiGBoZ4NMDwYtN18obc8AemS33DBLWs3H7otXft3XjrpDtQGv7SqSsaBYBb98uNbr2VBBEt7f2wfn3RVGQBEP3A' assert e.description == u'えんしゅう' ok = False try: res = wallet.edit_address_book(1, address='') except: ok = True assert ok ok = False try: res = wallet.edit_address_book(1, address='address') except: ok = True assert ok res = wallet.edit_address_book(1) res = wallet.get_address_book([1]) assert len(res.entries) == 1 assert e == res.entries[0] # empty wallet.delete_address_book(0) res = wallet.get_address_book( [0]) # entries above the deleted one collapse one slot up assert len(res.entries) == 1 assert res.entries[ 0].address == '44AFFq5kSiGBoZ4NMDwYtN18obc8AemS33DBLWs3H7otXft3XjrpDtQGv7SqSsaBYBb98uNbr2VBBEt7f2wfn3RVGQBEP3A' assert res.entries[0].description == u'えんしゅう' wallet.delete_address_book(2) wallet.delete_address_book(0) wallet.delete_address_book(0) res = wallet.get_address_book() assert not 'entries' in res or len(res.entries) == 0