diff --git a/test/http/verb_test.cpp b/test/http/verb_test.cpp
index 76dd8d0..aff6ec7 100644
--- a/test/http/verb_test.cpp
+++ b/test/http/verb_test.cpp
@@ -53,4 +53,4 @@
         HttpVerb httpVerb = static_cast<HttpVerb>(verbIndex);
         EXPECT_EQ(httpVerbToString(httpVerb), verbMap[httpVerb]);
     }
-}
\ No newline at end of file
+}
diff --git a/test/include/dbus_utility_test.cpp b/test/include/dbus_utility_test.cpp
index 71978d0..c6b02c6 100644
--- a/test/include/dbus_utility_test.cpp
+++ b/test/include/dbus_utility_test.cpp
@@ -45,4 +45,4 @@
     EXPECT_FALSE(getNthStringFromPath(path, -1, result));
 }
 } // namespace
-} // namespace dbus::utility
\ No newline at end of file
+} // namespace dbus::utility
diff --git a/test/include/google/google_service_root_test.cpp b/test/include/google/google_service_root_test.cpp
index 32d4e52..b4a476b 100644
--- a/test/include/google/google_service_root_test.cpp
+++ b/test/include/google/google_service_root_test.cpp
@@ -36,4 +36,4 @@
 }
 
 } // namespace
-} // namespace crow::google_api
\ No newline at end of file
+} // namespace crow::google_api
diff --git a/test/include/human_sort_test.cpp b/test/include/human_sort_test.cpp
index be21a19..78d2d22 100644
--- a/test/include/human_sort_test.cpp
+++ b/test/include/human_sort_test.cpp
@@ -55,4 +55,4 @@
                                                             "Alpha 2"};
     EXPECT_THAT(sorted, ElementsAreArray({"Alpha 2", "Alpha 10"}));
 }
-} // namespace
\ No newline at end of file
+} // namespace
diff --git a/test/redfish-core/include/privileges_test.cpp b/test/redfish-core/include/privileges_test.cpp
index 2d0da02..b7f7cbc 100644
--- a/test/redfish-core/include/privileges_test.cpp
+++ b/test/redfish-core/include/privileges_test.cpp
@@ -60,8 +60,8 @@
 
 TEST(PrivilegeTest, PrivilegeCheckForANDCaseSuccess)
 {
-    auto userPrivileges =
-        Privileges{"Login", "ConfigureManager", "ConfigureSelf"};
+    auto userPrivileges = Privileges{"Login", "ConfigureManager",
+                                     "ConfigureSelf"};
     OperationMap entityPrivileges{
         {boost::beast::http::verb::get,
          {{"Login", "ConfigureManager", "ConfigureSelf"}}}};
@@ -135,4 +135,4 @@
                              expectedPrivileges[4]));
 }
 } // namespace
-} // namespace redfish
\ No newline at end of file
+} // namespace redfish
diff --git a/test/redfish-core/include/redfish_aggregator_test.cpp b/test/redfish-core/include/redfish_aggregator_test.cpp
index 2d19cee..055d137 100644
--- a/test/redfish-core/include/redfish_aggregator_test.cpp
+++ b/test/redfish-core/include/redfish_aggregator_test.cpp
@@ -248,8 +248,8 @@
     jsonResp["Name"] = "Test";
 
     crow::Response resp;
-    resp.body() =
-        jsonResp.dump(2, ' ', true, nlohmann::json::error_handler_t::replace);
+    resp.body() = jsonResp.dump(2, ' ', true,
+                                nlohmann::json::error_handler_t::replace);
     resp.addHeader("Content-Type", "application/json");
     resp.addHeader("Allow", "GET");
     resp.addHeader("Location", "/redfish/v1/Chassis/TestChassis");
@@ -658,8 +658,8 @@
     jsonValue["Test"]["@odata.id"] = "/redfish/v1/Test";
     jsonValue["TelemetryService"]["@odata.id"] = "/redfish/v1/TelemetryService";
     jsonValue["UpdateService"]["@odata.id"] = "/redfish/v1/UpdateService";
