diff --git a/tests/dsp/file.cpp b/tests/dsp/file.cpp
index 50d6bca..93ba847 100644
--- a/tests/dsp/file.cpp
+++ b/tests/dsp/file.cpp
@@ -286,3 +286,158 @@
     EXPECT_EQ(rc, -EINVAL);
 }
 #endif
+
+#ifdef LIBPLDM_API_TESTING
+TEST(EncodeDfHeartbeatReq, GoodTest)
+{
+    uint8_t instance_id = 0;
+    uint16_t file_descriptor = 0x0200;
+    uint32_t requester_max_interval = 0x88130000; // 5000 ms
+    std::array<uint8_t, PLDM_DF_HEARTBEAT_REQ_BYTES> requestMsg = {
+        0x00, 0x02, 0x00, 0x00, 0x13, 0x88};
+
+    const struct pldm_file_df_heartbeat_req req_data = {file_descriptor,
+                                                        requester_max_interval};
+
+    PLDM_MSG_DEFINE_P(requestPtr, PLDM_DF_HEARTBEAT_REQ_BYTES);
+    auto rc = encode_pldm_file_df_heartbeat_req(
+        instance_id, &req_data, requestPtr, PLDM_DF_HEARTBEAT_REQ_BYTES);
+
+    ASSERT_EQ(rc, 0);
+    EXPECT_EQ(
+        0, memcmp(requestPtr->payload, requestMsg.data(), sizeof(requestMsg)));
+}
+#endif
+
+#ifdef LIBPLDM_API_TESTING
+TEST(EncodeDfHeartbeatReq, BadTestUnAllocatedPtrParams)
+{
+    uint8_t instance_id = 0;
+    uint16_t file_descriptor = 0x0200;
+    uint32_t requester_max_interval = 0x88130000; // 5000 ms
+    int rc;
+
+    const struct pldm_file_df_heartbeat_req req_data = {file_descriptor,
+                                                        requester_max_interval};
+
+    PLDM_MSG_DEFINE_P(requestPtr, PLDM_DF_HEARTBEAT_REQ_BYTES);
+    rc = encode_pldm_file_df_heartbeat_req(instance_id, &req_data, nullptr,
+                                           PLDM_DF_HEARTBEAT_REQ_BYTES);
+    EXPECT_EQ(rc, -EINVAL);
+
+    rc = encode_pldm_file_df_heartbeat_req(instance_id, nullptr, requestPtr,
+                                           PLDM_DF_HEARTBEAT_REQ_BYTES);
+    EXPECT_EQ(rc, -EINVAL);
+}
+#endif
+
+#ifdef LIBPLDM_API_TESTING
+TEST(EncodeDfHeartbeatReq, BadTestInvalidExpectedOutputMsgLength)
+{
+    uint8_t instance_id = 0;
+    uint16_t file_descriptor = 0x0200;
+    uint32_t requester_max_interval = 0x88130000; // 5000 ms
+    int rc;
+
+    const struct pldm_file_df_heartbeat_req req_data = {file_descriptor,
+                                                        requester_max_interval};
+
+    PLDM_MSG_DEFINE_P(requestPtr, PLDM_DF_HEARTBEAT_REQ_BYTES);
+    rc = encode_pldm_file_df_heartbeat_req(instance_id, &req_data, requestPtr,
+                                           1);
+    EXPECT_EQ(rc, -EOVERFLOW);
+}
+#endif
+
+#ifdef LIBPLDM_API_TESTING
+TEST(DecodeDfHeartbeatResp, GoodTest)
+{
+    uint8_t completion_code = PLDM_SUCCESS;
+    uint32_t responder_max_interval = 0xa00f0000; // 4000 ms
+
+    struct pldm_file_df_heartbeat_resp resp_data = {};
+
+    PLDM_MSGBUF_DEFINE_P(buf);
+    int rc;
+
+    static constexpr const size_t payload_length = PLDM_DF_HEARTBEAT_RESP_BYTES;
+
+    PLDM_MSG_DEFINE_P(responseMsg, payload_length);
+
+    rc = pldm_msgbuf_init_errno(buf, 0, responseMsg->payload, payload_length);
+    ASSERT_EQ(rc, 0);
+
+    pldm_msgbuf_insert_uint8(buf, completion_code);
+    pldm_msgbuf_insert_uint32(buf, responder_max_interval);
+
+    ASSERT_EQ(pldm_msgbuf_complete_consumed(buf), 0);
+
+    rc = decode_pldm_file_df_heartbeat_resp(responseMsg, payload_length,
+                                            &resp_data);
+
+    ASSERT_EQ(rc, 0);
+    EXPECT_EQ(resp_data.completion_code, completion_code);
+    EXPECT_EQ(resp_data.responder_max_interval, responder_max_interval);
+}
+#endif
+
+#ifdef LIBPLDM_API_TESTING
+TEST(DecodeDfHeartbeatResp, BadTestUnAllocatedPtrParams)
+{
+    uint8_t completion_code = PLDM_SUCCESS;
+    uint32_t responder_max_interval = 0xa00f0000; // 4000 ms
+
+    struct pldm_file_df_heartbeat_resp resp_data = {};
+
+    PLDM_MSGBUF_DEFINE_P(buf);
+    int rc;
+
+    static constexpr const size_t payload_length = PLDM_DF_HEARTBEAT_RESP_BYTES;
+
+    PLDM_MSG_DEFINE_P(responseMsg, payload_length);
+
+    rc = pldm_msgbuf_init_errno(buf, 0, responseMsg->payload, payload_length);
+    ASSERT_EQ(rc, 0);
+
+    pldm_msgbuf_insert_uint8(buf, completion_code);
+    pldm_msgbuf_insert_uint32(buf, responder_max_interval);
+
+    ASSERT_EQ(pldm_msgbuf_complete_consumed(buf), 0);
+
+    rc =
+        decode_pldm_file_df_heartbeat_resp(nullptr, payload_length, &resp_data);
+    EXPECT_EQ(rc, -EINVAL);
+
+    rc = decode_pldm_file_df_heartbeat_resp(responseMsg, payload_length,
+                                            nullptr);
+    EXPECT_EQ(rc, -EINVAL);
+}
+#endif
+
+#ifdef LIBPLDM_API_TESTING
+TEST(DecodeDfHeartbeatResp, BadTestInvalidExpectedInputMsgLength)
+{
+    uint8_t completion_code = PLDM_SUCCESS;
+    uint32_t responder_max_interval = 0xa00f0000; // 4000 ms
+
+    struct pldm_file_df_heartbeat_resp resp_data = {};
+
+    PLDM_MSGBUF_DEFINE_P(buf);
+    int rc;
+
+    static constexpr const size_t payload_length = PLDM_DF_HEARTBEAT_RESP_BYTES;
+
+    PLDM_MSG_DEFINE_P(responseMsg, payload_length);
+
+    rc = pldm_msgbuf_init_errno(buf, 0, responseMsg->payload, payload_length);
+    ASSERT_EQ(rc, 0);
+
+    pldm_msgbuf_insert_uint8(buf, completion_code);
+    pldm_msgbuf_insert_uint32(buf, responder_max_interval);
+
+    ASSERT_EQ(pldm_msgbuf_complete_consumed(buf), 0);
+
+    rc = decode_pldm_file_df_heartbeat_resp(responseMsg, 0, &resp_data);
+    EXPECT_EQ(rc, -EOVERFLOW);
+}
+#endif
