diff --git a/bmc/firmware-handler/test/firmware_close_unittest.cpp b/bmc/firmware-handler/test/firmware_close_unittest.cpp
index 2a722b6..04aec22 100644
--- a/bmc/firmware-handler/test/firmware_close_unittest.cpp
+++ b/bmc/firmware-handler/test/firmware_close_unittest.cpp
@@ -31,9 +31,11 @@
     EXPECT_CALL(*hashImageMock, open(StrEq(hashBlobId), std::ios::out))
         .WillOnce(Return(true));
 
-    EXPECT_TRUE(handler->open(
-        0, blobs::OpenFlags::write | FirmwareFlags::UpdateFlags::lpc,
-        hashBlobId));
+    EXPECT_TRUE(
+        handler->open(0,
+                      static_cast<std::uint16_t>(blobs::OpenFlags::write) |
+                          FirmwareFlags::UpdateFlags::lpc,
+                      hashBlobId));
 
     /* The active hash blob_id was added. */
     auto currentBlobs = handler->getBlobIds();
@@ -59,9 +61,11 @@
     EXPECT_CALL(*hashImageMock, open(StrEq(hashBlobId), std::ios::out))
         .WillOnce(Return(true));
 
-    EXPECT_TRUE(handler->open(
-        0, blobs::OpenFlags::write | FirmwareFlags::UpdateFlags::ipmi,
-        hashBlobId));
+    EXPECT_TRUE(
+        handler->open(0,
+                      static_cast<std::uint16_t>(blobs::OpenFlags::write) |
+                          FirmwareFlags::UpdateFlags::ipmi,
+                      hashBlobId));
 
     /* The active hash blob_id was added. */
     auto currentBlobs = handler->getBlobIds();
diff --git a/bmc/firmware-handler/test/firmware_commit_unittest.cpp b/bmc/firmware-handler/test/firmware_commit_unittest.cpp
index 8d6bfe2..7eaf718 100644
--- a/bmc/firmware-handler/test/firmware_commit_unittest.cpp
+++ b/bmc/firmware-handler/test/firmware_commit_unittest.cpp
@@ -51,8 +51,11 @@
     EXPECT_CALL(*imageMock2, open("asdf", std::ios::out))
         .WillOnce(Return(true));
 
-    EXPECT_TRUE(handler->open(
-        0, blobs::OpenFlags::write | FirmwareFlags::UpdateFlags::ipmi, "asdf"));
+    EXPECT_TRUE(
+        handler->open(0,
+                      static_cast<std::uint16_t>(blobs::OpenFlags::write) |
+                          FirmwareFlags::UpdateFlags::ipmi,
+                      "asdf"));
 
     EXPECT_FALSE(handler->commit(0, {}));
 }
@@ -68,9 +71,11 @@
     EXPECT_CALL(*imageMock1, open(StrEq(hashBlobId), std::ios::out))
         .WillOnce(Return(true));
 
-    EXPECT_TRUE(handler->open(
-        0, blobs::OpenFlags::write | FirmwareFlags::UpdateFlags::ipmi,
-        hashBlobId));
+    EXPECT_TRUE(
+        handler->open(0,
+                      static_cast<std::uint16_t>(blobs::OpenFlags::write) |
+                          FirmwareFlags::UpdateFlags::ipmi,
+                      hashBlobId));
 
     EXPECT_FALSE(handler->commit(0, {}));
 }
diff --git a/bmc/firmware-handler/test/firmware_json_unittest.cpp b/bmc/firmware-handler/test/firmware_json_unittest.cpp
index 9e562c6..4dde694 100644
--- a/bmc/firmware-handler/test/firmware_json_unittest.cpp
+++ b/bmc/firmware-handler/test/firmware_json_unittest.cpp
@@ -4,6 +4,8 @@
 
 #include <nlohmann/json.hpp>
 
+#include <filesystem>
+
 #include <gmock/gmock.h>
 #include <gtest/gtest.h>
 
