Migrate utility_test.cc

It was missed in cl/781218433 Migrate http/utility

also add BUILD rule for common.h which is missed in cl/782030271

#gbmcweb-g3

PiperOrigin-RevId: 783117225
Change-Id: Ie87affc8216cb55a3d331433ee4d43b033d06921
diff --git a/copy.bara.sky b/copy.bara.sky
index da6a39f..e76fd86 100644
--- a/copy.bara.sky
+++ b/copy.bara.sky
@@ -53,6 +53,7 @@
     "google3/third_party/gbmcweb/http/logging.h",
     "google3/third_party/gbmcweb/http/utility.cc",
     "google3/third_party/gbmcweb/http/utility.h",
+    "google3/third_party/gbmcweb/http/utility_test.cc",
     "google3/third_party/gbmcweb/http/verb.h",
     "google3/third_party/gbmcweb/http/verb_test.cc",
     # go/keep-sorted end
@@ -69,6 +70,7 @@
     "http/utility.hpp",
     "http/verb.hpp",
     "meson_options.txt",
+    "test/http/utility_test.cpp",
     "test/http/verb_test.cpp",
     # go/keep-sorted end
 ]
@@ -186,6 +188,10 @@
         after = "http/utility.hpp",
     ),
     core.move(
+        before = "google3/third_party/gbmcweb/http/utility_test.cc",
+        after = "test/http/utility_test.cpp",
+    ),
+    core.move(
         before = "google3/third_party/gbmcweb/http/common.h",
         after = "http/common.hpp",
     ),
@@ -281,6 +287,10 @@
         after = "google3/third_party/gbmcweb/http/utility.h",
     ),
     core.move(
+        before = "test/http/utility_test.cpp",
+        after = "google3/third_party/gbmcweb/http/utility_test.cc",
+    ),
+    core.move(
         before = "http/common.hpp",
         after = "google3/third_party/gbmcweb/http/common.h",
     ),
diff --git a/test/http/utility_test.cpp b/test/http/utility_test.cpp
index c382e22..d8ce0d0 100644
--- a/test/http/utility_test.cpp
+++ b/test/http/utility_test.cpp
@@ -1,278 +1,255 @@
-#include "bmcweb_config.h"
-
 #include "utility.hpp"
 
-#include <boost/url/error.hpp>
-#include <boost/url/url.hpp>
-#include <boost/url/url_view.hpp>
-#include <nlohmann/json.hpp>
-
 #include <cstdint>
-#include <ctime>
 #include <functional>
-#include <limits>
 #include <string>
 #include <string_view>
 
-#include <gtest/gtest.h> // IWYU pragma: keep
+#include "gtest/gtest.h"  // IWYU pragma: keep
+#include "boost/url/error.hpp"
+#include "boost/url/url.hpp"
+#include "boost/url/url_view.hpp"
+#include "bmcweb_config.h"
+#include <nlohmann/json.hpp>
 // IWYU pragma: no_include <gtest/gtest-message.h>
 // IWYU pragma: no_include <gtest/gtest-test-part.h>
 // IWYU pragma: no_include "gtest/gtest_pred_impl.h"
 
