diff --git a/besu/src/test/java/org/hyperledger/besu/cli/launcher/LauncherTest.java b/besu/src/test/java/org/hyperledger/besu/cli/launcher/LauncherTest.java new file mode 100644 index 0000000000..8bce1980f0 --- /dev/null +++ b/besu/src/test/java/org/hyperledger/besu/cli/launcher/LauncherTest.java @@ -0,0 +1,64 @@ +/* + * Copyright Hyperledger Besu Contributors. + * + * 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. + * + * SPDX-License-Identifier: Apache-2.0 + */ +package org.hyperledger.besu.cli.launcher; + +import static org.assertj.core.api.Assertions.assertThat; + +import org.hyperledger.besu.cli.BesuCommand; + +import java.io.IOException; +import java.util.List; + +import com.fasterxml.jackson.databind.ObjectMapper; +import com.google.common.base.Splitter; +import net.consensys.quorum.mainnet.launcher.model.LauncherScript; +import net.consensys.quorum.mainnet.launcher.model.Step; +import org.junit.Test; + +public class LauncherTest { + + private static final ObjectMapper MAPPER = new ObjectMapper(); + + @Test + public void launcherDefaultValuesAreAvailable() throws IOException { + final LauncherScript script = + MAPPER.readValue( + (BesuCommand.class.getResourceAsStream("launcher.json")), LauncherScript.class); + assertThat(isStepValid(List.of(script.getSteps()))).isTrue(); + } + + @SuppressWarnings("ReturnValueIgnored") + private boolean isStepValid(final List steps) { + for (Step step : steps) { + if (step.getAvailableOptions() != null) { + try { + List split = Splitter.on('$').splitToList(step.getAvailableOptions()); + if (split.size() > 1) { + Class.forName(split.get(0)).getField(split.get(1)); + } else { + Class.forName(step.getAvailableOptions()).getEnumConstants(); + } + } catch (Exception exception) { + exception.printStackTrace(); + return false; + } + } + if (!isStepValid(step.getSubQuestions())) { + return false; + } + } + return true; + } +} diff --git a/ethereum/api/src/main/java/org/hyperledger/besu/ethereum/api/jsonrpc/RpcApis.java b/ethereum/api/src/main/java/org/hyperledger/besu/ethereum/api/jsonrpc/RpcApis.java index f98703ea2e..d7dbaa512c 100644 --- a/ethereum/api/src/main/java/org/hyperledger/besu/ethereum/api/jsonrpc/RpcApis.java +++ b/ethereum/api/src/main/java/org/hyperledger/besu/ethereum/api/jsonrpc/RpcApis.java @@ -36,4 +36,8 @@ public enum RpcApis { QBFT; public static final List DEFAULT_RPC_APIS = Arrays.asList("ETH", "NET", "WEB3"); + + @SuppressWarnings("unused") + public static final List ALL_JSON_RPC_APIS = + Arrays.asList(ETH, DEBUG, MINER, NET, PERM, WEB3, ADMIN, EEA, PRIV, TXPOOL, TRACE, PLUGINS); }