diff options
Diffstat (limited to 'test')
-rw-r--r-- | test/redfish-core/lib/system_test.cpp | 132 |
1 files changed, 132 insertions, 0 deletions
diff --git a/test/redfish-core/lib/system_test.cpp b/test/redfish-core/lib/system_test.cpp new file mode 100644 index 0000000000..481c0df746 --- /dev/null +++ b/test/redfish-core/lib/system_test.cpp @@ -0,0 +1,132 @@ +#include "app.hpp" +#include "async_resp.hpp" +#include "http_request.hpp" +#include "http_response.hpp" +#include "systems.hpp" + +#include <boost/beast/core/string_type.hpp> +#include <boost/beast/http/message.hpp> +#include <boost/system/error_code.hpp> +#include <nlohmann/json.hpp> + +#include <memory> +#include <string> +#include <system_error> +#include <vector> + +#include <gtest/gtest.h> + +namespace redfish +{ +namespace +{ + +TEST(GetAllowedHostTransition, UnexpectedError) +{ + auto response = std::make_shared<bmcweb::AsyncResp>(); + boost::system::error_code ec = boost::asio::error::invalid_argument; + std::vector<std::string> allowedHostTransitions; + + afterGetAllowedHostTransitions(response, ec, allowedHostTransitions); + + EXPECT_EQ(response->res.result(), + boost::beast::http::status::internal_server_error); +} + +TEST(GetAllowedHostTransition, NoPropOnDbus) +{ + auto response = std::make_shared<bmcweb::AsyncResp>(); + boost::system::error_code ec = + boost::system::linux_error::bad_request_descriptor; + std::vector<std::string> allowedHostTransitions; + + afterGetAllowedHostTransitions(response, ec, allowedHostTransitions); + + nlohmann::json::array_t parameters; + nlohmann::json::object_t parameter; + parameter["Name"] = "ResetType"; + parameter["Required"] = true; + parameter["DataType"] = "String"; + nlohmann::json::array_t allowed; + allowed.emplace_back(resource::ResetType::ForceOff); + allowed.emplace_back(resource::ResetType::PowerCycle); + allowed.emplace_back(resource::ResetType::Nmi); + allowed.emplace_back(resource::ResetType::On); + allowed.emplace_back(resource::ResetType::ForceOn); + allowed.emplace_back(resource::ResetType::ForceRestart); + allowed.emplace_back(resource::ResetType::GracefulRestart); + allowed.emplace_back(resource::ResetType::GracefulShutdown); + parameter["AllowableValues"] = std::move(allowed); + parameters.emplace_back(std::move(parameter)); + + EXPECT_EQ(response->res.jsonValue["Parameters"], parameters); +} + +TEST(GetAllowedHostTransition, NoForceRestart) +{ + auto response = std::make_shared<bmcweb::AsyncResp>(); + boost::system::error_code ec; + + std::vector<std::string> allowedHostTransitions = { + "xyz.openbmc_project.State.Host.Transition.On", + "xyz.openbmc_project.State.Host.Transition.Off", + "xyz.openbmc_project.State.Host.Transition.GracefulWarmReboot", + }; + + afterGetAllowedHostTransitions(response, ec, allowedHostTransitions); + + nlohmann::json::array_t parameters; + nlohmann::json::object_t parameter; + parameter["Name"] = "ResetType"; + parameter["Required"] = true; + parameter["DataType"] = "String"; + nlohmann::json::array_t allowed; + allowed.emplace_back(resource::ResetType::ForceOff); + allowed.emplace_back(resource::ResetType::PowerCycle); + allowed.emplace_back(resource::ResetType::Nmi); + allowed.emplace_back(resource::ResetType::On); + allowed.emplace_back(resource::ResetType::ForceOn); + allowed.emplace_back(resource::ResetType::GracefulShutdown); + allowed.emplace_back(resource::ResetType::GracefulRestart); + parameter["AllowableValues"] = std::move(allowed); + parameters.emplace_back(std::move(parameter)); + + EXPECT_EQ(response->res.jsonValue["Parameters"], parameters); +} + +TEST(GetAllowedHostTransition, AllSupported) +{ + auto response = std::make_shared<bmcweb::AsyncResp>(); + boost::system::error_code ec; + + std::vector<std::string> allowedHostTransitions = { + "xyz.openbmc_project.State.Host.Transition.On", + "xyz.openbmc_project.State.Host.Transition.Off", + "xyz.openbmc_project.State.Host.Transition.GracefulWarmReboot", + "xyz.openbmc_project.State.Host.Transition.ForceWarmReboot", + }; + + afterGetAllowedHostTransitions(response, ec, allowedHostTransitions); + + nlohmann::json::array_t parameters; + nlohmann::json::object_t parameter; + parameter["Name"] = "ResetType"; + parameter["Required"] = true; + parameter["DataType"] = "String"; + nlohmann::json::array_t allowed; + allowed.emplace_back(resource::ResetType::ForceOff); + allowed.emplace_back(resource::ResetType::PowerCycle); + allowed.emplace_back(resource::ResetType::Nmi); + allowed.emplace_back(resource::ResetType::On); + allowed.emplace_back(resource::ResetType::ForceOn); + allowed.emplace_back(resource::ResetType::GracefulShutdown); + allowed.emplace_back(resource::ResetType::GracefulRestart); + allowed.emplace_back(resource::ResetType::ForceRestart); + parameter["AllowableValues"] = std::move(allowed); + parameters.emplace_back(std::move(parameter)); + + EXPECT_EQ(response->res.jsonValue["Parameters"], parameters); +} + +} // namespace +} // namespace redfish |