-namespace crow::utility
-{
-namespace
-{
+namespace crow::utility {
+namespace {
 
 using ::crow::black_magic::getParameterTag;
 
-TEST(Utility, Base64DecodeAuthString)
-{
-    std::string authString("dXNlcm40bWU6cGFzc3cwcmQ=");
-    std::string result;
-    EXPECT_TRUE(base64Decode(authString, result));
-    EXPECT_EQ(result, "usern4me:passw0rd");
+TEST(Utility, Base64DecodeAuthString) {
+  std::string authString("dXNlcm40bWU6cGFzc3cwcmQ=");
+  std::string result;
+  EXPECT_TRUE(base64Decode(authString, result));
+  EXPECT_EQ(result, "usern4me:passw0rd");
 }
 
-TEST(Utility, Base64DecodeNonAscii)
-{
-    std::string junkString("\xff\xee\xdd\xcc\x01\x11\x22\x33");
-    std::string result;
-    EXPECT_FALSE(base64Decode(junkString, result));
+TEST(Utility, Base64DecodeNonAscii) {
+  std::string junkString("\xff\xee\xdd\xcc\x01\x11\x22\x33");
+  std::string result;
+  EXPECT_FALSE(base64Decode(junkString, result));
 }
 
-TEST(Utility, Base64EncodeString)
-{
-    using namespace std::string_literals;
-    std::string encoded;
+TEST(Utility, Base64EncodeString) {
+  using namespace std::string_literals;  // NOLINT
+  std::string encoded;
 
-    encoded = base64encode("");
-    EXPECT_EQ(encoded, "");
+  encoded = base64encode("");
+  EXPECT_EQ(encoded, "");
 
-    encoded = base64encode("f");
-    EXPECT_EQ(encoded, "Zg==");
+  encoded = base64encode("f");
+  EXPECT_EQ(encoded, "Zg==");
 
-    encoded = base64encode("f0");
-    EXPECT_EQ(encoded, "ZjA=");
+  encoded = base64encode("f0");
+  EXPECT_EQ(encoded, "ZjA=");
 
-    encoded = base64encode("f0\0"s);
-    EXPECT_EQ(encoded, "ZjAA");
+  encoded = base64encode("f0\0"s);
+  EXPECT_EQ(encoded, "ZjAA");
 
-    encoded = base64encode("f0\0 "s);
-    EXPECT_EQ(encoded, "ZjAAIA==");
+  encoded = base64encode("f0\0 "s);
+  EXPECT_EQ(encoded, "ZjAAIA==");
 
-    encoded = base64encode("f0\0 B"s);
-    EXPECT_EQ(encoded, "ZjAAIEI=");
+  encoded = base64encode("f0\0 B"s);
+  EXPECT_EQ(encoded, "ZjAAIEI=");
 
-    encoded = base64encode("f0\0 Ba"s);
-    EXPECT_EQ(encoded, "ZjAAIEJh");
+  encoded = base64encode("f0\0 Ba"s);
+  EXPECT_EQ(encoded, "ZjAAIEJh");
 
-    encoded = base64encode("f0\0 Bar"s);
-    EXPECT_EQ(encoded, "ZjAAIEJhcg==");
+  encoded = base64encode("f0\0 Bar"s);
+  EXPECT_EQ(encoded, "ZjAAIEJhcg==");
 }
 
-TEST(Utility, Base64EncodeDecodeString)
-{
-    using namespace std::string_literals;
-    std::string data("Data fr\0m 90 reading a \nFile"s);
-    std::string encoded = base64encode(data);
-    std::string decoded;
-    EXPECT_TRUE(base64Decode(encoded, decoded));
-    EXPECT_EQ(data, decoded);
+TEST(Utility, Base64EncodeDecodeString) {
+  using namespace std::string_literals;  // NOLINT
+  std::string data("Data fr\0m 90 reading a \nFile"s);
+  std::string encoded = base64encode(data);
+  std::string decoded;
+  EXPECT_TRUE(base64Decode(encoded, decoded));
+  EXPECT_EQ(data, decoded);
 }
 
-TEST(Utility, UrlFromPieces)
-{
-    boost::urls::url url = urlFromPieces("redfish", "v1", "foo");
-    EXPECT_EQ(url.buffer(), "/redfish/v1/foo");
+TEST(Utility, UrlFromPieces) {
+  boost::urls::url url = urlFromPieces("redfish", "v1", "foo");
+  EXPECT_EQ(url.buffer(), "/redfish/v1/foo");
 
-    url = urlFromPieces("/", "badString");
-    EXPECT_EQ(url.buffer(), "/%2F/badString");
+  url = urlFromPieces("/", "badString");
+  EXPECT_EQ(url.buffer(), "/%2F/badString");
 
-    url = urlFromPieces("bad?tring");
-    EXPECT_EQ(url.buffer(), "/bad%3Ftring");
+  url = urlFromPieces("bad?tring");
+  EXPECT_EQ(url.buffer(), "/bad%3Ftring");
 
-    url = urlFromPieces("/", "bad&tring");
-    EXPECT_EQ(url.buffer(), "/%2F/bad&tring");
+  url = urlFromPieces("/", "bad&tring");
+  EXPECT_EQ(url.buffer(), "/%2F/bad&tring");
 
-    EXPECT_EQ(std::string_view(url.data(), url.size()), "/%2F/bad&tring");
+  EXPECT_EQ(std::string_view(url.data(), url.size()), "/%2F/bad&tring");
 
-    url = urlFromPieces("my-user");
-    EXPECT_EQ(std::string_view(url.data(), url.size()), "/my-user");
+  url = urlFromPieces("my-user");
+  EXPECT_EQ(std::string_view(url.data(), url.size()), "/my-user");
 
-    url = urlFromPieces("my_user");
-    EXPECT_EQ(std::string_view(url.data(), url.size()), "/my_user");
+  url = urlFromPieces("my_user");
+  EXPECT_EQ(std::string_view(url.data(), url.size()), "/my_user");
 
-    url = urlFromPieces("my_93user");
-    EXPECT_EQ(std::string_view(url.data(), url.size()), "/my_93user");
+  url = urlFromPieces("my_93user");
+  EXPECT_EQ(std::string_view(url.data(), url.size()), "/my_93user");
 
-    // The following characters will be converted to ASCII number
-    // `[{]}\|"<>/?#%^
-    url =
-        urlFromPieces("~1234567890-_=+qwertyuiopasdfghjklzxcvbnm;:',.!@$&*()");
-    EXPECT_EQ(std::string_view(url.data(), url.size()),
-              "/~1234567890-_=+qwertyuiopasdfghjklzxcvbnm;:',.!@$&*()");
+  // The following characters will be converted to ASCII number
+  // `[{]}\|"<>/?#%^
+  url = urlFromPieces("~1234567890-_=+qwertyuiopasdfghjklzxcvbnm;:',.!@$&*()");
+  EXPECT_EQ(std::string_view(url.data(), url.size()),
+            "/~1234567890-_=+qwertyuiopasdfghjklzxcvbnm;:',.!@$&*()");
 }
 
-TEST(Utility, readUrlSegments)
-{
-    auto parsed =
-        boost::urls::parse_relative_ref("/redfish/v1/Chassis#/Fans/0/Reading");
+TEST(Utility, readUrlSegments) {
+  auto parsed =
+      boost::urls::parse_relative_ref("/redfish/v1/Chassis#/Fans/0/Reading");
 
-    EXPECT_TRUE(readUrlSegments(*parsed, "redfish", "v1", "Chassis"));
+  EXPECT_TRUE(readUrlSegments(*parsed, "redfish", "v1", "Chassis"));
 
-    EXPECT_FALSE(readUrlSegments(*parsed, "FOOBAR", "v1", "Chassis"));
+  EXPECT_FALSE(readUrlSegments(*parsed, "FOOBAR", "v1", "Chassis"));
 
-    EXPECT_FALSE(readUrlSegments(*parsed, "redfish", "v1"));
+  EXPECT_FALSE(readUrlSegments(*parsed, "redfish", "v1"));
 
-    EXPECT_FALSE(
-        readUrlSegments(*parsed, "redfish", "v1", "Chassis", "FOOBAR"));
+  EXPECT_FALSE(readUrlSegments(*parsed, "redfish", "v1", "Chassis", "FOOBAR"));
 
-    std::string out1;
-    std::string out2;
-    std::string out3;
-    EXPECT_TRUE(readUrlSegments(*parsed, "redfish", "v1", std::ref(out1)));
-    EXPECT_EQ(out1, "Chassis");
+  std::string out1;
+  std::string out2;
+  std::string out3;
+  EXPECT_TRUE(readUrlSegments(*parsed, "redfish", "v1", std::ref(out1)));
+  EXPECT_EQ(out1, "Chassis");
 
-    out1 = out2 = out3 = "";
-    EXPECT_TRUE(readUrlSegments(*parsed, std::ref(out1), std::ref(out2),
-                                std::ref(out3)));
-    EXPECT_EQ(out1, "redfish");
-    EXPECT_EQ(out2, "v1");
-    EXPECT_EQ(out3, "Chassis");
+  out1 = out2 = out3 = "";
+  EXPECT_TRUE(
+      readUrlSegments(*parsed, std::ref(out1), std::ref(out2), std::ref(out3)));
+  EXPECT_EQ(out1, "redfish");
+  EXPECT_EQ(out2, "v1");
+  EXPECT_EQ(out3, "Chassis");
 
-    out1 = out2 = out3 = "";
-    EXPECT_TRUE(readUrlSegments(*parsed, "redfish", std::ref(out1), "Chassis"));
-    EXPECT_EQ(out1, "v1");
+  out1 = out2 = out3 = "";
+  EXPECT_TRUE(readUrlSegments(*parsed, "redfish", std::ref(out1), "Chassis"));
+  EXPECT_EQ(out1, "v1");
 
-    out1 = out2 = out3 = "";
-    EXPECT_TRUE(readUrlSegments(*parsed, std::ref(out1), "v1", std::ref(out2)));
-    EXPECT_EQ(out1, "redfish");
-    EXPECT_EQ(out2, "Chassis");
+  out1 = out2 = out3 = "";
+  EXPECT_TRUE(readUrlSegments(*parsed, std::ref(out1), "v1", std::ref(out2)));
+  EXPECT_EQ(out1, "redfish");
+  EXPECT_EQ(out2, "Chassis");
 
-    EXPECT_FALSE(readUrlSegments(*parsed, "too", "short"));
+  EXPECT_FALSE(readUrlSegments(*parsed, "too", "short"));
 
-    EXPECT_FALSE(readUrlSegments(*parsed, "too", "long", "too", "long"));
+  EXPECT_FALSE(readUrlSegments(*parsed, "too", "long", "too", "long"));
 
-    EXPECT_FALSE(
-        readUrlSegments(*parsed, std::ref(out1), "v2", std::ref(out2)));
+  EXPECT_FALSE(readUrlSegments(*parsed, std::ref(out1), "v2", std::ref(out2)));
 
-    EXPECT_FALSE(readUrlSegments(*parsed, "redfish", std::ref(out1),
-                                 std::ref(out2), std::ref(out3)));
+  EXPECT_FALSE(readUrlSegments(*parsed, "redfish", std::ref(out1),
+                               std::ref(out2), std::ref(out3)));
 
-    parsed = boost::urls::parse_relative_ref("/absolute/url");
-    EXPECT_TRUE(readUrlSegments(*parsed, "absolute", "url"));
+  parsed = boost::urls::parse_relative_ref("/absolute/url");
+  EXPECT_TRUE(readUrlSegments(*parsed, "absolute", "url"));
 
-    parsed = boost::urls::parse_relative_ref("not/absolute/url");
-    EXPECT_FALSE(readUrlSegments(*parsed, "not", "absolute", "url"));
+  parsed = boost::urls::parse_relative_ref("not/absolute/url");
+  EXPECT_FALSE(readUrlSegments(*parsed, "not", "absolute", "url"));
 
-    parsed = boost::urls::parse_relative_ref("/excellent/path");
+  parsed = boost::urls::parse_relative_ref("/excellent/path");
 
-    EXPECT_TRUE(readUrlSegments(*parsed, "excellent", "path", OrMorePaths()));
-    EXPECT_TRUE(readUrlSegments(*parsed, "excellent", OrMorePaths()));
-    EXPECT_TRUE(readUrlSegments(*parsed, OrMorePaths()));
+  EXPECT_TRUE(readUrlSegments(*parsed, "excellent", "path", OrMorePaths()));
+  EXPECT_TRUE(readUrlSegments(*parsed, "excellent", OrMorePaths()));
+  EXPECT_TRUE(readUrlSegments(*parsed, OrMorePaths()));
 }
 
-TEST(Utility, ValidateAndSplitUrlPositive)
-{
-    std::string host;
-    std::string urlProto;
-    uint16_t port = 0;
-    std::string path;
-    ASSERT_TRUE(validateAndSplitUrl("https://foo.com:18080/bar", urlProto, host,
-                                    port, path));
-    EXPECT_EQ(host, "foo.com");
-    EXPECT_EQ(urlProto, "https");
-    EXPECT_EQ(port, 18080);
+TEST(Utility, ValidateAndSplitUrlPositive) {
+  std::string host;
+  std::string urlProto;
+  uint16_t port = 0;
+  std::string path;
+  ASSERT_TRUE(validateAndSplitUrl("https://foo.com:18080/bar", urlProto, host,
+                                  port, path));
+  EXPECT_EQ(host, "foo.com");
+  EXPECT_EQ(urlProto, "https");
+  EXPECT_EQ(port, 18080);
 
-    EXPECT_EQ(path, "/bar");
+  EXPECT_EQ(path, "/bar");
 
-    // query string
-    ASSERT_TRUE(validateAndSplitUrl("https://foo.com:18080/bar?foobar=1",
-                                    urlProto, host, port, path));
-    EXPECT_EQ(path, "/bar?foobar=1");
+  // query string
+  ASSERT_TRUE(validateAndSplitUrl("https://foo.com:18080/bar?foobar=1",
+                                  urlProto, host, port, path));
+  EXPECT_EQ(path, "/bar?foobar=1");
 
-    // fragment
-    ASSERT_TRUE(validateAndSplitUrl("https://foo.com:18080/bar#frag", urlProto,
-                                    host, port, path));
-    EXPECT_EQ(path, "/bar#frag");
+  // fragment
+  ASSERT_TRUE(validateAndSplitUrl("https://foo.com:18080/bar#frag", urlProto,
+                                  host, port, path));
+  EXPECT_EQ(path, "/bar#frag");
 
-    // Missing port
-    ASSERT_TRUE(
-        validateAndSplitUrl("https://foo.com/bar", urlProto, host, port, path));
-    EXPECT_EQ(port, 443);
+  // Missing port
+  ASSERT_TRUE(
+      validateAndSplitUrl("https://foo.com/bar", urlProto, host, port, path));
+  EXPECT_EQ(port, 443);
 
-    // Missing path defaults to "/"
-    ASSERT_TRUE(
-        validateAndSplitUrl("https://foo.com/", urlProto, host, port, path));
-    EXPECT_EQ(path, "/");
+  // Missing path defaults to "/"
+  ASSERT_TRUE(
+      validateAndSplitUrl("https://foo.com/", urlProto, host, port, path));
+  EXPECT_EQ(path, "/");
 
-    // If http push eventing is allowed, allow http and pick a default port of
-    // 80, if it's not, parse should fail.
-    ASSERT_EQ(
-        validateAndSplitUrl("http://foo.com/bar", urlProto, host, port, path),
-        bmcwebInsecureEnableHttpPushStyleEventing);
-    if constexpr (bmcwebInsecureEnableHttpPushStyleEventing)
-    {
-        EXPECT_EQ(port, 80);
-    }
+  // If http push eventing is allowed, allow http and pick a default port of
+  // 80, if it's not, parse should fail.
+  ASSERT_EQ(
+      validateAndSplitUrl("http://foo.com/bar", urlProto, host, port, path),
+      bmcwebInsecureEnableHttpPushStyleEventing);
+  if constexpr (bmcwebInsecureEnableHttpPushStyleEventing) {
+    EXPECT_EQ(port, 80);
+  }
 }
 
-TEST(Router, ParameterTagging)
-{
-    EXPECT_EQ(6 * 6 + 6 * 3 + 2, getParameterTag("<uint><double><int>"));
-    EXPECT_EQ(1, getParameterTag("<int>"));
-    EXPECT_EQ(2, getParameterTag("<uint>"));
-    EXPECT_EQ(3, getParameterTag("<float>"));
-    EXPECT_EQ(3, getParameterTag("<double>"));
-    EXPECT_EQ(4, getParameterTag("<str>"));
-    EXPECT_EQ(4, getParameterTag("<string>"));
-    EXPECT_EQ(5, getParameterTag("<path>"));
-    EXPECT_EQ(6 * 6 + 6 + 1, getParameterTag("<int><int><int>"));
-    EXPECT_EQ(6 * 6 + 6 + 2, getParameterTag("<uint><int><int>"));
-    EXPECT_EQ(6 * 6 + 6 * 3 + 2, getParameterTag("<uint><double><int>"));
+TEST(Router, ParameterTagging) {
+  EXPECT_EQ(6 * 6 + 6 * 3 + 2, getParameterTag("<uint><double><int>"));
+  EXPECT_EQ(1, getParameterTag("<int>"));
+  EXPECT_EQ(2, getParameterTag("<uint>"));
+  EXPECT_EQ(3, getParameterTag("<float>"));
+  EXPECT_EQ(3, getParameterTag("<double>"));
+  EXPECT_EQ(4, getParameterTag("<str>"));
+  EXPECT_EQ(4, getParameterTag("<string>"));
+  EXPECT_EQ(5, getParameterTag("<path>"));
+  EXPECT_EQ(6 * 6 + 6 + 1, getParameterTag("<int><int><int>"));
+  EXPECT_EQ(6 * 6 + 6 + 2, getParameterTag("<uint><int><int>"));
+  EXPECT_EQ(6 * 6 + 6 * 3 + 2, getParameterTag("<uint><double><int>"));
 }
 
-TEST(URL, JsonEncoding)
-{
-    std::string urlString = "/foo";
-    EXPECT_EQ(nlohmann::json(boost::urls::url(urlString)), urlString);
-    EXPECT_EQ(nlohmann::json(boost::urls::url_view(urlString)), urlString);
+TEST(URL, JsonEncoding) {
+  std::string urlString = "/foo";
+  EXPECT_EQ(nlohmann::json(boost::urls::url(urlString)), urlString);
+  EXPECT_EQ(nlohmann::json(boost::urls::url_view(urlString)), urlString);
 }
 
-TEST(URL, UrlToJsonCorrectlyDecodesPercentEscapeSequences)
-{
-    nlohmann::json json;
-    json["test"] = boost::urls::url("%2F");
-    EXPECT_EQ(json["test"], "/");
+TEST(URL, UrlToJsonCorrectlyDecodesPercentEscapeSequences) {
+  nlohmann::json json;
+  json["test"] = boost::urls::url("%2F");
+  EXPECT_EQ(json["test"], "/");
 }
 
-TEST(URL, UrlViewToJsonCorrectlyDecodesPercentEscapeSequences)
-{
-    nlohmann::json json;
-    json["test"] = boost::urls::url_view("%2F");
-    EXPECT_EQ(json["test"], "/");
+TEST(URL, UrlViewToJsonCorrectlyDecodesPercentEscapeSequences) {
+  nlohmann::json json;
+  json["test"] = boost::urls::url_view("%2F");
+  EXPECT_EQ(json["test"], "/");
 }
 
-TEST(URL, UrlToJsonCorrectlyOutputsFragments)
-{
-    nlohmann::json json;
-    json["test"] = boost::urls::url_view("%2Ftest#%2F");
-    EXPECT_EQ(json["test"], "/test#/");
+TEST(URL, UrlToJsonCorrectlyOutputsFragments) {
+  nlohmann::json json;
+  json["test"] = boost::urls::url_view("%2Ftest#%2F");
+  EXPECT_EQ(json["test"], "/test#/");
 }
 
-TEST(AppendUrlFromPieces, PiecesAreAppendedViaDelimiters)
-{
-    boost::urls::url url = urlFromPieces("redfish", "v1", "foo");
-    EXPECT_EQ(std::string_view(url.data(), url.size()), "/redfish/v1/foo");
+TEST(AppendUrlFromPieces, PiecesAreAppendedViaDelimiters) {
+  boost::urls::url url = urlFromPieces("redfish", "v1", "foo");
+  EXPECT_EQ(std::string_view(url.data(), url.size()), "/redfish/v1/foo");
 
-    appendUrlPieces(url, "bar");
-    EXPECT_EQ(std::string_view(url.data(), url.size()), "/redfish/v1/foo/bar");
+  appendUrlPieces(url, "bar");
+  EXPECT_EQ(std::string_view(url.data(), url.size()), "/redfish/v1/foo/bar");
 
-    appendUrlPieces(url, "/", "bad&tring");
-    EXPECT_EQ(std::string_view(url.data(), url.size()),
-              "/redfish/v1/foo/bar/%2F/bad&tring");
+  appendUrlPieces(url, "/", "bad&tring");
+  EXPECT_EQ(std::string_view(url.data(), url.size()),
+            "/redfish/v1/foo/bar/%2F/bad&tring");
 }
 
-} // namespace
-} // namespace crow::utility
+}  // namespace
+}  // namespace crow::utility