mirror of https://github.com/hyperledger/besu
Ensured that the blockchain queries class handles optionals better. (#486)
Signed-off-by: Adrian Sutton <adrian.sutton@consensys.net>pull/2/head
parent
26ea7f9ff6
commit
92f20054ec
@ -0,0 +1,51 @@ |
|||||||
|
/* |
||||||
|
* 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 static java.nio.charset.StandardCharsets.UTF_8; |
||||||
|
import static org.assertj.core.api.Assertions.assertThat; |
||||||
|
|
||||||
|
import tech.pegasys.pantheon.crypto.Hash; |
||||||
|
import tech.pegasys.pantheon.ethereum.jsonrpc.internal.JsonRpcRequest; |
||||||
|
import tech.pegasys.pantheon.ethereum.jsonrpc.internal.parameters.JsonRpcParameter; |
||||||
|
import tech.pegasys.pantheon.ethereum.jsonrpc.internal.queries.BlockchainQueries; |
||||||
|
import tech.pegasys.pantheon.ethereum.jsonrpc.internal.response.JsonRpcSuccessResponse; |
||||||
|
import tech.pegasys.pantheon.ethereum.jsonrpc.internal.results.Quantity; |
||||||
|
import tech.pegasys.pantheon.util.bytes.Bytes32; |
||||||
|
import tech.pegasys.pantheon.util.bytes.BytesValue; |
||||||
|
|
||||||
|
import org.junit.Test; |
||||||
|
import org.junit.runner.RunWith; |
||||||
|
import org.mockito.Mock; |
||||||
|
import org.mockito.junit.MockitoJUnitRunner; |
||||||
|
|
||||||
|
@RunWith(MockitoJUnitRunner.class) |
||||||
|
public class EthGetTransactionByBlockHashAndIndexTest { |
||||||
|
private EthGetTransactionByBlockHashAndIndex method; |
||||||
|
@Mock private BlockchainQueries blockchain; |
||||||
|
|
||||||
|
@Test |
||||||
|
public void shouldReturnNullWhenBlockHashDoesNotExist() { |
||||||
|
method = new EthGetTransactionByBlockHashAndIndex(blockchain, new JsonRpcParameter()); |
||||||
|
Bytes32 hash = Hash.keccak256(BytesValue.wrap("horse".getBytes(UTF_8))); |
||||||
|
JsonRpcSuccessResponse response = (JsonRpcSuccessResponse) method.response(request(hash, 1)); |
||||||
|
assertThat(response.getResult()).isEqualTo(null); |
||||||
|
} |
||||||
|
|
||||||
|
private JsonRpcRequest request(final Bytes32 hash, final long index) { |
||||||
|
return new JsonRpcRequest( |
||||||
|
"2.0", |
||||||
|
"eth_getTransactionByBlockHashAndIndex", |
||||||
|
new Object[] {String.valueOf(hash), Quantity.create(index)}); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,18 @@ |
|||||||
|
{ |
||||||
|
"request": { |
||||||
|
"id": 406, |
||||||
|
"jsonrpc": "2.0", |
||||||
|
"method": "eth_getLogs", |
||||||
|
"params": [{ |
||||||
|
"address": [], |
||||||
|
"topics": [["0x000000000000000000000000a94f5374fce5edbc8e2a8697c15331677e6ebf0b", "0x65c9ac8011e286e89d02a269890f41d67ca2cc597b2c76c7c69321ff492be580"]], |
||||||
|
"blockhash": "0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" |
||||||
|
}] |
||||||
|
}, |
||||||
|
"response": { |
||||||
|
"jsonrpc": "2.0", |
||||||
|
"id": 406, |
||||||
|
"result" : [ ] |
||||||
|
}, |
||||||
|
"statusCode": 200 |
||||||
|
} |
Loading…
Reference in new issue