diff --git a/test/Makefile.am b/test/Makefile.am
index 08b5a1c..d10f4ba 100644
--- a/test/Makefile.am
+++ b/test/Makefile.am
@@ -41,6 +41,10 @@
 entity_unittest_SOURCES = entity_unittest.cpp
 entity_unittest_LDADD = $(top_builddir)/libsyscmds_common.la
 
+check_PROGRAMS += machine_unittest
+machine_unittest_SOURCES = machine_unittest.cpp
+machine_unittest_LDADD = $(top_builddir)/libsyscmds_common.la
+
 check_PROGRAMS += pcie_unittest
 pcie_unittest_SOURCES = pcie_unittest.cpp
 pcie_unittest_LDADD = $(top_builddir)/libsyscmds_common.la
diff --git a/test/handler_mock.hpp b/test/handler_mock.hpp
index 1643a1f..f214db8 100644
--- a/test/handler_mock.hpp
+++ b/test/handler_mock.hpp
@@ -27,6 +27,7 @@
                                   std::uint8_t>(unsigned int));
     MOCK_CONST_METHOD1(psuResetDelay, void(std::uint32_t));
     MOCK_METHOD2(getEntityName, std::string(std::uint8_t, std::uint8_t));
+    MOCK_METHOD0(getMachineName, std::string());
     MOCK_METHOD0(buildI2cPcieMapping, void());
     MOCK_CONST_METHOD0(getI2cPcieMappingSize, size_t());
     MOCK_CONST_METHOD1(getI2cEntry,
diff --git a/test/machine_unittest.cpp b/test/machine_unittest.cpp
new file mode 100644
index 0000000..0e50a69
--- /dev/null
+++ b/test/machine_unittest.cpp
@@ -0,0 +1,73 @@
+#include "commands.hpp"
+#include "errors.hpp"
+#include "handler_mock.hpp"
+#include "machine_name.hpp"
+
+#include <cstdint>
+#include <cstring>
+#include <string>
+#include <vector>
+
+#include <gtest/gtest.h>
+
+#define MAX_IPMI_BUFFER 64
+
+using ::testing::Return;
+using ::testing::Throw;
+
+namespace google
+{
+namespace ipmi
+{
+
+TEST(MachineNameCommandTest, InvalidCommandLength)
+{
+    std::vector<std::uint8_t> request = {};
+    size_t dataLen = request.size();
+    std::uint8_t reply[MAX_IPMI_BUFFER];
+
+    ::testing::StrictMock<HandlerMock> hMock;
+
+    EXPECT_EQ(IPMI_CC_REQ_DATA_LEN_INVALID,
+              getMachineName(request.data(), reply, &dataLen, &hMock));
+}
+
+TEST(MachineNameCommandTest, InvalidFile)
+{
+    std::vector<std::uint8_t> request = {SysOEMCommands::SysMachineName};
+    size_t dataLen = request.size();
+    std::uint8_t reply[MAX_IPMI_BUFFER];
+
+    ::testing::StrictMock<HandlerMock> hMock;
+    EXPECT_CALL(hMock, getMachineName()).WillOnce(Throw(IpmiException(5)));
+
+    EXPECT_EQ(5, getMachineName(request.data(), reply, &dataLen, &hMock));
+}
+
+TEST(MachineNameCommandTest, CachesValidRequest)
+{
+    std::vector<std::uint8_t> request = {SysOEMCommands::SysMachineName};
+    size_t dataLen = request.size();
+    std::uint8_t reply[MAX_IPMI_BUFFER];
+    const std::string ret = "Machine";
+
+    ::testing::StrictMock<HandlerMock> hMock;
+    EXPECT_CALL(hMock, getMachineName()).WillOnce(Return(ret));
+
+    EXPECT_EQ(IPMI_CC_OK,
+              getMachineName(request.data(), reply, &dataLen, &hMock));
+    EXPECT_EQ(SysOEMCommands::SysMachineName, reply[0]);
+    EXPECT_EQ(ret.size(), reply[1]);
+    EXPECT_EQ(0, std::memcmp(&reply[2], ret.data(), ret.size()));
+
+    dataLen = request.size();
+    memset(reply, 0, sizeof(reply));
+    EXPECT_EQ(IPMI_CC_OK,
+              getMachineName(request.data(), reply, &dataLen, &hMock));
+    EXPECT_EQ(SysOEMCommands::SysMachineName, reply[0]);
+    EXPECT_EQ(ret.size(), reply[1]);
+    EXPECT_EQ(0, std::memcmp(&reply[2], ret.data(), ret.size()));
+}
+
+} // namespace ipmi
+} // namespace google
