diff --git a/test/eth_unittest.cpp b/test/eth_unittest.cpp
index 1053d4b..9807c91 100644
--- a/test/eth_unittest.cpp
+++ b/test/eth_unittest.cpp
@@ -27,10 +27,10 @@
     size_t dataLen = request.size();
     std::uint8_t reply[MAX_IPMI_BUFFER];
     const std::uint8_t expectedAnswer[4] = {'e', 't', 'h', '0'};
-    const std::uint8_t expectedChannel = 1;
+    const std::uint8_t expectedChannel = 14;
 
     HandlerMock hMock;
-    EXPECT_CALL(hMock, getEthDetails())
+    EXPECT_CALL(hMock, getEthDetails(""))
         .WillOnce(Return(std::make_tuple(
             expectedChannel,
             std::string(expectedAnswer,
@@ -47,5 +47,30 @@
                              sizeof(expectedAnswer)));
 }
 
+TEST(EthCommandTest, ValidPopulatedReturnsSuccess)
+{
+    std::vector<std::uint8_t> request = {SysOEMCommands::SysGetEthDevice, 'e'};
+    size_t dataLen = request.size();
+    std::uint8_t reply[MAX_IPMI_BUFFER];
+    const std::uint8_t expectedAnswer[1] = {'e'};
+    const std::uint8_t expectedChannel = 11;
+
+    HandlerMock hMock;
+    EXPECT_CALL(hMock, getEthDetails("e"))
+        .WillOnce(Return(std::make_tuple(
+            expectedChannel,
+            std::string(expectedAnswer,
+                        expectedAnswer + sizeof(expectedAnswer)))));
+
+    EXPECT_EQ(IPMI_CC_OK,
+              getEthDevice(request.data(), &reply[0], &dataLen, &hMock));
+    struct EthDeviceReply check;
+    std::memcpy(&check, &reply[0], sizeof(check));
+    EXPECT_EQ(check.subcommand, SysOEMCommands::SysGetEthDevice);
+    EXPECT_EQ(check.channel, expectedChannel);
+    EXPECT_EQ(check.ifNameLength, sizeof(expectedAnswer));
+    EXPECT_EQ(0, std::memcmp(expectedAnswer, &reply[sizeof(check)],
+                             sizeof(expectedAnswer)));
+}
 } // namespace ipmi
 } // namespace google
