blob: 219ce1c039331fc99bc78679461d0117955c4be2 [file] [log] [blame]
#include "trompeloeil_doctest.h"
#include "pretty_printers.h"
#include "system/IETFSystem.h"
#include "test_log_setup.h"
#include "test_sysrepo_helpers.h"
#include "tests/configure.cmake.h"
using namespace std::literals;
TEST_CASE("Sysrepo ietf-system")
{
trompeloeil::sequence seq1;
TEST_SYSREPO_INIT_LOGS;
TEST_SYSREPO_INIT;
TEST_SYSREPO_INIT_CLIENT;
SECTION("Test system-state")
{
static const auto modulePrefix = "/ietf-system:system-state"s;
SECTION("Valid data")
{
std::filesystem::path file;
std::map<std::string, std::string> expected;
SECTION("Real data")
{
file = CMAKE_CURRENT_SOURCE_DIR "/tests/system/os-release";
expected = {
{"/clock", ""},
{"/platform", ""},
{"/platform/os-name", "CzechLight"},
{"/platform/os-release", "v4-105-g8294175-dirty"},
{"/platform/os-version", "v4-105-g8294175-dirty"},
};
}
SECTION("Missing =")
{
file = CMAKE_CURRENT_SOURCE_DIR "/tests/system/missing-equal";
expected = {
{"/clock", ""},
{"/platform", ""},
{"/platform/os-name", ""},
{"/platform/os-release", ""},
{"/platform/os-version", ""},
};
}
SECTION("Empty values")
{
file = CMAKE_CURRENT_SOURCE_DIR "/tests/system/empty-values";
expected = {
{"/clock", ""},
{"/platform", ""},
{"/platform/os-name", ""},
{"/platform/os-release", ""},
{"/platform/os-version", ""},
};
}
auto sysrepo = std::make_shared<velia::system::IETFSystem>(srSess, file);
REQUIRE(dataFromSysrepo(client, modulePrefix, SR_DS_OPERATIONAL) == expected);
}
SECTION("Invalid data (missing VERSION and NAME keys)")
{
REQUIRE_THROWS_AS(std::make_shared<velia::system::IETFSystem>(srSess, CMAKE_CURRENT_SOURCE_DIR "/tests/system/missing-keys"), std::out_of_range);
}
}
#ifdef TEST_RPC_SYSTEM_REBOOT
SECTION("RPC system-restart")
{
auto sysrepo = std::make_shared<velia::system::IETFSystem>(srSess, CMAKE_CURRENT_SOURCE_DIR "/tests/system/os-release");
auto rpcInput = std::make_shared<sysrepo::Vals>(0);
auto res = client->rpc_send("/ietf-system:system-restart", rpcInput);
REQUIRE(res->val_cnt() == 0);
}
#endif
}