mirror of
https://github.com/vacp2p/status-linea-besu.git
synced 2026-01-08 15:03:52 -05:00
Tests for GraphQL Cancun fields (#5975)
* Tests for GraphQL Cancun fields Add tests for GraphQL fields added to support cancun. Also, re-work test case inclusion code and update tests impacted by adding a new block to the chain. Signed-off-by: Danno Ferrin <danno.ferrin@swirldslabs.com> * unneeded deltas in genesis file Signed-off-by: Danno Ferrin <danno.ferrin@swirldslabs.com> --------- Signed-off-by: Danno Ferrin <danno.ferrin@swirldslabs.com> Co-authored-by: Sally MacFarlane <macfarla.github@gmail.com>
This commit is contained in:
@@ -14,7 +14,14 @@
|
||||
*/
|
||||
package org.hyperledger.besu.ethereum.api.graphql;
|
||||
|
||||
import static com.google.common.base.Preconditions.checkState;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.net.URISyntaxException;
|
||||
import java.net.URL;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
||||
import java.nio.file.Paths;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
import com.google.common.base.Charsets;
|
||||
@@ -30,80 +37,30 @@ import org.junit.jupiter.params.provider.MethodSource;
|
||||
|
||||
public class EthGraphQLHttpBySpecTest extends AbstractEthGraphQLHttpServiceTest {
|
||||
|
||||
public static Stream<Arguments> specs() {
|
||||
return Stream.of(
|
||||
Arguments.of("eth_blockNumber"),
|
||||
Arguments.of("eth_call_Block8"),
|
||||
Arguments.of("eth_call_Block8_invalidHexBytesData"),
|
||||
Arguments.of("eth_call_BlockLatest"),
|
||||
Arguments.of("eth_call_from_contract"),
|
||||
Arguments.of("eth_estimateGas_transfer"),
|
||||
Arguments.of("eth_estimateGas_noParams"),
|
||||
Arguments.of("eth_estimateGas_contractDeploy"),
|
||||
Arguments.of("eth_estimateGas_from_contract"),
|
||||
Arguments.of("eth_gasPrice"),
|
||||
Arguments.of("eth_getBalance_0x19"),
|
||||
Arguments.of("eth_getBalance_invalidAccountBlockNumber"),
|
||||
Arguments.of("eth_getBalance_invalidAccountLatest"),
|
||||
Arguments.of("eth_getBalance_latest"),
|
||||
Arguments.of("eth_getBalance_toobig_bn"),
|
||||
Arguments.of("eth_getBalance_without_addr"),
|
||||
Arguments.of("eth_getBlock_byHash"),
|
||||
Arguments.of("eth_getBlock_byHash_InvalidHexBytes32Hash"),
|
||||
Arguments.of("eth_getBlock_byHashInvalid"),
|
||||
Arguments.of("eth_getBlock_byNumber"),
|
||||
Arguments.of("eth_getBlock_byNumberInvalid"),
|
||||
Arguments.of("eth_getBlock_wrongParams"),
|
||||
Arguments.of("eth_getBlockTransactionCount_byHash"),
|
||||
Arguments.of("eth_getBlockTransactionCount_byNumber"),
|
||||
Arguments.of("eth_getCode"),
|
||||
Arguments.of("eth_getCode_noCode"),
|
||||
Arguments.of("eth_getLogs_emptyListParam"),
|
||||
Arguments.of("eth_getLogs_matchTopic"),
|
||||
Arguments.of("eth_getLogs_matchAnyTopic"),
|
||||
Arguments.of("eth_getLogs_range"),
|
||||
Arguments.of("eth_getStorageAt"),
|
||||
Arguments.of("eth_getStorageAt_illegalRangeGreaterThan"),
|
||||
Arguments.of("eth_getTransaction_byBlockHashAndIndex"),
|
||||
Arguments.of("eth_getTransaction_byBlockNumberAndIndex"),
|
||||
Arguments.of("eth_getTransaction_byBlockNumberAndInvalidIndex"),
|
||||
Arguments.of("eth_getTransaction_byHash"),
|
||||
Arguments.of("eth_getTransaction_byHashNull"),
|
||||
Arguments.of("eth_getTransactionCount"),
|
||||
Arguments.of("eth_getTransactionReceipt"),
|
||||
Arguments.of("eth_sendRawTransaction_contractCreation"),
|
||||
Arguments.of("eth_sendRawTransaction_messageCall"),
|
||||
Arguments.of("eth_sendRawTransaction_nonceTooLow"),
|
||||
Arguments.of("eth_sendRawTransaction_transferEther"),
|
||||
Arguments.of("eth_sendRawTransaction_unsignedTransaction"),
|
||||
Arguments.of("eth_syncing"),
|
||||
Arguments.of("graphql_blocks_byFrom"),
|
||||
Arguments.of("graphql_blocks_byRange"),
|
||||
Arguments.of("graphql_blocks_byWrongRange"),
|
||||
Arguments.of("graphql_pending"),
|
||||
Arguments.of("graphql_tooComplex"),
|
||||
Arguments.of("graphql_tooComplexSchema"),
|
||||
Arguments.of("graphql_variable_address"),
|
||||
Arguments.of("graphql_variable_bytes"),
|
||||
Arguments.of("graphql_variable_bytes32"),
|
||||
Arguments.of("graphql_variable_long"),
|
||||
Arguments.of("block_withdrawals_pre_shanghai"),
|
||||
Arguments.of("block_withdrawals"),
|
||||
Arguments.of("eth_getTransaction_type2"),
|
||||
Arguments.of("eth_getBlock_shanghai"));
|
||||
@SuppressWarnings("StreamResourceLeak")
|
||||
public static Stream<Arguments> specs() throws IOException, URISyntaxException {
|
||||
final URL url =
|
||||
EthGraphQLHttpBySpecTest.class.getResource(
|
||||
"/org/hyperledger/besu/ethereum/api/graphql/eth_blockNumber.json");
|
||||
checkState(url != null, "Cannot find test directory org/hyperledger/besu/ethereum/api/graphql");
|
||||
final Path dir = Paths.get(url.toURI()).getParent();
|
||||
return Files.list(dir)
|
||||
.map(Path::getFileName)
|
||||
.map(Path::toString)
|
||||
.filter(p -> p.endsWith(".json"))
|
||||
.filter(p -> !p.contains("genesis"))
|
||||
.map(Arguments::of);
|
||||
}
|
||||
|
||||
@ParameterizedTest(name = "{index}: {0}")
|
||||
@MethodSource("specs")
|
||||
public void graphQLCallWithSpecFile(final String specFileName) throws Exception {
|
||||
void graphQLCallWithSpecFile(final String specFileName) throws Exception {
|
||||
graphQLCall(specFileName);
|
||||
}
|
||||
|
||||
private void graphQLCall(final String name) throws IOException {
|
||||
final String testSpecFile = name + ".json";
|
||||
final String json =
|
||||
Resources.toString(
|
||||
EthGraphQLHttpBySpecTest.class.getResource(testSpecFile), Charsets.UTF_8);
|
||||
Resources.toString(EthGraphQLHttpBySpecTest.class.getResource(name), Charsets.UTF_8);
|
||||
final JsonObject spec = new JsonObject(json);
|
||||
final String rawRequestBody = spec.getString("request");
|
||||
final String rawVariables = spec.getString("variables");
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
"response": {
|
||||
"data": {
|
||||
"block": {
|
||||
"number": "0x21"
|
||||
"number": "0x22"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
"response": {
|
||||
"data": {
|
||||
"block": {
|
||||
"number": "0x21",
|
||||
"number": "0x22",
|
||||
"call": {
|
||||
"data": "0x0000000000000000000000000000000000000000000000000000000000000001",
|
||||
"status": "0x1"
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
"response": {
|
||||
"data": {
|
||||
"block": {
|
||||
"number": "0x21",
|
||||
"number": "0x22",
|
||||
"call": {
|
||||
"data": "0x",
|
||||
"status": "0x1"
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
"response": {
|
||||
"data": {
|
||||
"gasPrice": "0x1",
|
||||
"maxPriorityFeePerGas": "0x0"
|
||||
"maxPriorityFeePerGas": "0x3b9aca00"
|
||||
}
|
||||
},
|
||||
"statusCode": 200
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
{
|
||||
"request": "{ block(number:\"0x22\") { account(address: \"0x6295ee1b4f6dd65047762f924ecd367c17eabf8f\") { balance } } }",
|
||||
"request": "{ block(number:\"0x220\") { account(address: \"0x6295ee1b4f6dd65047762f924ecd367c17eabf8f\") { balance } } }",
|
||||
"response": {
|
||||
"errors": [
|
||||
{
|
||||
"message": "Exception while fetching data (/block) : Block number 34 was not found",
|
||||
"message": "Exception while fetching data (/block) : Block number 544 was not found",
|
||||
"locations": [
|
||||
{
|
||||
"line": 1,
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
{
|
||||
"request": "{block (number: 34) { baseFeePerGas difficulty extraData miner { address } mixHash nonce stateRoot totalDifficulty withdrawalsRoot withdrawals { address amount index validator } blobGasUsed excessBlobGas transactions { maxFeePerBlobGas blobGasUsed blobGasPrice } }} ",
|
||||
"response":{
|
||||
"data": {
|
||||
"block":{
|
||||
"baseFeePerGas":"0x3437004a",
|
||||
"difficulty":"0x0",
|
||||
"extraData":"0x",
|
||||
"miner": {
|
||||
"address":"0x0000000000000000000000000000000000000000"
|
||||
},
|
||||
"mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000",
|
||||
"nonce":"0x0000000000000000",
|
||||
"stateRoot":"0x34727aff24d1c51cd63fdc14515b15ddaa156fa0671c58a96c72b1553819945d",
|
||||
"totalDifficulty":"0x427c00",
|
||||
"withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
|
||||
"withdrawals":[],
|
||||
"blobGasUsed":"0x40000",
|
||||
"excessBlobGas":"0x0",
|
||||
"transactions":[{"maxFeePerBlobGas":"0x3b9aca00","blobGasUsed":"0x40000","blobGasPrice":"0x1"}]
|
||||
}
|
||||
}
|
||||
},
|
||||
"statusCode": 200
|
||||
}
|
||||
@@ -4,7 +4,7 @@
|
||||
"data": {
|
||||
"pending": {
|
||||
"account": {
|
||||
"transactionCount": "0x21"
|
||||
"transactionCount": "0x22"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -14,6 +14,9 @@
|
||||
},
|
||||
{
|
||||
"number": "0x21"
|
||||
},
|
||||
{
|
||||
"number": "0x22"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
Binary file not shown.
@@ -4,7 +4,8 @@
|
||||
"ethash": {
|
||||
},
|
||||
"londonBlock": 33,
|
||||
"shanghaiTime": 1444660030
|
||||
"shanghaiTime": 1444660030,
|
||||
"cancunTime": 1444660040
|
||||
},
|
||||
"parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
|
||||
"coinbase" : "0x8888f1f195afa192cfee860698584c030f4c9db1",
|
||||
|
||||
Reference in New Issue
Block a user