async def test_query_allowance(self): ont = sdk.native_vm.aio_ont() if sys.version_info >= (3, 7): task_list = [ asyncio.create_task( ont.allowance(acct1.get_address_base58(), acct2.get_address_base58())), asyncio.create_task( ont.allowance(acct2.get_address_base58(), acct3.get_address_base58())), asyncio.create_task( ont.allowance(acct3.get_address_base58(), acct4.get_address_base58())), asyncio.create_task( ont.allowance(acct4.get_address_base58(), acct1.get_address_base58())) ] else: task_list = [ ont.allowance(acct1.get_address_base58(), acct2.get_address_base58()), ont.allowance(acct2.get_address_base58(), acct3.get_address_base58()), ont.allowance(acct3.get_address_base58(), acct4.get_address_base58()), ont.allowance(acct4.get_address_base58(), acct1.get_address_base58()) ] for task in task_list: self.assertGreaterEqual(await task, 0)
async def test_transfer_multi(self): oep4 = sdk.neo_vm.aio_oep4() oep4.hex_contract_address = contract_address transfer_list = list() b58_from_address1 = acct1.get_address_base58() b58_from_address2 = acct2.get_address_base58() from_address_list = [b58_from_address1, b58_from_address2] b58_to_address1 = acct2.get_address_base58() b58_to_address2 = acct3.get_address_base58() to_address_list = [b58_to_address1, b58_to_address2] value_list = [1, 2] transfer1 = [b58_from_address1, b58_to_address1, value_list[0]] transfer2 = [b58_from_address2, b58_to_address2, value_list[1]] signers = [acct1, acct2, acct3] transfer_list.append(transfer1) transfer_list.append(transfer2) tx_hash = await oep4.transfer_multi(transfer_list, signers, acct1, 500, 20000000) self.assertEqual(64, len(tx_hash)) await asyncio.sleep(randint(14, 20)) notify_list = await oep4.query_multi_transfer_event(tx_hash) self.assertEqual(len(transfer_list), len(notify_list)) for index, notify in enumerate(notify_list): self.assertEqual('transfer', notify['States'][0]) self.assertEqual(from_address_list[index], notify['States'][1]) self.assertEqual(to_address_list[index], notify['States'][2]) self.assertEqual(value_list[index], notify['States'][3])
def test_transfer_multi_args_0(self): transfer_1 = [ acct1.get_address().to_bytes(), acct2.get_address().to_bytes(), 10 ] transfer_2 = [ acct2.get_address().to_bytes(), acct3.get_address().to_bytes(), 100 ] transfer_list = [transfer_1, transfer_2] hex_contract_address = 'ca91a73433c016fbcbcf98051d385785a6a5d9be' func = InvokeFunction('transfer_multi') func.set_params_value(transfer_list) tx_hash = sdk.rpc.send_neo_vm_transaction(hex_contract_address, acct1, acct2, self.gas_price, self.gas_limit, func, False) self.assertEqual(64, len(tx_hash)) time.sleep(randint(10, 15)) event = sdk.rpc.get_contract_event_by_tx_hash(tx_hash) states = Event.get_states_by_contract_address(event, hex_contract_address) states[0] = Data.to_utf8_str(states[0]) states[1][0][0] = Data.to_b58_address(states[1][0][0]) self.assertEqual(acct1.get_address_base58(), states[1][0][0]) states[1][0][1] = Data.to_b58_address(states[1][0][1]) self.assertEqual(acct2.get_address_base58(), states[1][0][1]) states[1][0][2] = Data.to_int(states[1][0][2]) self.assertEqual(10, states[1][0][2]) states[1][1][0] = Data.to_b58_address(states[1][1][0]) self.assertEqual(acct2.get_address_base58(), states[1][1][0]) states[1][1][1] = Data.to_b58_address(states[1][1][1]) self.assertEqual(acct3.get_address_base58(), states[1][1][1]) states[1][1][2] = Data.to_int(states[1][1][2]) self.assertEqual(100, states[1][1][2])
async def test_balance_of(self): address_list = [acct1.get_address_base58(), acct2.get_address_base58(), acct3.get_address_base58(), acct4.get_address_base58()] for address in address_list: balance = await sdk.native_vm.aio_ont().balance_of(address) self.assertTrue(isinstance(balance, int)) self.assertGreaterEqual(balance, 0)
def setUp(self): pub_keys = [acct1.get_public_key_bytes(), acct2.get_public_key_bytes(), acct3.get_public_key_bytes()] multi_address = Address.from_multi_pub_keys(2, pub_keys) self.address_list = [acct1.get_address_base58(), acct2.get_address_base58(), acct3.get_address_base58(), acct4.get_address_base58(), multi_address.b58encode()] self.gas_price = 500 self.gas_limit = 20000
async def test_balance_of(self): oep4 = sdk.neo_vm.aio_oep4() oep4.hex_contract_address = contract_address b58_address1 = acct3.get_address_base58() b58_address2 = acct4.get_address_base58() balance = await oep4.balance_of(b58_address1) self.assertGreaterEqual(balance, 10) balance = await oep4.balance_of(b58_address2) self.assertGreaterEqual(balance, 1)
async def test_unbound_ong(self): address_list = [ acct1.get_address_base58(), acct2.get_address_base58(), acct3.get_address_base58(), acct4.get_address_base58() ] for address in address_list: unbound_ong = await sdk.native_vm.aio_ong().unbound(address) self.assertGreaterEqual(unbound_ong, 0)
async def test_get_balance(self): pub_keys = [acct1.get_public_key_bytes(), acct2.get_public_key_bytes(), acct3.get_public_key_bytes()] multi_address = Address.from_multi_pub_keys(2, pub_keys) address_list = [acct1.get_address_base58(), acct2.get_address_base58(), acct3.get_address_base58(), acct4.get_address_base58(), multi_address.b58encode()] for address in address_list: balance = await sdk.websocket.get_balance(address) self.assertTrue(isinstance(balance, dict)) self.assertGreaterEqual(balance['ONT'], 0) self.assertGreaterEqual(balance['ONG'], 0)
async def test_transfer_from(self): oep4 = sdk.neo_vm.aio_oep4() oep4.hex_contract_address = contract_address b58_from_address = acct1.get_address_base58() b58_to_address = acct3.get_address_base58() value = 1 tx_hash = await oep4.transfer_from(acct2, b58_from_address, b58_to_address, value, acct1, 500, 20000000) self.assertEqual(64, len(tx_hash)) await asyncio.sleep(randint(14, 20)) event = await oep4.query_transfer_from_event(tx_hash) self.assertEqual(contract_address, event.get('ContractAddress', '')) self.assertEqual('transfer', event['States'][0]) self.assertEqual(b58_from_address, event['States'][1]) self.assertEqual(b58_to_address, event['States'][2]) self.assertEqual(value, event['States'][3])
async def test_get_memory_pool_tx_state(self): tx_hash = '0000000000000000000000000000000000000000000000000000000000000000' with self.assertRaises(SDKException): await sdk.aio_restful.get_memory_pool_tx_state(tx_hash) oep4 = sdk.neo_vm.oep4() oep4.hex_contract_address = '1ddbb682743e9d9e2b71ff419e97a9358c5c4ee9' b58_from_address = acct4.get_address_base58() b58_to_address = acct3.get_address_base58() tx = oep4.new_transfer_tx(b58_from_address, b58_to_address, 10, b58_from_address, 500, 20000) tx.sign_transaction(acct4) tx_hash = await sdk.aio_restful.send_raw_transaction(tx) self.assertEqual(64, len(tx_hash)) try: tx_state = await sdk.aio_restful.get_memory_pool_tx_state(tx_hash) self.assertGreaterEqual(tx_state[0]['Height'], 0) self.assertGreaterEqual(tx_state[1]['Height'], 0) except SDKException: pass
def test_get_memory_poll_tx_state(self): tx_hash = '0000000000000000000000000000000000000000000000000000000000000000' try: sdk.restful.get_memory_pool_tx_state(tx_hash) except SDKException as e: self.assertIn('UNKNOWN TRANSACTION', e.args[1]) oep4 = sdk.neo_vm.oep4() oep4.hex_contract_address = '1ddbb682743e9d9e2b71ff419e97a9358c5c4ee9' b58_from_address = acct4.get_address_base58() b58_to_address = acct3.get_address_base58() tx = oep4.new_transfer_tx(b58_from_address, b58_to_address, 10, b58_from_address, 500, 20000000) tx.sign_transaction(acct4) tx_hash = sdk.restful.send_raw_transaction(tx) self.assertEqual(64, len(tx_hash)) try: tx_state = sdk.restful.get_memory_pool_tx_state(tx_hash) self.assertGreaterEqual(tx_state[0]['Height'], 0) self.assertGreaterEqual(tx_state[1]['Height'], 0) except SDKException: pass