#include "async_resp.hpp" #include "generated/enums/resource.hpp" #include "http_response.hpp" #include "systems.hpp" #include #include #include #include #include #include #include #include #include namespace redfish { namespace { TEST(GetAllowedHostTransition, UnexpectedError) { auto response = std::make_shared(); boost::system::error_code ec = boost::asio::error::invalid_argument; std::vector 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(); boost::system::error_code ec = boost::system::linux_error::bad_request_descriptor; std::vector 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(); boost::system::error_code ec; std::vector 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(); boost::system::error_code ec; std::vector 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