-    resp.body() =
-        jsonValue.dump(2, ' ', true, nlohmann::json::error_handler_t::replace);
+    resp.body() = jsonValue.dump(2, ' ', true,
+                                 nlohmann::json::error_handler_t::replace);
 
     auto asyncResp = std::make_shared<bmcweb::AsyncResp>();
     asyncResp->res.result(200);
@@ -701,8 +701,8 @@
     jsonValue["Test"]["@odata.id"] = "/redfish/v1/Test";
     jsonValue["TelemetryService"]["@odata.id"] = "/redfish/v1/TelemetryService";
     jsonValue["UpdateService"]["@odata.id"] = "/redfish/v1/UpdateService";
-    resp.body() =
-        jsonValue.dump(2, ' ', true, nlohmann::json::error_handler_t::replace);
+    resp.body() = jsonValue.dump(2, ' ', true,
+                                 nlohmann::json::error_handler_t::replace);
 
     RedfishAggregator::processContainsSubordinateResponse("prefix", asyncResp,
                                                           resp);
@@ -769,8 +769,8 @@
     nlohmann::json jsonValue;
     resp.addHeader("Content-Type", "application/json");
     jsonValue["@odata.id"] = "/redfish/v1";
-    resp.body() =
-        jsonValue.dump(2, ' ', true, nlohmann::json::error_handler_t::replace);
+    resp.body() = jsonValue.dump(2, ' ', true,
+                                 nlohmann::json::error_handler_t::replace);
 
     RedfishAggregator::processContainsSubordinateResponse("prefix", asyncResp,
                                                           resp);
@@ -788,8 +788,8 @@
     jsonValue["Test"]["@odata.id"] = "/redfish/v1/Test";
     jsonValue["TelemetryService"]["@odata.id"] = "/redfish/v1/TelemetryService";
     jsonValue["UpdateService"]["@odata.id"] = "/redfish/v1/UpdateService";
-    resp.body() =
-        jsonValue.dump(2, ' ', true, nlohmann::json::error_handler_t::replace);
+    resp.body() = jsonValue.dump(2, ' ', true,
+                                 nlohmann::json::error_handler_t::replace);
 
     RedfishAggregator::processContainsSubordinateResponse("prefix", asyncResp,
                                                           resp);
diff --git a/test/redfish-core/include/utils/hex_utils_test.cpp b/test/redfish-core/include/utils/hex_utils_test.cpp
index 8fd4638..d96e4d4 100644
--- a/test/redfish-core/include/utils/hex_utils_test.cpp
+++ b/test/redfish-core/include/utils/hex_utils_test.cpp
@@ -80,4 +80,4 @@
     EXPECT_THAT(hexStringToBytes("012"), IsEmpty());
 }
 
-} // namespace
\ No newline at end of file
+} // namespace
diff --git a/test/redfish-core/include/utils/query_param_test.cpp b/test/redfish-core/include/utils/query_param_test.cpp
index d049314..8c75241 100644
--- a/test/redfish-core/include/utils/query_param_test.cpp
+++ b/test/redfish-core/include/utils/query_param_test.cpp
@@ -232,7 +232,7 @@
 SelectTrie getTrie(std::span<std::string_view> properties)
 {
     SelectTrie trie;
-    for (auto const& property : properties)
+    for (const auto& property : properties)
     {
         EXPECT_TRUE(trie.insertNode(property));
     }
diff --git a/test/redfish-core/lib/chassis_test.cpp b/test/redfish-core/lib/chassis_test.cpp
index a043859..8f18163 100644
--- a/test/redfish-core/lib/chassis_test.cpp
+++ b/test/redfish-core/lib/chassis_test.cpp
@@ -42,7 +42,6 @@
 
 TEST(HandleChassisResetActionInfoGet, StaticAttributesAreExpected)
 {
-
     auto response = std::make_shared<bmcweb::AsyncResp>();
     std::error_code err;
     crow::Request request{{boost::beast::http::verb::get, "/whatever", 11},
@@ -57,4 +56,4 @@
 }
 
 } // namespace
-} // namespace redfish
\ No newline at end of file
+} // namespace redfish
