mirror of
https://github.com/XRPLF/clio.git
synced 2025-11-19 11:15:50 +00:00
@@ -208,3 +208,11 @@ static constexpr auto kINVALID_JSON_DATA = R"JSON({
|
||||
"withDefault" : "0.0"
|
||||
}
|
||||
})JSON";
|
||||
|
||||
// used to Verify Config test
|
||||
static constexpr auto kVALID_JSON_DATA = R"JSON({
|
||||
"server": {
|
||||
"ip": "0.0.0.0",
|
||||
"port": 51233
|
||||
}
|
||||
})JSON";
|
||||
|
||||
@@ -5,6 +5,7 @@ target_sources(
|
||||
PRIVATE # Common
|
||||
ConfigTests.cpp
|
||||
app/CliArgsTests.cpp
|
||||
app/VerifyConfigTests.cpp
|
||||
app/WebHandlersTests.cpp
|
||||
data/AmendmentCenterTests.cpp
|
||||
data/BackendCountersTests.cpp
|
||||
|
||||
@@ -32,6 +32,7 @@ struct CliArgsTests : testing::Test {
|
||||
testing::StrictMock<testing::MockFunction<int(CliArgs::Action::Run)>> onRunMock;
|
||||
testing::StrictMock<testing::MockFunction<int(CliArgs::Action::Exit)>> onExitMock;
|
||||
testing::StrictMock<testing::MockFunction<int(CliArgs::Action::Migrate)>> onMigrateMock;
|
||||
testing::StrictMock<testing::MockFunction<int(CliArgs::Action::VerifyConfig)>> onVerifyMock;
|
||||
};
|
||||
|
||||
TEST_F(CliArgsTests, Parse_NoArgs)
|
||||
@@ -46,7 +47,13 @@ TEST_F(CliArgsTests, Parse_NoArgs)
|
||||
return returnCode;
|
||||
});
|
||||
EXPECT_EQ(
|
||||
action.apply(onRunMock.AsStdFunction(), onExitMock.AsStdFunction(), onMigrateMock.AsStdFunction()), returnCode
|
||||
action.apply(
|
||||
onRunMock.AsStdFunction(),
|
||||
onExitMock.AsStdFunction(),
|
||||
onMigrateMock.AsStdFunction(),
|
||||
onVerifyMock.AsStdFunction()
|
||||
),
|
||||
returnCode
|
||||
);
|
||||
}
|
||||
|
||||
@@ -62,7 +69,12 @@ TEST_F(CliArgsTests, Parse_NgWebServer)
|
||||
return returnCode;
|
||||
});
|
||||
EXPECT_EQ(
|
||||
action.apply(onRunMock.AsStdFunction(), onExitMock.AsStdFunction(), onMigrateMock.AsStdFunction()),
|
||||
action.apply(
|
||||
onRunMock.AsStdFunction(),
|
||||
onExitMock.AsStdFunction(),
|
||||
onMigrateMock.AsStdFunction(),
|
||||
onVerifyMock.AsStdFunction()
|
||||
),
|
||||
returnCode
|
||||
);
|
||||
}
|
||||
@@ -79,7 +91,12 @@ TEST_F(CliArgsTests, Parse_VersionHelp)
|
||||
|
||||
EXPECT_CALL(onExitMock, Call).WillOnce([](CliArgs::Action::Exit const& exit) { return exit.exitCode; });
|
||||
EXPECT_EQ(
|
||||
action.apply(onRunMock.AsStdFunction(), onExitMock.AsStdFunction(), onMigrateMock.AsStdFunction()),
|
||||
action.apply(
|
||||
onRunMock.AsStdFunction(),
|
||||
onExitMock.AsStdFunction(),
|
||||
onMigrateMock.AsStdFunction(),
|
||||
onVerifyMock.AsStdFunction()
|
||||
),
|
||||
EXIT_SUCCESS
|
||||
);
|
||||
}
|
||||
@@ -97,6 +114,34 @@ TEST_F(CliArgsTests, Parse_Config)
|
||||
return returnCode;
|
||||
});
|
||||
EXPECT_EQ(
|
||||
action.apply(onRunMock.AsStdFunction(), onExitMock.AsStdFunction(), onMigrateMock.AsStdFunction()), returnCode
|
||||
action.apply(
|
||||
onRunMock.AsStdFunction(),
|
||||
onExitMock.AsStdFunction(),
|
||||
onMigrateMock.AsStdFunction(),
|
||||
onVerifyMock.AsStdFunction()
|
||||
),
|
||||
returnCode
|
||||
);
|
||||
}
|
||||
|
||||
TEST_F(CliArgsTests, Parse_VerifyConfig)
|
||||
{
|
||||
std::string_view configPath = "some_config_path";
|
||||
std::array argv{"clio_server", configPath.data(), "--verify"}; // NOLINT(bugprone-suspicious-stringview-data-usage)
|
||||
auto const action = CliArgs::parse(argv.size(), argv.data());
|
||||
|
||||
int const returnCode = 123;
|
||||
EXPECT_CALL(onVerifyMock, Call).WillOnce([&configPath](CliArgs::Action::VerifyConfig const& verify) {
|
||||
EXPECT_EQ(verify.configPath, configPath);
|
||||
return returnCode;
|
||||
});
|
||||
EXPECT_EQ(
|
||||
action.apply(
|
||||
onRunMock.AsStdFunction(),
|
||||
onExitMock.AsStdFunction(),
|
||||
onMigrateMock.AsStdFunction(),
|
||||
onVerifyMock.AsStdFunction()
|
||||
),
|
||||
returnCode
|
||||
);
|
||||
}
|
||||
|
||||
62
tests/unit/app/VerifyConfigTests.cpp
Normal file
62
tests/unit/app/VerifyConfigTests.cpp
Normal file
@@ -0,0 +1,62 @@
|
||||
//------------------------------------------------------------------------------
|
||||
/*
|
||||
This file is part of clio: https://github.com/XRPLF/clio
|
||||
Copyright (c) 2025, the clio developers.
|
||||
|
||||
Permission to use, copy, modify, and distribute this software for any
|
||||
purpose with or without fee is hereby granted, provided that the above
|
||||
copyright notice and this permission notice appear in all copies.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
//==============================================================================
|
||||
|
||||
#include "app/VerifyConfig.hpp"
|
||||
#include "util/TmpFile.hpp"
|
||||
#include "util/newconfig/FakeConfigData.hpp"
|
||||
|
||||
#include <gtest/gtest.h>
|
||||
|
||||
using namespace app;
|
||||
using namespace util::config;
|
||||
|
||||
TEST(VerifyConfigTest, InvalidConfig)
|
||||
{
|
||||
auto const tmpConfigFile = TmpFile(kJSON_DATA);
|
||||
|
||||
// false because json data(kJSON_DATA) is not compatible with current configDefintion
|
||||
EXPECT_FALSE(verifyConfig(tmpConfigFile.path));
|
||||
}
|
||||
|
||||
TEST(VerifyConfigTest, ValidConfig)
|
||||
{
|
||||
auto const tmpConfigFile = TmpFile(kVALID_JSON_DATA);
|
||||
|
||||
// current example config should always be compatible with configDefinition
|
||||
EXPECT_TRUE(verifyConfig(tmpConfigFile.path));
|
||||
}
|
||||
|
||||
TEST(VerifyConfigTest, ConfigFileNotExist)
|
||||
{
|
||||
EXPECT_FALSE(verifyConfig("doesn't exist Config File"));
|
||||
}
|
||||
|
||||
TEST(VerifyConfigTest, InvalidJsonFile)
|
||||
{
|
||||
// invalid json because extra "," after 51233
|
||||
static constexpr auto kINVALID_JSON = R"({
|
||||
"server": {
|
||||
"ip": "0.0.0.0",
|
||||
"port": 51233,
|
||||
}
|
||||
})";
|
||||
auto const tmpConfigFile = TmpFile(kINVALID_JSON);
|
||||
|
||||
EXPECT_FALSE(verifyConfig(tmpConfigFile.path));
|
||||
}
|
||||
Reference in New Issue
Block a user