@@ -13,7 +15,7 @@
 {
 using ::testing::IsEmpty;
 
-static constexpr auto TESTFNAME = "test.json";
+static constexpr auto TESTFNAME = "./test/test.json";
 using json = nlohmann::json;
 TEST(FirmwareJsonTest, InvalidHandlerType)
 {
@@ -617,6 +619,7 @@
 
 TEST(FirmwareJsonTest, BuildFromFile)
 {
+    std::filesystem::create_directories("./test/");
     std::ofstream testfile;
     testfile.open(TESTFNAME, std::ios::out);
     auto good = R"(
@@ -642,7 +645,7 @@
     testfile << good.dump(4);
     testfile.flush();
     FirmwareHandlersBuilder b;
-    auto h = b.buildHandlerConfigs("./");
+    auto h = b.buildHandlerConfigs("./test/");
     EXPECT_EQ(h.size(), 1);
     EXPECT_EQ(h[0].blobId, "/flash/image");
     EXPECT_FALSE(h[0].handler == nullptr);
@@ -658,12 +661,13 @@
 
 TEST(FirmwareJsonTest, BuildFromBadFile)
 {
+    std::filesystem::create_directories("./test/");
     std::ofstream testfile;
     testfile.open(TESTFNAME, std::ios::out);
     testfile << "{] a malformed json {{";
     testfile.flush();
     FirmwareHandlersBuilder b;
-    auto h = b.buildHandlerConfigs("./");
+    auto h = b.buildHandlerConfigs("./test/");
     EXPECT_THAT(h, IsEmpty());
     if (std::remove(TESTFNAME) != 0)
     {
diff --git a/bmc/firmware-handler/test/firmware_multiplebundle_unittest.cpp b/bmc/firmware-handler/test/firmware_multiplebundle_unittest.cpp
index 58f07c7..0a032e8 100644
--- a/bmc/firmware-handler/test/firmware_multiplebundle_unittest.cpp
+++ b/bmc/firmware-handler/test/firmware_multiplebundle_unittest.cpp
@@ -109,8 +109,8 @@
     TriggerMock *biosPrepareMockPtr, *biosVerifyMockPtr, *biosUpdateMockPtr;
 
     std::uint16_t session = 1;
-    std::uint16_t flags =
-        blobs::OpenFlags::write | FirmwareFlags::UpdateFlags::ipmi;
+    std::uint16_t flags = static_cast<std::uint16_t>(blobs::OpenFlags::write) |
+                          FirmwareFlags::UpdateFlags::ipmi;
 };
 
 TEST_F(IpmiOnlyTwoFirmwaresTest, OpeningBiosAfterBlobFails)
diff --git a/bmc/firmware-handler/test/firmware_open_unittest.cpp b/bmc/firmware-handler/test/firmware_open_unittest.cpp
index 2d54c41..19376a3 100644
--- a/bmc/firmware-handler/test/firmware_open_unittest.cpp
+++ b/bmc/firmware-handler/test/firmware_open_unittest.cpp
@@ -42,14 +42,14 @@
     0b101 << 8,
     0b011 << 8,
     /* Next 1 doesn't specify any transport */
-    blobs::OpenFlags::write | 0b000 << 8,
+    static_cast<std::uint16_t>(blobs::OpenFlags::write) | 0b000 << 8,
     /* Next 3 specify 2 reserved transport bits at the same time. This isn't
      * allowed because older code expects these first 3 bits to be mutually
      * exclusive.
      */
-    blobs::OpenFlags::write | 0b110 << 8,
-    blobs::OpenFlags::write | 0b101 << 8,
-    blobs::OpenFlags::write | 0b011 << 8,
+    static_cast<std::uint16_t>(blobs::OpenFlags::write) | 0b110 << 8,
+    static_cast<std::uint16_t>(blobs::OpenFlags::write) | 0b101 << 8,
+    static_cast<std::uint16_t>(blobs::OpenFlags::write) | 0b011 << 8,
 };
 
 INSTANTIATE_TEST_CASE_P(WithFlags, FirmwareOpenFailTest,
diff --git a/bmc/firmware-handler/test/firmware_sessionstat_unittest.cpp b/bmc/firmware-handler/test/firmware_sessionstat_unittest.cpp
index 3753118..6f5aeee 100644
--- a/bmc/firmware-handler/test/firmware_sessionstat_unittest.cpp
+++ b/bmc/firmware-handler/test/firmware_sessionstat_unittest.cpp
@@ -27,8 +27,11 @@
      */
     EXPECT_CALL(*imageMock, open("asdf", std::ios::out)).WillOnce(Return(true));
 
-    EXPECT_TRUE(handler->open(
-        0, blobs::OpenFlags::write | FirmwareFlags::UpdateFlags::ipmi, "asdf"));
+    EXPECT_TRUE(
+        handler->open(0,
+                      static_cast<std::uint16_t>(blobs::OpenFlags::write) |
+                          FirmwareFlags::UpdateFlags::ipmi,
+                      "asdf"));
 
     int size = 512;
     EXPECT_CALL(*imageMock, getSize()).WillOnce(Return(size));
@@ -36,7 +39,8 @@
     blobs::BlobMeta meta;
     EXPECT_TRUE(handler->stat(0, &meta));
     EXPECT_EQ(meta.blobState,
-              blobs::OpenFlags::write | FirmwareFlags::UpdateFlags::ipmi);
+              static_cast<std::uint16_t>(blobs::OpenFlags::write) |
+                  FirmwareFlags::UpdateFlags::ipmi);
     EXPECT_EQ(meta.size, size);
     EXPECT_EQ(meta.metadata.size(), 0);
 }
@@ -50,8 +54,11 @@
     EXPECT_CALL(*dataMock, open()).WillOnce(Return(true));
     EXPECT_CALL(*imageMock, open("asdf", std::ios::out)).WillOnce(Return(true));
 
-    EXPECT_TRUE(handler->open(
-        0, blobs::OpenFlags::write | FirmwareFlags::UpdateFlags::lpc, "asdf"));
+    EXPECT_TRUE(
+        handler->open(0,
+                      static_cast<std::uint16_t>(blobs::OpenFlags::write) |
+                          FirmwareFlags::UpdateFlags::lpc,
+                      "asdf"));
 
     int size = 512;
     EXPECT_CALL(*imageMock, getSize()).WillOnce(Return(size));
@@ -61,7 +68,8 @@
     blobs::BlobMeta meta;
     EXPECT_TRUE(handler->stat(0, &meta));
     EXPECT_EQ(meta.blobState,
-              blobs::OpenFlags::write | FirmwareFlags::UpdateFlags::lpc);
+              static_cast<std::uint16_t>(blobs::OpenFlags::write) |
+                  FirmwareFlags::UpdateFlags::lpc);
     EXPECT_EQ(meta.size, size);
     EXPECT_EQ(meta.metadata.size(), mBytes.size());
     EXPECT_EQ(meta.metadata[0], mBytes[0]);
diff --git a/bmc/firmware-handler/test/firmware_state_notyetstarted_tarball_unittest.cpp b/bmc/firmware-handler/test/firmware_state_notyetstarted_tarball_unittest.cpp
index 6a39d9d..a7875fa 100644
--- a/bmc/firmware-handler/test/firmware_state_notyetstarted_tarball_unittest.cpp
+++ b/bmc/firmware-handler/test/firmware_state_notyetstarted_tarball_unittest.cpp
@@ -84,8 +84,8 @@
     TriggerMock* updateMockPtr;
 
     std::uint16_t session = 1;
-    std::uint16_t flags =
-        blobs::OpenFlags::write | FirmwareFlags::UpdateFlags::ipmi;
+    std::uint16_t flags = static_cast<std::uint16_t>(blobs::OpenFlags::write) |
+                          FirmwareFlags::UpdateFlags::ipmi;
 };
 
 TEST_F(FirmwareHandlerNotYetStartedUbitTest,
diff --git a/bmc/firmware-handler/test/firmware_state_uploadinprogress_unittest.cpp b/bmc/firmware-handler/test/firmware_state_uploadinprogress_unittest.cpp
index c1a27fe..65c368c 100644
--- a/bmc/firmware-handler/test/firmware_state_uploadinprogress_unittest.cpp
+++ b/bmc/firmware-handler/test/firmware_state_uploadinprogress_unittest.cpp
@@ -122,7 +122,8 @@
     blobs::BlobMeta meta, expectedMeta = {};
     expectedMeta.size = 32;
     expectedMeta.blobState =
-        blobs::OpenFlags::write | FirmwareFlags::UpdateFlags::ipmi;
+        static_cast<std::uint16_t>(blobs::OpenFlags::write) |
+        FirmwareFlags::UpdateFlags::ipmi;
     EXPECT_TRUE(handler->stat(session, &meta));
     EXPECT_EQ(expectedMeta, meta);
 }
