1 // SPDX-License-Identifier: Apache-2.0 2 // SPDX-FileCopyrightText: Copyright OpenBMC Authors 3 #include "verb.hpp" 4 5 #include <boost/beast/http/verb.hpp> 6 7 #include <map> 8 #include <optional> 9 #include <string_view> 10 11 #include <gtest/gtest.h> 12 13 using BoostVerb = boost::beast::http::verb; 14 15 TEST(BoostToHttpVerb, ValidCase) 16 { 17 std::map<HttpVerb, BoostVerb> verbMap = { 18 {HttpVerb::Delete, BoostVerb::delete_}, 19 {HttpVerb::Get, BoostVerb::get}, 20 {HttpVerb::Head, BoostVerb::head}, 21 {HttpVerb::Options, BoostVerb::options}, 22 {HttpVerb::Patch, BoostVerb::patch}, 23 {HttpVerb::Post, BoostVerb::post}, 24 {HttpVerb::Put, BoostVerb::put}, 25 }; 26 27 for (int verbIndex = 0; verbIndex < static_cast<int>(HttpVerb::Max); 28 ++verbIndex) 29 { 30 HttpVerb httpVerb = static_cast<HttpVerb>(verbIndex); 31 std::optional<HttpVerb> verb = httpVerbFromBoost(verbMap[httpVerb]); 32 EXPECT_EQ(verb, httpVerb); 33 } 34 } 35 36 TEST(BoostToHttpVerbTest, InvalidCase) 37 { 38 std::optional<HttpVerb> verb = httpVerbFromBoost(BoostVerb::unknown); 39 EXPECT_FALSE(verb.has_value()); 40 } 41 42 TEST(HttpVerbToStringTest, ValidCase) 43 { 44 std::map<HttpVerb, std::string_view> verbMap = { 45 {HttpVerb::Delete, "DELETE"}, {HttpVerb::Get, "GET"}, 46 {HttpVerb::Head, "HEAD"}, {HttpVerb::Options, "OPTIONS"}, 47 {HttpVerb::Patch, "PATCH"}, {HttpVerb::Post, "POST"}, 48 {HttpVerb::Put, "PUT"}, 49 }; 50 51 for (int verbIndex = 0; verbIndex < static_cast<int>(HttpVerb::Max); 52 ++verbIndex) 53 { 54 HttpVerb httpVerb = static_cast<HttpVerb>(verbIndex); 55 EXPECT_EQ(httpVerbToString(httpVerb), verbMap[httpVerb]); 56 } 57 } 58