diff --git a/test/Makefile.am b/test/Makefile.am
index fea204b..90e42e1 100644
--- a/test/Makefile.am
+++ b/test/Makefile.am
@@ -22,3 +22,7 @@
 check_PROGRAMS += eth_unittest
 eth_unittest_SOURCES = eth_unittest.cpp
 eth_unittest_LDADD = $(top_builddir)/libsyscmds_common.la
+
+check_PROGRAMS += cable_unittest
+cable_unittest_SOURCES = cable_unittest.cpp
+cable_unittest_LDADD = $(top_builddir)/libsyscmds_common.la
diff --git a/test/cable_unittest.cpp b/test/cable_unittest.cpp
new file mode 100644
index 0000000..ed45c1b
--- /dev/null
+++ b/test/cable_unittest.cpp
@@ -0,0 +1,89 @@
+#include "cable.hpp"
+#include "handler_mock.hpp"
+#include "main.hpp"
+
+#include <cstdint>
+#include <cstring>
+#include <vector>
+
+#include <gtest/gtest.h>
+
+#define MAX_IPMI_BUFFER 64
+
+using ::testing::Return;
+using ::testing::StrEq;
+
+namespace google
+{
+namespace ipmi
+{
+
+TEST(CableCommandTest, RequestTooSmall)
+{
+    std::vector<std::uint8_t> request = {SysOEMCommands::SysCableCheck};
+    size_t dataLen = request.size();
+    std::uint8_t reply[MAX_IPMI_BUFFER];
+
+    HandlerMock hMock;
+
+    EXPECT_EQ(IPMI_CC_REQ_DATA_LEN_INVALID,
+              CableCheck(request.data(), reply, &dataLen, &hMock));
+}
+
+TEST(CableCommandTest, FailsLengthSanityCheck)
+{
+    // Minimum is three bytes, but a length of zero for the string is invalid.
+    std::vector<std::uint8_t> request = {SysOEMCommands::SysCableCheck, 0x00,
+                                         'a'};
+
+    size_t dataLen = request.size();
+    std::uint8_t reply[MAX_IPMI_BUFFER];
+
+    HandlerMock hMock;
+
+    EXPECT_EQ(IPMI_CC_REQ_DATA_LEN_INVALID,
+              CableCheck(request.data(), reply, &dataLen, &hMock));
+}
+
+TEST(CableCommandTest, LengthTooLongForPacket)
+{
+    // The length of a the string, as specified is longer than string provided.
+    std::vector<std::uint8_t> request = {SysOEMCommands::SysCableCheck, 0x02,
+                                         'a'};
+
+    size_t dataLen = request.size();
+    std::uint8_t reply[MAX_IPMI_BUFFER];
+
+    HandlerMock hMock;
+
+    EXPECT_EQ(IPMI_CC_REQ_DATA_LEN_INVALID,
+              CableCheck(request.data(), reply, &dataLen, &hMock));
+}
+
+TEST(CableCommandTest, ValidRequestValidReturn)
+{
+    std::vector<std::uint8_t> request = {SysOEMCommands::SysCableCheck, 0x01,
+                                         'a'};
+
+    size_t dataLen = request.size();
+    std::uint8_t reply[MAX_IPMI_BUFFER];
+
+    HandlerMock hMock;
+
+    EXPECT_CALL(hMock, getRxPackets(StrEq("a"))).WillOnce(Return(0));
+    EXPECT_EQ(IPMI_CC_OK, CableCheck(request.data(), reply, &dataLen, &hMock));
+
+    // Check results.
+    struct CableReply expectedReply, actualReply;
+    expectedReply.subcommand = SysOEMCommands::SysCableCheck;
+    expectedReply.value = 0;
+
+    EXPECT_EQ(sizeof(expectedReply), dataLen);
+    std::memcpy(&actualReply, reply, dataLen);
+
+    EXPECT_EQ(expectedReply.subcommand, actualReply.subcommand);
+    EXPECT_EQ(expectedReply.value, actualReply.value);
+}
+
+} // namespace ipmi
+} // namespace google
diff --git a/test/handler_mock.hpp b/test/handler_mock.hpp
index 8507f50..a99f131 100644
--- a/test/handler_mock.hpp
+++ b/test/handler_mock.hpp
@@ -16,6 +16,7 @@
     ~HandlerMock() = default;
 
     MOCK_CONST_METHOD0(getEthDetails, std::tuple<std::uint8_t, std::string>());
+    MOCK_CONST_METHOD1(getRxPackets, std::int64_t(const std::string&));
 };
 
 } // namespace ipmi
diff --git a/test/handler_unittest.cpp b/test/handler_unittest.cpp
index 05edc0a..c1f4093 100644
--- a/test/handler_unittest.cpp
+++ b/test/handler_unittest.cpp
@@ -1,3 +1,4 @@
+#include "errors.hpp"
 #include "handler.hpp"
 
 #include <string>
@@ -20,6 +21,12 @@
     EXPECT_STREQ("eth0", std::get<1>(result).c_str());
 }
 
+TEST(HandlerTest, CableCheckIllegalPath)
+{
+    Handler h;
+    EXPECT_THROW(h.getRxPackets("eth0/../../"), IpmiException);
+}
+
 // TODO: Add checks for other functions of handler.
 
 } // namespace ipmi