diff --git a/bmc/firmware-handler/test/firmware_unittest.hpp b/bmc/firmware-handler/test/firmware_unittest.hpp
index 0d18bda..53fb58c 100644
--- a/bmc/firmware-handler/test/firmware_unittest.hpp
+++ b/bmc/firmware-handler/test/firmware_unittest.hpp
@@ -188,8 +188,8 @@
     TriggerMock* updateMockPtr;
 
     std::uint16_t session = 1;
-    std::uint16_t flags =
-        blobs::OpenFlags::write | FirmwareFlags::UpdateFlags::ipmi;
+    std::uint16_t flags = static_cast<std::uint16_t>(blobs::OpenFlags::write) |
+                          FirmwareFlags::UpdateFlags::ipmi;
 
     blobs::BlobMeta expectedIdleMeta = {0xff00, 0, {}};
 
diff --git a/bmc/firmware-handler/test/firmware_write_unittest.cpp b/bmc/firmware-handler/test/firmware_write_unittest.cpp
index 27899db..da1a371 100644
--- a/bmc/firmware-handler/test/firmware_write_unittest.cpp
+++ b/bmc/firmware-handler/test/firmware_write_unittest.cpp
@@ -31,8 +31,11 @@
     /* Verify if data type ipmi, it calls write with the bytes. */
     EXPECT_CALL(*imageMock, open("asdf", std::ios::out)).WillOnce(Return(true));
 
