diff --git a/libpldm/tests/libpldm_firmware_update_test.cpp b/libpldm/tests/libpldm_firmware_update_test.cpp
index cb0ec5a..b02e8ca 100644
--- a/libpldm/tests/libpldm_firmware_update_test.cpp
+++ b/libpldm/tests/libpldm_firmware_update_test.cpp
@@ -77,3 +77,72 @@
     EXPECT_EQ(requestPtr->hdr.type, PLDM_FWUP);
     EXPECT_EQ(requestPtr->hdr.command, PLDM_GET_FIRMWARE_PARAMETERS);
 }
+
+TEST(GetFirmwareParameters, goodPathDecodeResponseComponentSetInfo)
+{
+    // Random value for capabilities during update
+    constexpr uint32_t capabilitiesDuringUpdate = 0xBADBEEFE;
+    // Random value for component count
+    constexpr uint16_t componentCount = 0xAABB;
+    // ActiveCompImageSetVerStrLen is not fixed here taking it as 8
+    constexpr uint8_t activeCompImageSetVerStrLen = 8;
+    // PendingCompImageSetVerStrLen is not fixed here taking it as 8
+    constexpr uint8_t pendingCompImageSetVerStrLen = 8;
+    constexpr size_t payloadLen =
+        sizeof(struct pldm_get_firmware_parameters_resp) +
+        activeCompImageSetVerStrLen + pendingCompImageSetVerStrLen;
+
+    std::array<uint8_t, hdrSize + payloadLen> response{};
+    auto inResp = reinterpret_cast<struct pldm_get_firmware_parameters_resp*>(
+        response.data() + hdrSize);
+    inResp->completion_code = PLDM_SUCCESS;
+    inResp->capabilities_during_update.value =
+        htole32(capabilitiesDuringUpdate);
+    inResp->comp_count = htole16(componentCount);
+    inResp->active_comp_image_set_ver_str_type = 1;
+    inResp->active_comp_image_set_ver_str_len = activeCompImageSetVerStrLen;
+    inResp->pending_comp_image_set_ver_str_type = 1;
+    inResp->pending_comp_image_set_ver_str_len = pendingCompImageSetVerStrLen;
+
+    constexpr size_t activeCompImageSetVerStrPos =
+        hdrSize + sizeof(struct pldm_get_firmware_parameters_resp);
+    // filling default values for ActiveComponentImageSetVersionString
+    std::fill_n(response.data() + activeCompImageSetVerStrPos,
+                activeCompImageSetVerStrLen, 0xFF);
+    constexpr size_t pendingCompImageSetVerStrPos =
+        hdrSize + sizeof(struct pldm_get_firmware_parameters_resp) +
+        activeCompImageSetVerStrLen;
+    // filling default values for ActiveComponentImageSetVersionString
+    std::fill_n(response.data() + pendingCompImageSetVerStrPos,
+                pendingCompImageSetVerStrLen, 0xFF);
+
+    auto responseMsg = reinterpret_cast<pldm_msg*>(response.data());
+    struct pldm_get_firmware_parameters_resp outResp;
+    struct variable_field outActiveCompImageSetVerStr;
+    struct variable_field outPendingCompImageSetVerStr;
+
+    auto rc = decode_get_firmware_parameters_resp_comp_set_info(
+        responseMsg, payloadLen, &outResp, &outActiveCompImageSetVerStr,
+        &outPendingCompImageSetVerStr);
+
+    EXPECT_EQ(rc, PLDM_SUCCESS);
+    EXPECT_EQ(outResp.completion_code, PLDM_SUCCESS);
+    EXPECT_EQ(outResp.capabilities_during_update.value,
+              capabilitiesDuringUpdate);
+    EXPECT_EQ(outResp.comp_count, componentCount);
+    EXPECT_EQ(inResp->active_comp_image_set_ver_str_type,
+              outResp.active_comp_image_set_ver_str_type);
+    EXPECT_EQ(inResp->active_comp_image_set_ver_str_len,
+              outResp.active_comp_image_set_ver_str_len);
+    EXPECT_EQ(0, memcmp(outActiveCompImageSetVerStr.ptr,
+                        response.data() + activeCompImageSetVerStrPos,
+                        outActiveCompImageSetVerStr.length));
+
+    EXPECT_EQ(inResp->pending_comp_image_set_ver_str_type,
+              outResp.pending_comp_image_set_ver_str_type);
+    EXPECT_EQ(inResp->pending_comp_image_set_ver_str_len,
+              outResp.pending_comp_image_set_ver_str_len);
+    EXPECT_EQ(0, memcmp(outPendingCompImageSetVerStr.ptr,
+                        response.data() + pendingCompImageSetVerStrPos,
+                        outPendingCompImageSetVerStr.length));
+}
