def test_to_dict(self): # Transfer # When having an optional property, nonce icx_transaction = TransactionBuilder().from_(self.setting["from"]).to(self.setting["to"]) \ .value(self.setting["value"]).step_limit(self.setting["step_limit"]).nid(self.setting["nid"]) \ .nonce(self.setting["nonce"]).build() tx_dict = SignedTransaction.convert_tx_to_jsonrpc_request( icx_transaction) self.assertTrue(is_icx_transaction(tx_dict)) # When not having an optional property, nonce icx_transaction = TransactionBuilder().from_(self.setting["from"]).to(self.setting["to"]) \ .value(self.setting["value"]).step_limit(self.setting["step_limit"]).nid(self.setting["nid"]).build() tx_dict = SignedTransaction.convert_tx_to_jsonrpc_request( icx_transaction) self.assertTrue(is_icx_transaction(tx_dict)) # When not having an required property, value icx_transaction = TransactionBuilder().from_(self.setting["from"]).to(self.setting["to"]) \ .step_limit(self.setting["step_limit"]).nid(self.setting["nid"]).build() tx_dict = SignedTransaction.convert_tx_to_jsonrpc_request( icx_transaction) self.assertFalse(is_icx_transaction(tx_dict)) # Update SCORE deploy_transaction = DeployTransactionBuilder().from_(self.setting["from"]).to(self.setting["to"]) \ .step_limit(self.setting["step_limit"]).nid(self.setting["nid"]).content_type(self.setting["content_type"]) \ .content(self.setting["content_update"]).build() tx_dict = SignedTransaction.convert_tx_to_jsonrpc_request( deploy_transaction) self.assertTrue(is_deploy_transaction(tx_dict)) # Install SCORE deploy_transaction = DeployTransactionBuilder().from_(self.setting["from"]).to(self.setting["to_install"]) \ .step_limit(self.setting["step_limit"]).nid(self.setting["nid"]).nonce(self.setting["nonce"]) \ .content_type(self.setting["content_type"]).content(self.setting["content_install"]) \ .params(self.setting["params_install"]).build() tx_dict = SignedTransaction.convert_tx_to_jsonrpc_request( deploy_transaction) self.assertTrue(is_deploy_transaction(tx_dict)) # SCORE method call call_transaction = CallTransactionBuilder().from_(self.setting["from"]).to(self.setting["to"]) \ .step_limit(self.setting["step_limit"]).nid(self.setting["nid"]).nonce(self.setting["nonce"]) \ .method(self.setting["method"]).params(self.setting["params_call"]).build() tx_dict = SignedTransaction.convert_tx_to_jsonrpc_request( call_transaction) self.assertTrue(is_call_transaction(tx_dict)) # Message send msg_transaction = MessageTransactionBuilder().from_(self.setting["from"]).to(self.setting["to"]) \ .step_limit(self.setting["step_limit"]).nid(self.setting["nid"]).data(self.setting["data"]).build() tx_dict = SignedTransaction.convert_tx_to_jsonrpc_request( msg_transaction) self.assertTrue(is_message_transaction(tx_dict))
def test_transfer(self, _make_id): icx_transaction = TransactionBuilder() \ .from_(self.setting["from"]) \ .to(self.setting["to"]) \ .value(self.setting["value"]) \ .step_limit(self.setting["step_limit"]) \ .nid(3) \ .nonce(self.setting["nonce"]) \ .version(3) \ .timestamp(self.setting["timestamp"]) \ .build() tx_dict = SignedTransaction.convert_tx_to_jsonrpc_request( icx_transaction) self.assertTrue(is_icx_transaction(tx_dict)) signed_transaction = SignedTransaction(icx_transaction, self.wallet) with requests_mock.Mocker() as m: tx_hash: str = "0xb903239f8543d04b5dc1ba6579132b143087c68db1b2168786408fcbce568238" expected_request = { 'id': 1234, 'jsonrpc': '2.0', 'method': 'icx_sendTransaction', 'params': { 'from': self.setting["from"], 'nid': hex(self.setting["nid"]), 'nonce': hex(self.setting["nonce"]), 'signature': signed_transaction.signed_transaction_dict["signature"], 'stepLimit': hex(self.setting["step_limit"]), 'timestamp': hex(self.setting["timestamp"]), 'to': self.setting["to"], 'value': hex(self.setting["value"]), 'version': '0x3' } } response_json: dict = { "jsonrpc": "2.0", "result": tx_hash, "id": 1234 } m.post(self.matcher, json=response_json) result = self.icon_service.send_transaction(signed_transaction) self.assertTrue(is_T_HASH(result)) actual_request = json.loads(m._adapter.last_request.text) self.assertEqual(expected_request, actual_request)
def test_convert_tx_to_jsonrpc_request_for_icx_transaction(self): # Transfer # When having an optional property, nonce icx_transaction = TransactionBuilder().from_(self.setting["from"]).to(self.setting["to"]) \ .value(self.setting["value"]).step_limit(self.setting["step_limit"]).nid(self.setting["nid"]) \ .nonce(self.setting["nonce"]).build() tx_dict = SignedTransaction.convert_tx_to_jsonrpc_request( icx_transaction) self.assertTrue(is_icx_transaction(tx_dict)) # When not having an optional property, nonce icx_transaction = TransactionBuilder().from_(self.setting["from"]).to(self.setting["to"]) \ .value(self.setting["value"]).step_limit(self.setting["step_limit"]).nid(self.setting["nid"]).build() tx_dict = SignedTransaction.convert_tx_to_jsonrpc_request( icx_transaction) self.assertTrue(is_icx_transaction(tx_dict)) # When not having an required property, value icx_transaction = TransactionBuilder().from_(self.setting["from"]).to(self.setting["to"]) \ .step_limit(self.setting["step_limit"]).nid(self.setting["nid"]).build() tx_dict = SignedTransaction.convert_tx_to_jsonrpc_request( icx_transaction) self.assertFalse(is_icx_transaction(tx_dict))
def test_transfer(self): # When having an optional property, nonce icx_transaction = TransactionBuilder()\ .from_(self.setting["from"])\ .to(self.setting["to"]) \ .value(self.setting["value"])\ .step_limit(self.setting["step_limit"])\ .nid(3) \ .nonce(self.setting["nonce"])\ .version(3) \ .build() tx_dict = SignedTransaction.to_dict(icx_transaction) self.assertTrue(is_icx_transaction(tx_dict)) signed_transaction_dict = SignedTransaction(icx_transaction, self.wallet) result = self.icon_service.send_transaction(signed_transaction_dict) self.assertTrue(is_T_HASH(result)) # When not having an optional property, nonce icx_transaction = TransactionBuilder().from_(self.setting["from"]).to(self.setting["to"]) \ .value(self.setting["value"]).step_limit(self.setting["step_limit"]).nid(self.setting["nid"]).build() tx_dict = SignedTransaction.to_dict(icx_transaction) self.assertTrue(is_icx_transaction(tx_dict)) signed_transaction_dict = SignedTransaction(icx_transaction, self.wallet) result = self.icon_service.send_transaction(signed_transaction_dict) self.assertTrue(is_T_HASH(result)) # When value is wrong prefixed with '0x' wrong_value = "0x34330000000" icx_transaction = TransactionBuilder().from_(self.setting["from"]).to(self.setting["to"]) \ .value(wrong_value).step_limit(self.setting["step_limit"]).nid(self.setting["nid"]) \ .nonce(self.setting["nonce"]).build() self.assertRaises(DataTypeException, SignedTransaction, icx_transaction, self.wallet) # When value is valid which type is int wrong_value = 34330000000 icx_transaction = TransactionBuilder().from_(self.setting["from"]).to(self.setting["to"]) \ .value(wrong_value).step_limit(self.setting["step_limit"]).nid(self.setting["nid"]) \ .nonce(self.setting["nonce"]).build() signed_transaction_dict = SignedTransaction(icx_transaction, self.wallet) result = self.icon_service.send_transaction(signed_transaction_dict) self.assertTrue(is_T_HASH(result)) # When address is wrong wrong_address = "hx5bfdb090f43a808005ffc27c25b213145e8" icx_transaction = TransactionBuilder().from_(self.setting["from"]).to(wrong_address) \ .value(self.setting["value"]).step_limit(self.setting["step_limit"]).nid(self.setting["nid"]) \ .nonce(self.setting["nonce"]).build() signed_transaction_dict = SignedTransaction(icx_transaction, self.wallet) self.assertRaises(JSONRPCException, self.icon_service.send_transaction, signed_transaction_dict) # When not having a required property, nid icx_transaction = TransactionBuilder().from_(self.setting["from"]).to(self.setting["to"]) \ .value(self.setting["value"]).step_limit(self.setting["step_limit"]) \ .nonce(self.setting["nonce"]).build() signed_transaction_dict = SignedTransaction(icx_transaction, self.wallet) self.assertRaises(JSONRPCException, self.icon_service.send_transaction, signed_transaction_dict) # When a sending address is wrong - not the wallet's address wrong_address = "hx5bfdb090f43a808005ffc27c25b213145e80b7cd" icx_transaction = TransactionBuilder().from_(wrong_address).to(self.setting["to"]) \ .value(self.setting["value"]).step_limit(self.setting["step_limit"]).nid(self.setting["nid"]) \ .nonce(self.setting["nonce"]).build() signed_transaction_dict = SignedTransaction(icx_transaction, self.wallet) self.assertRaises(JSONRPCException, self.icon_service.send_transaction, signed_transaction_dict)