-    EXPECT_TRUE(handler->open(
-        0, blobs::OpenFlags::write | FirmwareFlags::UpdateFlags::ipmi, "asdf"));
+    EXPECT_TRUE(
+        handler->open(0,
+                      static_cast<std::uint16_t>(blobs::OpenFlags::write) |
+                          FirmwareFlags::UpdateFlags::ipmi,
+                      "asdf"));
 
     std::vector<std::uint8_t> bytes = {0xaa, 0x55};
 
@@ -46,8 +49,11 @@
     EXPECT_CALL(*dataMock, open()).WillOnce(Return(true));
     EXPECT_CALL(*imageMock, open("asdf", std::ios::out)).WillOnce(Return(true));
 
-    EXPECT_TRUE(handler->open(
-        0, blobs::OpenFlags::write | FirmwareFlags::UpdateFlags::lpc, "asdf"));
+    EXPECT_TRUE(
+        handler->open(0,
+                      static_cast<std::uint16_t>(blobs::OpenFlags::write) |
+                          FirmwareFlags::UpdateFlags::lpc,
+                      "asdf"));
 
     struct ExtChunkHdr request;
     request.length = 4; /* number of bytes to read. */
@@ -69,8 +75,11 @@
     EXPECT_CALL(*dataMock, open()).WillOnce(Return(true));
     EXPECT_CALL(*imageMock, open("asdf", std::ios::out)).WillOnce(Return(true));
 
-    EXPECT_TRUE(handler->open(
-        0, blobs::OpenFlags::write | FirmwareFlags::UpdateFlags::lpc, "asdf"));
+    EXPECT_TRUE(
+        handler->open(0,
+                      static_cast<std::uint16_t>(blobs::OpenFlags::write) |
+                          FirmwareFlags::UpdateFlags::lpc,
+                      "asdf"));
 
     struct ExtChunkHdr request;
     request.length = 4; /* number of bytes to read. */
diff --git a/bmc/firmware-handler/test/firmware_writemeta_unittest.cpp b/bmc/firmware-handler/test/firmware_writemeta_unittest.cpp
index 3d86c0c..bdcc68b 100644
--- a/bmc/firmware-handler/test/firmware_writemeta_unittest.cpp
+++ b/bmc/firmware-handler/test/firmware_writemeta_unittest.cpp
@@ -25,8 +25,11 @@
 {
     EXPECT_CALL(*imageMock, open("asdf", std::ios::out)).WillOnce(Return(true));
 
-    EXPECT_TRUE(handler->open(
-        0, blobs::OpenFlags::write | FirmwareFlags::UpdateFlags::ipmi, "asdf"));
+    EXPECT_TRUE(
+        handler->open(0,
+                      static_cast<std::uint16_t>(blobs::OpenFlags::write) |
+                          FirmwareFlags::UpdateFlags::ipmi,
+                      "asdf"));
 
     std::vector<std::uint8_t> bytes = {0xaa, 0x55};
 
@@ -38,8 +41,11 @@
     EXPECT_CALL(*dataMock, open()).WillOnce(Return(true));
     EXPECT_CALL(*imageMock, open("asdf", std::ios::out)).WillOnce(Return(true));
 
-    EXPECT_TRUE(handler->open(
-        0, blobs::OpenFlags::write | FirmwareFlags::UpdateFlags::lpc, "asdf"));
+    EXPECT_TRUE(
+        handler->open(0,
+                      static_cast<std::uint16_t>(blobs::OpenFlags::write) |
+                          FirmwareFlags::UpdateFlags::lpc,
+                      "asdf"));
 
     std::vector<std::uint8_t> bytes = {0x01, 0x02, 0x03, 0x04};
 
