PAN-2741: Added error msg for calling eth_sendTransaction (#1681)

* PAN-2741: Added error msg for calling eth_sendTransaction

* Fix wildcard import

* Updating error msg

Signed-off-by: Adrian Sutton <adrian.sutton@consensys.net>
pull/2/head
Lucas Saldanha 5 years ago committed by GitHub
parent 1a12fdbccf
commit ba324418f7
  1. 2
      ethereum/jsonrpc/src/main/java/tech/pegasys/pantheon/ethereum/jsonrpc/JsonRpcMethodsFactory.java
  2. 1
      ethereum/jsonrpc/src/main/java/tech/pegasys/pantheon/ethereum/jsonrpc/RpcMethod.java
  3. 32
      ethereum/jsonrpc/src/main/java/tech/pegasys/pantheon/ethereum/jsonrpc/internal/methods/EthSendTransaction.java
  4. 5
      ethereum/jsonrpc/src/main/java/tech/pegasys/pantheon/ethereum/jsonrpc/internal/response/JsonRpcError.java
  5. 51
      ethereum/jsonrpc/src/test/java/tech/pegasys/pantheon/ethereum/jsonrpc/internal/methods/EthSendTransactionTest.java

@ -65,6 +65,7 @@ import tech.pegasys.pantheon.ethereum.jsonrpc.internal.methods.EthNewFilter;
import tech.pegasys.pantheon.ethereum.jsonrpc.internal.methods.EthNewPendingTransactionFilter; import tech.pegasys.pantheon.ethereum.jsonrpc.internal.methods.EthNewPendingTransactionFilter;
import tech.pegasys.pantheon.ethereum.jsonrpc.internal.methods.EthProtocolVersion; import tech.pegasys.pantheon.ethereum.jsonrpc.internal.methods.EthProtocolVersion;
import tech.pegasys.pantheon.ethereum.jsonrpc.internal.methods.EthSendRawTransaction; import tech.pegasys.pantheon.ethereum.jsonrpc.internal.methods.EthSendRawTransaction;
import tech.pegasys.pantheon.ethereum.jsonrpc.internal.methods.EthSendTransaction;
import tech.pegasys.pantheon.ethereum.jsonrpc.internal.methods.EthSyncing; import tech.pegasys.pantheon.ethereum.jsonrpc.internal.methods.EthSyncing;
import tech.pegasys.pantheon.ethereum.jsonrpc.internal.methods.EthUninstallFilter; import tech.pegasys.pantheon.ethereum.jsonrpc.internal.methods.EthUninstallFilter;
import tech.pegasys.pantheon.ethereum.jsonrpc.internal.methods.JsonRpcMethod; import tech.pegasys.pantheon.ethereum.jsonrpc.internal.methods.JsonRpcMethod;
@ -234,6 +235,7 @@ public class JsonRpcMethodsFactory {
new EthSyncing(synchronizer), new EthSyncing(synchronizer),
new EthGetStorageAt(blockchainQueries, parameter), new EthGetStorageAt(blockchainQueries, parameter),
new EthSendRawTransaction(transactionPool, parameter), new EthSendRawTransaction(transactionPool, parameter),
new EthSendTransaction(),
new EthEstimateGas( new EthEstimateGas(
blockchainQueries, blockchainQueries,
new TransactionSimulator( new TransactionSimulator(

@ -73,6 +73,7 @@ public enum RpcMethod {
ETH_NEW_PENDING_TRANSACTION_FILTER("eth_newPendingTransactionFilter"), ETH_NEW_PENDING_TRANSACTION_FILTER("eth_newPendingTransactionFilter"),
ETH_PROTOCOL_VERSION("eth_protocolVersion"), ETH_PROTOCOL_VERSION("eth_protocolVersion"),
ETH_SEND_RAW_TRANSACTION("eth_sendRawTransaction"), ETH_SEND_RAW_TRANSACTION("eth_sendRawTransaction"),
ETH_SEND_TRANSACTION("eth_sendTransaction"),
ETH_SUBSCRIBE("eth_subscribe"), ETH_SUBSCRIBE("eth_subscribe"),
ETH_SYNCING("eth_syncing"), ETH_SYNCING("eth_syncing"),
ETH_UNINSTALL_FILTER("eth_uninstallFilter"), ETH_UNINSTALL_FILTER("eth_uninstallFilter"),

@ -0,0 +1,32 @@
/*
* Copyright 2018 ConsenSys AG.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
* an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
* specific language governing permissions and limitations under the License.
*/
package tech.pegasys.pantheon.ethereum.jsonrpc.internal.methods;
import tech.pegasys.pantheon.ethereum.jsonrpc.RpcMethod;
import tech.pegasys.pantheon.ethereum.jsonrpc.internal.JsonRpcRequest;
import tech.pegasys.pantheon.ethereum.jsonrpc.internal.response.JsonRpcError;
import tech.pegasys.pantheon.ethereum.jsonrpc.internal.response.JsonRpcErrorResponse;
import tech.pegasys.pantheon.ethereum.jsonrpc.internal.response.JsonRpcResponse;
public class EthSendTransaction implements JsonRpcMethod {
@Override
public String getName() {
return RpcMethod.ETH_SEND_TRANSACTION.getMethodName();
}
@Override
public JsonRpcResponse response(final JsonRpcRequest request) {
return new JsonRpcErrorResponse(request.getId(), JsonRpcError.ETH_SEND_TX_NOT_AVAILABLE);
}
}

@ -27,6 +27,11 @@ public enum JsonRpcError {
INTERNAL_ERROR(-32603, "Internal error"), INTERNAL_ERROR(-32603, "Internal error"),
METHOD_NOT_ENABLED(-32604, "Method not enabled"), METHOD_NOT_ENABLED(-32604, "Method not enabled"),
// eth_sendTransaction specific error message
ETH_SEND_TX_NOT_AVAILABLE(
-32604,
"The method eth_sendTransaction is not supported. Use eth_sendRawTransaction to send a signed transaction to Pantheon."),
// P2P related errors // P2P related errors
P2P_DISABLED(-32000, "P2P has been disabled. This functionality is not available"), P2P_DISABLED(-32000, "P2P has been disabled. This functionality is not available"),
P2P_NETWORK_NOT_RUNNING(-32000, "P2P network is not running"), P2P_NETWORK_NOT_RUNNING(-32000, "P2P network is not running"),

@ -0,0 +1,51 @@
/*
* Copyright 2019 ConsenSys AG.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
* an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
* specific language governing permissions and limitations under the License.
*/
package tech.pegasys.pantheon.ethereum.jsonrpc.internal.methods;
import static org.assertj.core.api.Assertions.assertThat;
import tech.pegasys.pantheon.ethereum.jsonrpc.internal.JsonRpcRequest;
import tech.pegasys.pantheon.ethereum.jsonrpc.internal.response.JsonRpcError;
import tech.pegasys.pantheon.ethereum.jsonrpc.internal.response.JsonRpcErrorResponse;
import tech.pegasys.pantheon.ethereum.jsonrpc.internal.response.JsonRpcResponse;
import org.junit.Before;
import org.junit.Test;
public class EthSendTransactionTest {
private JsonRpcMethod method;
@Before
public void before() {
method = new EthSendTransaction();
}
@Test
public void methodReturnExpectedName() {
assertThat(method.getName()).isEqualTo("eth_sendTransaction");
}
@Test
public void requestIsMissingParameter() {
final JsonRpcRequest request =
new JsonRpcRequest("2.0", "eth_sendTransaction", new String[] {});
final JsonRpcResponse expectedResponse =
new JsonRpcErrorResponse(request.getId(), JsonRpcError.ETH_SEND_TX_NOT_AVAILABLE);
final JsonRpcResponse actualResponse = method.response(request);
assertThat(actualResponse).isEqualToComparingFieldByField(expectedResponse);
}
}
Loading…
Cancel
Save