tests: dsp: firmware_update: Split test cases by package data
Isolate the tests so their parameters can be adjusted with confidence.
Change-Id: I0ec981fe747d33fb480a9684e1c8a6928b846b4b
Signed-off-by: Andrew Jeffery <andrew@codeconstruct.com.au>
diff --git a/tests/dsp/firmware_update.cpp b/tests/dsp/firmware_update.cpp
index ea93e21..e3dc17d 100644
--- a/tests/dsp/firmware_update.cpp
+++ b/tests/dsp/firmware_update.cpp
@@ -99,15 +99,66 @@
EXPECT_EQ(packageVersionString, packageVersionStr);
}
-TEST(DecodePackageHeaderInfo, errorPaths)
+TEST(DecodePackageHeaderInfo, invalidArguments)
{
- int rc = 0;
constexpr std::string_view packageVersionStr{"OpenBMCv1.0"};
constexpr size_t packageHeaderSize =
sizeof(pldm_package_header_information) + packageVersionStr.size();
- // Invalid Package Version String Type - 0x06
- constexpr std::array<uint8_t, packageHeaderSize> invalidPackagerHeaderInfo1{
+ constexpr std::array<uint8_t, packageHeaderSize> packagerHeaderInfo{
+ 0xf0, 0x18, 0x87, 0x8c, 0xcb, 0x7d, 0x49, 0x43, 0x98, 0x00, 0xa0, 0x2f,
+ 0x05, 0x9a, 0xca, 0x02, 0x01, 0x2f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x19, 0x0c, 0xe5, 0x07, 0x00, 0x08, 0x00, 0x01, 0x0b,
+ 0x4f, 0x70, 0x65, 0x6e, 0x42, 0x4d, 0x43, 0x76, 0x31, 0x2e, 0x30};
+
+ pldm_package_header_information packageHeader{};
+ variable_field packageVersion{};
+ int rc = 0;
+
+ rc = decode_pldm_package_header_info(nullptr, packagerHeaderInfo.size(),
+ &packageHeader, &packageVersion);
+ EXPECT_EQ(rc, PLDM_ERROR_INVALID_DATA);
+
+ rc = decode_pldm_package_header_info(packagerHeaderInfo.data(),
+ packagerHeaderInfo.size(), nullptr,
+ &packageVersion);
+ EXPECT_EQ(rc, PLDM_ERROR_INVALID_DATA);
+
+ rc = decode_pldm_package_header_info(packagerHeaderInfo.data(),
+ packagerHeaderInfo.size(),
+ &packageHeader, nullptr);
+ EXPECT_EQ(rc, PLDM_ERROR_INVALID_DATA);
+}
+
+TEST(DecodePackageHeaderInfo, invalidPackageLengths)
+{
+ constexpr std::string_view packageVersionStr{"OpenBMCv1.0"};
+ constexpr size_t packageHeaderSize =
+ sizeof(pldm_package_header_information) + packageVersionStr.size();
+
+ constexpr std::array<uint8_t, packageHeaderSize> packagerHeaderInfo{
+ 0xf0, 0x18, 0x87, 0x8c, 0xcb, 0x7d, 0x49, 0x43, 0x98, 0x00, 0xa0, 0x2f,
+ 0x05, 0x9a, 0xca, 0x02, 0x01, 0x2f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x19, 0x0c, 0xe5, 0x07, 0x00, 0x08, 0x00, 0x01, 0x0b,
+ 0x4f, 0x70, 0x65, 0x6e, 0x42, 0x4d, 0x43, 0x76, 0x31, 0x2e, 0x30};
+
+ pldm_package_header_information packageHeader{};
+ variable_field packageVersion{};
+ int rc = 0;
+
+ rc = decode_pldm_package_header_info(
+ packagerHeaderInfo.data(), sizeof(pldm_package_header_information) - 1,
+ &packageHeader, &packageVersion);
+ EXPECT_EQ(rc, PLDM_ERROR_INVALID_LENGTH);
+}
+
+TEST(DecodePackageHeaderInfo, invalidPackageVersionStringType)
+{
+ constexpr std::string_view packageVersionStr{"OpenBMCv1.0"};
+ constexpr size_t packageHeaderSize =
+ sizeof(pldm_package_header_information) + packageVersionStr.size();
+
+ constexpr std::array<uint8_t, packageHeaderSize> invalidPackagerHeaderInfo{
0xf0, 0x18, 0x87, 0x8c, 0xcb, 0x7d, 0x49, 0x43, 0x98, 0x00, 0xa0, 0x2f,
0x05, 0x9a, 0xca, 0x02, 0x02, 0x2f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x19, 0x0c, 0xe5, 0x07, 0x00, 0x08, 0x00, 0x06, 0x0b,
@@ -115,65 +166,78 @@
pldm_package_header_information packageHeader{};
variable_field packageVersion{};
+ int rc = 0;
- rc = decode_pldm_package_header_info(nullptr,
- invalidPackagerHeaderInfo1.size(),
+ rc = decode_pldm_package_header_info(invalidPackagerHeaderInfo.data(),
+ invalidPackagerHeaderInfo.size(),
&packageHeader, &packageVersion);
EXPECT_EQ(rc, PLDM_ERROR_INVALID_DATA);
+}
- rc = decode_pldm_package_header_info(invalidPackagerHeaderInfo1.data(),
- invalidPackagerHeaderInfo1.size(),
- nullptr, &packageVersion);
- EXPECT_EQ(rc, PLDM_ERROR_INVALID_DATA);
+TEST(DecodePackageHeaderInfo, invalidPackageVersionStringLength)
+{
+ constexpr std::string_view packageVersionStr{"OpenBMCv1.0"};
+ constexpr size_t packageHeaderSize =
+ sizeof(pldm_package_header_information) + packageVersionStr.size();
- rc = decode_pldm_package_header_info(invalidPackagerHeaderInfo1.data(),
- invalidPackagerHeaderInfo1.size(),
- &packageHeader, nullptr);
- EXPECT_EQ(rc, PLDM_ERROR_INVALID_DATA);
-
- rc = decode_pldm_package_header_info(
- invalidPackagerHeaderInfo1.data(),
- sizeof(pldm_package_header_information) - 1, &packageHeader,
- &packageVersion);
- EXPECT_EQ(rc, PLDM_ERROR_INVALID_LENGTH);
-
- rc = decode_pldm_package_header_info(invalidPackagerHeaderInfo1.data(),
- invalidPackagerHeaderInfo1.size(),
- &packageHeader, &packageVersion);
- EXPECT_EQ(rc, PLDM_ERROR_INVALID_DATA);
-
- // Invalid Package Version String Length - 0x00
- constexpr std::array<uint8_t, packageHeaderSize> invalidPackagerHeaderInfo2{
+ constexpr std::array<uint8_t, packageHeaderSize> invalidPackagerHeaderInfo{
0xf0, 0x18, 0x87, 0x8c, 0xcb, 0x7d, 0x49, 0x43, 0x98, 0x00, 0xa0, 0x2f,
0x05, 0x9a, 0xca, 0x02, 0x02, 0x2f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x19, 0x0c, 0xe5, 0x07, 0x00, 0x08, 0x00, 0x01, 0x00,
0x4f, 0x70, 0x65, 0x6e, 0x42, 0x4d, 0x43, 0x76, 0x31, 0x2e, 0x30};
- rc = decode_pldm_package_header_info(invalidPackagerHeaderInfo2.data(),
- invalidPackagerHeaderInfo2.size(),
+
+ pldm_package_header_information packageHeader{};
+ variable_field packageVersion{};
+ int rc = 0;
+
+ rc = decode_pldm_package_header_info(invalidPackagerHeaderInfo.data(),
+ invalidPackagerHeaderInfo.size(),
&packageHeader, &packageVersion);
EXPECT_EQ(rc, PLDM_ERROR_INVALID_DATA);
+}
- // Package version string length less than in the header information
+TEST(DecodePackageHeaderInfo, corruptPackageVersionStringLength)
+{
+ constexpr std::string_view packageVersionStr{"OpenBMCv1.0"};
+ constexpr size_t packageHeaderSize =
+ sizeof(pldm_package_header_information) + packageVersionStr.size();
+
constexpr std::array<uint8_t, packageHeaderSize - 1>
- invalidPackagerHeaderInfo3{
+ invalidPackagerHeaderInfo{
0xf0, 0x18, 0x87, 0x8c, 0xcb, 0x7d, 0x49, 0x43, 0x98, 0x00,
0xa0, 0x2f, 0x05, 0x9a, 0xca, 0x02, 0x02, 0x2f, 0x01, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0x0c, 0xe5,
0x07, 0x00, 0x08, 0x00, 0x01, 0x0b, 0x4f, 0x70, 0x65, 0x6e,
0x42, 0x4d, 0x43, 0x76, 0x31, 0x2e};
- rc = decode_pldm_package_header_info(invalidPackagerHeaderInfo3.data(),
- invalidPackagerHeaderInfo3.size(),
+
+ pldm_package_header_information packageHeader{};
+ variable_field packageVersion{};
+ int rc = 0;
+
+ rc = decode_pldm_package_header_info(invalidPackagerHeaderInfo.data(),
+ invalidPackagerHeaderInfo.size(),
&packageHeader, &packageVersion);
EXPECT_EQ(rc, PLDM_ERROR_INVALID_LENGTH);
+}
- // ComponentBitmapBitLength not a multiple of 8
- constexpr std::array<uint8_t, packageHeaderSize> invalidPackagerHeaderInfo4{
+TEST(DecodePackageHeaderInfo, invalidComponentBitmapBitLength)
+{
+ constexpr std::string_view packageVersionStr{"OpenBMCv1.0"};
+ constexpr size_t packageHeaderSize =
+ sizeof(pldm_package_header_information) + packageVersionStr.size();
+
+ constexpr std::array<uint8_t, packageHeaderSize> invalidPackagerHeaderInfo{
0xf0, 0x18, 0x87, 0x8c, 0xcb, 0x7d, 0x49, 0x43, 0x98, 0x00, 0xa0, 0x2f,
0x05, 0x9a, 0xca, 0x02, 0x02, 0x2f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x19, 0x0c, 0xe5, 0x07, 0x00, 0x09, 0x00, 0x01, 0x0b,
0x4f, 0x70, 0x65, 0x6e, 0x42, 0x4d, 0x43, 0x76, 0x31, 0x2e, 0x30};
- rc = decode_pldm_package_header_info(invalidPackagerHeaderInfo4.data(),
- invalidPackagerHeaderInfo4.size(),
+
+ pldm_package_header_information packageHeader{};
+ variable_field packageVersion{};
+ int rc = 0;
+
+ rc = decode_pldm_package_header_info(invalidPackagerHeaderInfo.data(),
+ invalidPackagerHeaderInfo.size(),
&packageHeader, &packageVersion);
EXPECT_EQ(rc, PLDM_ERROR_INVALID_DATA);
}