diff --git a/src/safe_cli/operators/hw_wallets/ledger_wallet.py b/src/safe_cli/operators/hw_wallets/ledger_wallet.py index 0744f0bf..471e9fd9 100644 --- a/src/safe_cli/operators/hw_wallets/ledger_wallet.py +++ b/src/safe_cli/operators/hw_wallets/ledger_wallet.py @@ -65,6 +65,7 @@ def get_signed_raw_transaction( gas=tx_parameters["gas"], nonce=tx_parameters["nonce"], data=tx_parameters.get("data"), + gas_price=tx_parameters.get("gasPrice"), max_priority_fee_per_gas=tx_parameters.get("maxPriorityFeePerGas"), max_fee_per_gas=tx_parameters.get("maxFeePerGas"), chain_id=chain_id, diff --git a/tests/test_hw_wallet_manager.py b/tests/test_hw_wallet_manager.py index a2f85994..72b7bd97 100644 --- a/tests/test_hw_wallet_manager.py +++ b/tests/test_hw_wallet_manager.py @@ -213,3 +213,32 @@ def test_execute( self.assertIsNotNone( self.ethereum_client.w3.eth.get_transaction_receipt(tx_hash) ) + + @mock.patch( + "safe_cli.operators.hw_wallets.ledger_wallet.create_transaction", autospec=True + ) + def test_ledger_signs_gas_price(self, mock_create_transaction: MagicMock): + ledger_wallet = LedgerWallet.__new__(LedgerWallet) + ledger_wallet.derivation_path = "44'/60'/0'/0" + ledger_wallet.dongle = None + mock_create_transaction.return_value.raw_transaction.return_value = "0x00" + transaction = { + "to": Account.create().address, + "value": 1, + "gas": 21000, + "nonce": 3, + } + ledger_wallet.get_signed_raw_transaction( + {**transaction, "gasPrice": 25 * 10**9}, 1337 + ) + kwargs = mock_create_transaction.call_args.kwargs + self.assertEqual(kwargs["gas_price"], 25 * 10**9) + self.assertIsNone(kwargs["max_fee_per_gas"]) + + ledger_wallet.get_signed_raw_transaction( + {**transaction, "maxFeePerGas": 30 * 10**9, "maxPriorityFeePerGas": 1}, + 1337, + ) + kwargs = mock_create_transaction.call_args.kwargs + self.assertIsNone(kwargs["gas_price"]) + self.assertEqual(kwargs["max_fee_per_gas"], 30 * 10**9)