1 2 #include "utils/dbus_utils.hpp" 3 4 #include "async_resp.hpp" 5 #include "http_response.hpp" 6 7 #include <boost/beast/http/status.hpp> 8 #include <boost/system/errc.hpp> 9 #include <nlohmann/json.hpp> 10 #include <sdbusplus/message.hpp> 11 12 #include <memory> 13 #include <string> 14 15 #include <gtest/gtest.h> 16 17 namespace redfish::details 18 { 19 namespace 20 { 21 22 TEST(DbusUtils, AfterPropertySetSuccess) 23 { 24 std::shared_ptr<bmcweb::AsyncResp> asyncResp = 25 std::make_shared<bmcweb::AsyncResp>(); 26 27 boost::system::error_code ec; 28 sdbusplus::message_t msg; 29 afterSetProperty(asyncResp, "MyRedfishProperty", 30 nlohmann::json("MyRedfishValue"), ec, msg); 31 32 EXPECT_EQ(asyncResp->res.result(), boost::beast::http::status::no_content); 33 EXPECT_TRUE(asyncResp->res.jsonValue.empty()); 34 } 35 36 TEST(DbusUtils, AfterPropertySetInternalError) 37 { 38 std::shared_ptr<bmcweb::AsyncResp> asyncResp = 39 std::make_shared<bmcweb::AsyncResp>(); 40 41 boost::system::error_code ec = 42 boost::system::errc::make_error_code(boost::system::errc::timed_out); 43 sdbusplus::message_t msg; 44 afterSetProperty(asyncResp, "MyRedfishProperty", 45 nlohmann::json("MyRedfishValue"), ec, msg); 46 47 EXPECT_EQ(asyncResp->res.result(), 48 boost::beast::http::status::internal_server_error); 49 EXPECT_EQ(asyncResp->res.jsonValue.size(), 1); 50 using nlohmann::literals::operator""_json; 51 52 EXPECT_EQ(asyncResp->res.jsonValue, 53 R"({ 54 "error": { 55 "@Message.ExtendedInfo": [ 56 { 57 "@odata.type": "#Message.v1_1_1.Message", 58 "Message": "The request failed due to an internal service error. The service is still operational.", 59 "MessageArgs": [], 60 "MessageId": "Base.1.18.1.InternalError", 61 "MessageSeverity": "Critical", 62 "Resolution": "Resubmit the request. If the problem persists, consider resetting the service." 63 } 64 ], 65 "code": "Base.1.18.1.InternalError", 66 "message": "The request failed due to an internal service error. The service is still operational." 67 } 68 })"_json); 69 } 70 71 } // namespace 72 } // namespace redfish::details 73