def test_get_wallet_info(self): with set_qrl_dir("wallet_ver1"): walletd = WalletD() version, len_address_items, encrypted = walletd.get_wallet_info() self.assertEqual(version, 1) self.assertEqual(len_address_items, 0) self.assertFalse(encrypted)
def test_relayMessageTxn(self): with set_qrl_dir("wallet_ver1"): walletd = WalletD() walletd._public_stub.PushTransaction = Mock( return_value=qrl_pb2.PushTransactionResp(error_code=qrl_pb2.PushTransactionResp.SUBMITTED)) service = WalletAPIService(walletd) resp = service.AddNewAddress(qrlwallet_pb2.AddNewAddressReq(), context=None) qaddress = resp.address addr_state = AddressState.get_default(walletd.qaddress_to_address(qaddress)) walletd._public_stub.GetAddressState = Mock( return_value=qrl_pb2.GetAddressStateResp(state=addr_state.pbdata)) walletd._public_stub.GetOTS = Mock( return_value=qrl_pb2.GetOTSResp(next_unused_ots_index=0, unused_ots_index_found=True)) resp = service.RelayMessageTxn(qrlwallet_pb2.RelayMessageTxnReq(message=b'Hello QRL!', fee=100000000, master_address=None, signer_address=qaddress, ots_index=0), context=None) self.assertEqual(0, resp.code) self.assertIsNotNone(resp.tx)
def test_relaySlaveTxn(self): with set_qrl_dir("wallet_ver1"): walletd = WalletD() service = WalletAPIService(walletd) resp = service.AddNewAddress(qrlwallet_pb2.AddNewAddressReq(), context=None) qaddress = resp.address addr_state = AddressState.get_default(walletd.qaddress_to_address(qaddress)) walletd._public_stub.GetAddressState = Mock( return_value=qrl_pb2.GetAddressStateResp(state=addr_state.pbdata)) walletd._public_stub.IsSlave = Mock( return_value=qrl_pb2.IsSlaveResp(result=True)) walletd._public_stub.GetOTS = Mock( return_value=qrl_pb2.GetOTSResp(next_unused_ots_index=0, unused_ots_index_found=True)) alice_xmss = get_alice_xmss(4) slave_pks = [alice_xmss.pk] access_types = [0] walletd._public_stub.PushTransaction = Mock( return_value=qrl_pb2.PushTransactionResp(error_code=qrl_pb2.PushTransactionResp.SUBMITTED)) resp = service.RelaySlaveTxn(qrlwallet_pb2.RelaySlaveTxnReq(slave_pks=slave_pks, access_types=access_types, fee=100000000, master_address=None, signer_address=qaddress, ots_index=0), context=None) self.assertEqual(resp.code, 0) self.assertIsNotNone(resp.tx)
def test_relayTransferTokenTxn(self): with set_qrl_dir("wallet_ver1"): walletd = WalletD() service = WalletAPIService(walletd) resp = service.AddNewAddress(qrlwallet_pb2.AddNewAddressReq(), context=None) qaddress = resp.address addr_state = AddressState.get_default(walletd.qaddress_to_address(qaddress)) walletd._public_stub.GetAddressState = Mock( return_value=qrl_pb2.GetAddressStateResp(state=addr_state.pbdata)) alice_xmss = get_alice_xmss(4) bob_xmss = get_bob_xmss(4) qaddresses_to = [alice_xmss.qaddress, bob_xmss.qaddress] amounts = [1000000000, 1000000000] walletd._public_stub.PushTransaction = Mock( return_value=qrl_pb2.PushTransactionResp(error_code=qrl_pb2.PushTransactionResp.SUBMITTED)) resp = service.RelayTransferTokenTxn(qrlwallet_pb2.RelayTransferTokenTxnReq(addresses_to=qaddresses_to, amounts=amounts, token_txhash='', fee=100000000, master_address=None, signer_address=qaddress, ots_index=0), context=None) self.assertEqual(resp.code, 0) self.assertIsNotNone(resp.tx)
def test_relaySlaveTxnBySlave(self): with set_qrl_dir("wallet_ver1"): walletd = WalletD() walletd._public_stub.PushTransaction = Mock( return_value=qrl_pb2.PushTransactionResp(error_code=qrl_pb2.PushTransactionResp.SUBMITTED)) service = WalletAPIService(walletd) resp = service.AddNewAddressWithSlaves(qrlwallet_pb2.AddNewAddressWithSlavesReq(), context=None) qaddress = resp.address addr_state = AddressState.get_default(walletd.qaddress_to_address(qaddress)) slaves = walletd.get_slave_list(qaddress) addr_state.add_slave_pks_access_type(bytes(hstr2bin(slaves[0][0].pk)), 0) walletd._public_stub.GetAddressState = Mock( return_value=qrl_pb2.GetAddressStateResp(state=addr_state.pbdata)) alice_xmss = get_alice_xmss(4) slave_pks = [alice_xmss.pk] access_types = [0] resp = service.RelaySlaveTxnBySlave( qrlwallet_pb2.RelaySlaveTxnBySlaveReq(slave_pks=slave_pks, access_types=access_types, fee=100000000, master_address=qaddress), context=None) self.assertEqual(resp.code, 0) self.assertIsNotNone(resp.tx)
def test_relayTokenTxnBySlave(self): with set_qrl_dir("wallet_ver1"): walletd = WalletD() walletd._public_stub.PushTransaction = Mock( return_value=qrl_pb2.PushTransactionResp(error_code=qrl_pb2.PushTransactionResp.SUBMITTED)) service = WalletAPIService(walletd) resp = service.AddNewAddressWithSlaves(qrlwallet_pb2.AddNewAddressWithSlavesReq(), context=None) qaddress = resp.address addr_state = AddressState.get_default(walletd.qaddress_to_address(qaddress)) slaves = walletd.get_slave_list(qaddress) addr_state.add_slave_pks_access_type(bytes(hstr2bin(slaves[0][0].pk)), 0) walletd._public_stub.GetAddressState = Mock( return_value=qrl_pb2.GetAddressStateResp(state=addr_state.pbdata)) alice_xmss = get_alice_xmss(4) bob_xmss = get_bob_xmss(4) qaddresses = [alice_xmss.qaddress, bob_xmss.qaddress] amounts = [1000000000, 1000000000] resp = service.RelayTokenTxnBySlave( qrlwallet_pb2.RelayTokenTxnBySlaveReq(symbol=b'QRL', name=b'Quantum Resistant Ledger', owner=alice_xmss.qaddress, decimals=5, addresses=qaddresses, amounts=amounts, fee=100000000, master_address=qaddress), context=None) self.assertEqual(resp.code, 0) self.assertIsNotNone(resp.tx)
def test_get_wallet_index_xmss(self): with set_qrl_dir("wallet_ver1"): walletd = WalletD() qaddress = walletd.add_new_address(height=4) index, xmss = walletd._get_wallet_index_xmss(qaddress, 0) self.assertEqual(index, 0) self.assertEqual(xmss.qaddress, qaddress)
def test_lock_wallet(self): with set_qrl_dir("wallet_ver1"): walletd = WalletD() walletd.add_new_address() walletd.encrypt_wallet(passphrase=self.passphrase) walletd.lock_wallet() with self.assertRaises(ValueError): walletd.add_new_address()
def test_get_balance(self): with set_qrl_dir("wallet_ver1"): walletd = WalletD() walletd._public_stub.GetBalance = Mock( return_value=qrl_pb2.GetBalanceResp(balance=1000)) balance = walletd.get_balance(self.qaddress) self.assertEqual(balance, 1000)
def test_get_height(self): with set_qrl_dir("wallet_ver1"): walletd = WalletD() walletd._public_stub.GetHeight = Mock( return_value=qrl_pb2.GetHeightResp(height=1001)) height = walletd.get_height() self.assertEqual(height, 1001)
def test_list_address(self): with set_qrl_dir("wallet_ver1"): walletd = WalletD() qaddress = walletd.add_new_address(height=4) self.assertEqual(qaddress[0], 'Q') self.assertEqual(len(walletd.list_address()), 1) list_address = walletd.list_address() self.assertEqual(list_address[0], qaddress)
def test_add_address_from_seed(self): with set_qrl_dir("wallet_ver1"): walletd = WalletD() qaddress1 = walletd.add_address_from_seed( seed=self.hex_seed) # Using hexseed self.assertEqual(self.qaddress, qaddress1) self.assertEqual(len(walletd.list_address()), 1)
def test_get_ots(self): with set_qrl_dir("wallet_ver1"): walletd = WalletD() walletd._public_stub.GetOTS = Mock(return_value=qrl_pb2.GetOTSResp( ots_bitfield=[b'\x00'] * 10, next_unused_ots_index=1)) ots_bitfield, next_unused_ots_index = walletd.get_ots( self.qaddress) self.assertEqual(ots_bitfield, [b'\x00'] * 10) self.assertEqual(next_unused_ots_index, 1)
def test_get_address_from_pk(self): with set_qrl_dir("wallet_ver1"): walletd = WalletD() pk = '01020016ecb9f39b9f4275d5a49e232346a15ae2fa8c50a2927daeac189b8c5f2d1' \ '8bc4e3983bd564298c49ae2e7fa6e28d4b954d8cd59398f1225b08d6144854aee0e' address = walletd.get_address_from_pk(pk) self.assertEqual( address, 'Q010200670246b0026436b717f199e3ec5320ba6ab61d5eddff811ac199a9e9b871d3280178b343' )
def test_get_transactions_by_address(self): with set_qrl_dir("wallet_ver1"): walletd = WalletD() walletd._public_stub.GetTransactionsByAddress = Mock( return_value=qrl_pb2.GetTransactionsByAddressResp( mini_transactions=[], balance=0)) mini_transactions, balance = walletd.get_transactions_by_address( qaddress=get_alice_xmss(4).qaddress) self.assertEqual(len(mini_transactions), 0) self.assertEqual(balance, 0)
def test_relay_message_txn(self): with set_qrl_dir("wallet_ver1"): walletd = WalletD() qaddress = walletd.add_new_address(height=4) walletd._public_stub.PushTransaction = Mock( return_value=qrl_pb2.PushTransactionResp( error_code=qrl_pb2.PushTransactionResp.SUBMITTED)) tx = walletd.relay_message_txn(message='Hello QRL!', fee=100000000, master_qaddress=None, signer_address=qaddress, ots_index=0) self.assertIsNotNone(tx)
def test_get_block_by_number(self): with set_qrl_dir("wallet_ver1"): walletd = WalletD() block = qrl_pb2.Block() block.header.hash_header = b'001122' block.header.block_number = 1 walletd._public_stub.GetBlockByNumber = Mock( return_value=qrl_pb2.GetBlockResp(block=block)) b = walletd.get_block_by_number(1) self.assertEqual(b.header.hash_header, bin2hstr(block.header.hash_header)) self.assertEqual(b.header.block_number, block.header.block_number)
def test_addNewAddress(self): with set_qrl_dir("wallet_ver1"): walletd = WalletD() service = WalletAPIService(walletd) resp = service.AddNewAddress(qrlwallet_pb2.AddNewAddressReq(), context=None) self.assertEqual(resp.code, 0) self.assertEqual(resp.address[0], 'Q')
def test_getTransaction(self): with set_qrl_dir("wallet_ver1"): walletd = WalletD() service = WalletAPIService(walletd) tx = qrl_pb2.Transaction() tx.fee = 10 tx.transaction_hash = b'1234' tx.message.message_hash = b'hello' pk = '01020016ecb9f39b9f4275d5a49e232346a15ae2fa8c50a2927daeac189b8c5f2d1' \ '8bc4e3983bd564298c49ae2e7fa6e28d4b954d8cd59398f1225b08d6144854aee0e' tx.public_key = bytes(hstr2bin(pk)) walletd._public_stub.GetTransaction = Mock( return_value=qrl_pb2.GetTransactionResp(tx=tx, confirmations=10)) resp = service.GetTransaction( qrlwallet_pb2.TransactionReq(tx_hash=tx.transaction_hash), context=None) self.assertEqual(resp.code, 0) self.assertIsNotNone(resp.tx) self.assertEqual(bin2hstr(tx.transaction_hash), resp.tx.transaction_hash)
def test_relaySlaveTxn(self): with set_qrl_dir("wallet_ver1"): walletd = WalletD() service = WalletAPIService(walletd) resp = service.AddNewAddress(qrlwallet_pb2.AddNewAddressReq(), context=None) qaddress = resp.address alice_xmss = get_alice_xmss(4) slave_pks = [alice_xmss.pk] access_types = [0] walletd._public_stub.PushTransaction = Mock( return_value=qrl_pb2.PushTransactionResp( error_code=qrl_pb2.PushTransactionResp.SUBMITTED)) resp = service.RelaySlaveTxn(qrlwallet_pb2.RelaySlaveTxnReq( slave_pks=slave_pks, access_types=access_types, fee=100000000, master_address=None, signer_address=qaddress, ots_index=0), context=None) self.assertEqual(resp.code, 0) self.assertIsNotNone(resp.tx)
def test_unlockWallet(self): with set_qrl_dir("wallet_ver1"): walletd = WalletD() service = WalletAPIService(walletd) service.AddNewAddress(qrlwallet_pb2.AddNewAddressReq(), context=None) resp = service.ListAddresses(qrlwallet_pb2.ListAddressesReq(), context=None) self.assertEqual(resp.code, 0) self.assertEqual(len(resp.addresses), 1) resp = service.EncryptWallet(qrlwallet_pb2.EncryptWalletReq(passphrase=self.passphrase), context=None) self.assertEqual(resp.code, 0) resp = service.ListAddresses(qrlwallet_pb2.ListAddressesReq(), context=None) self.assertEqual(resp.code, 1) resp = service.UnlockWallet(qrlwallet_pb2.UnlockWalletReq(passphrase=self.passphrase), context=None) self.assertEqual(resp.code, 0) resp = service.ListAddresses(qrlwallet_pb2.ListAddressesReq(), context=None) self.assertEqual(resp.code, 0) resp = service.LockWallet(qrlwallet_pb2.LockWalletReq(), context=None) self.assertEqual(resp.code, 0) resp = service.ListAddresses(qrlwallet_pb2.ListAddressesReq(), context=None) self.assertEqual(resp.code, 1) resp = service.UnlockWallet(qrlwallet_pb2.UnlockWalletReq(), context=None) self.assertEqual(resp.code, 1) resp = service.UnlockWallet(qrlwallet_pb2.UnlockWalletReq(passphrase="wrong"), context=None) self.assertEqual(resp.code, 1)
def test_relayTokenTxn(self): with set_qrl_dir("wallet_ver1"): walletd = WalletD() service = WalletAPIService(walletd) resp = service.AddNewAddress(qrlwallet_pb2.AddNewAddressReq(), context=None) qaddress = resp.address alice_xmss = get_alice_xmss(4) bob_xmss = get_bob_xmss(4) qaddresses = [alice_xmss.qaddress, bob_xmss.qaddress] amounts = [1000000000, 1000000000] walletd._public_stub.PushTransaction = Mock( return_value=qrl_pb2.PushTransactionResp( error_code=qrl_pb2.PushTransactionResp.SUBMITTED)) resp = service.RelayTokenTxn(qrlwallet_pb2.RelayTokenTxnReq( symbol=b'QRL', name=b'Quantum Resistant Ledger', owner=alice_xmss.qaddress, decimals=5, addresses=qaddresses, amounts=amounts, fee=100000000, master_address=None, signer_address=qaddress, ots_index=0), context=None) self.assertEqual(resp.code, 0) self.assertIsNotNone(resp.tx)
def test_addAddressFromSeed2(self): with set_qrl_dir("wallet_ver1"): walletd = WalletD() service = WalletAPIService(walletd) resp = service.AddAddressFromSeed(qrlwallet_pb2.AddAddressFromSeedReq(seed=self.mnemonic), context=None) self.assertEqual(resp.code, 0) self.assertEqual(resp.address, self.qaddress)
def test_getNodeInfo(self): with set_qrl_dir("wallet_ver1"): walletd = WalletD() service = WalletAPIService(walletd) block_last_hash_str = 'c23f47a10a8c53cc5ded096369255a32c4a218682a961d0ee7db22c500000000' version = "1.0.0" num_connections = 10 num_known_peers = 200 uptime = 10000 block_height = 102345 block_last_hash = bytes(hstr2bin(block_last_hash_str)) network_id = "network id" node_info = qrl_pb2.NodeInfo(version=version, num_connections=num_connections, num_known_peers=num_known_peers, uptime=uptime, block_height=block_height, block_last_hash=block_last_hash, network_id=network_id) walletd._public_stub.GetNodeState = Mock( return_value=qrl_pb2.GetNodeStateResp(info=node_info)) resp = service.GetNodeInfo(qrlwallet_pb2.NodeInfoReq(), context=None) self.assertEqual(resp.version, version) self.assertEqual(resp.num_connections, str(num_connections)) self.assertEqual(resp.num_known_peers, str(num_known_peers)) self.assertEqual(resp.uptime, uptime) self.assertEqual(resp.block_height, block_height) self.assertEqual(resp.block_last_hash, block_last_hash_str) self.assertEqual(resp.network_id, network_id)
def test_relay_transfer_txn(self): with set_qrl_dir("wallet_ver1"): walletd = WalletD() qaddress = walletd.add_new_address(height=4) alice_xmss = get_alice_xmss(4) bob_xmss = get_bob_xmss(4) qaddresses_to = [alice_xmss.qaddress, bob_xmss.qaddress] amounts = [1000000000, 1000000000] walletd._public_stub.PushTransaction = Mock( return_value=qrl_pb2.PushTransactionResp( error_code=qrl_pb2.PushTransactionResp.SUBMITTED)) tx = walletd.relay_transfer_txn(qaddresses_to=qaddresses_to, amounts=amounts, fee=100000000, master_qaddress=None, signer_address=qaddress, ots_index=0) self.assertIsNotNone(tx)
def test_getRecoverySeeds(self): with set_qrl_dir("wallet_ver1"): walletd = WalletD() service = WalletAPIService(walletd) service.AddAddressFromSeed(qrlwallet_pb2.AddAddressFromSeedReq(seed=self.mnemonic), context=None) resp = service.GetRecoverySeeds(qrlwallet_pb2.GetRecoverySeedsReq(address=self.qaddress), context=None) self.assertEqual(resp.hexseed, self.hex_seed) self.assertEqual(resp.mnemonic, self.mnemonic)
def test_addNewAddressWithSlaves(self): with set_qrl_dir("wallet_ver1"): walletd = WalletD() walletd._public_stub.PushTransaction = Mock( return_value=qrl_pb2.PushTransactionResp(error_code=qrl_pb2.PushTransactionResp.SUBMITTED)) service = WalletAPIService(walletd) resp = service.AddNewAddressWithSlaves(qrlwallet_pb2.AddNewAddressWithSlavesReq(), context=None) self.assertEqual(resp.code, 0) self.assertEqual(resp.address[0], 'Q')
def test_listAddresses(self): with set_qrl_dir("wallet_ver1"): walletd = WalletD() service = WalletAPIService(walletd) resp = service.AddNewAddress(qrlwallet_pb2.AddNewAddressReq(), context=None) address = resp.address resp = service.ListAddresses(qrlwallet_pb2.ListAddressesReq(), context=None) self.assertEqual(resp.addresses[0], address)
def test_addAddressFromSeed(self): with set_qrl_dir("wallet_ver1"): qaddress = "Q010400ff39df1ba4d1d5b8753e6d04c51c34b95b01fc3650c10ca7b296a18bdc105412c59d0b3b" hex_seed = "0104008441d43524996f76236141d16b7b324323abf796e77ad7c874622a82f5744bb803f9b404d25733d0db82be7ac6f3c4cf" walletd = WalletD() service = WalletAPIService(walletd) resp = service.AddAddressFromSeed(qrlwallet_pb2.AddAddressFromSeedReq(seed=hex_seed), context=None) self.assertEqual(resp.code, 0) self.assertEqual(resp.address, qaddress)
def test_getWalletInfo(self): with set_qrl_dir("wallet_ver1"): walletd = WalletD() service = WalletAPIService(walletd) resp = service.GetWalletInfo(qrlwallet_pb2.GetWalletInfoReq(), context=None) self.assertEqual(resp.version, 1) self.assertEqual(resp.address_count, 0) self.assertFalse(resp.is_encrypted)