fru-device: fixup fru edit commit
Adds a number of fixups to review comments and simplifications
to the flow of the previous fru-edit commit.
Tested: Edited FRU property on nvl32-obmc
```
root@nvl32-obmc:/sys/bus/i2c/devices/4-0051# busctl introspect xyz.openbmc_project.FruDevice /xyz/openbmc_project/FruDevice/MSX4_MG1_000
NAME                                TYPE      SIGNATURE RESULT/VALUE             FLAGS
org.freedesktop.DBus.Introspectable interface -         -                        -
.Introspect                         method    -         s                        -
org.freedesktop.DBus.Peer           interface -         -                        -
.GetMachineId                       method    -         s                        -
.Ping                               method    -         -                        -
org.freedesktop.DBus.Properties     interface -         -                        -
.Get                                method    ss        v                        -
.GetAll                             method    s         a{sv}                    -
.Set                                method    ssv       -                        -
.PropertiesChanged                  signal    sa{sv}as  -                        -
xyz.openbmc_project.FruDevice       interface -         -                        -
.UpdateFruField                     method    ss        b                        -
.ADDRESS                            property  u         81                       emits-change
.BOARD_INFO_AM1                     property  s         "NULL"                   emits-change writable
.BOARD_LANGUAGE_CODE                property  s         "0"                      emits-change
.BOARD_MANUFACTURER                 property  s         "Giga Computing"         emits-change writable
.BOARD_MANUFACTURE_DATE             property  s         "20250101T000800Z"       emits-change
.BOARD_PART_NUMBER                  property  s         "123456789AB"            emits-change writable
.BOARD_PRODUCT_NAME                 property  s         "MSX4-MG1-000"           emits-change writable
.BOARD_SERIAL_NUMBER                property  s         "S2510200007"            emits-change writable
.BUS                                property  u         4                        emits-change
.CHASSIS_PART_NUMBER                property  s         "01234567"               emits-change writable
.CHASSIS_SERIAL_NUMBER              property  s         "01234567890123456789AB" emits-change writable
.CHASSIS_TYPE                       property  s         "23"                     emits-change
.Common_Format_Version              property  s         "1"                      emits-change
.PRODUCT_ASSET_TAG                  property  s         "01234567890"            emits-change writable
.PRODUCT_LANGUAGE_CODE              property  s         "0"                      emits-change
.PRODUCT_MANUFACTURER               property  s         "Giga Computing"         emits-change writable
.PRODUCT_PART_NUMBER                property  s         "000000000001"           emits-change writable
.PRODUCT_PRODUCT_NAME               property  s         "XL44-SX2-AAS1-000"      emits-change writable
.PRODUCT_SERIAL_NUMBER              property  s         "01234567890123"         emits-change writable
.PRODUCT_VERSION                    property  s         "0100"                   emits-change writable
root@nvl32-obmc:/sys/bus/i2c/devices/4-0051# busctl call xyz.openbmc_project.FruDevice /xyz/openbmc_project/FruDevice/MSX4_MG1_000 xyz.openbmc_project.FruDevice UpdateFruField ss "PRODUCT_ASSET_TAG" "12345678901234"
b true
root@nvl32-obmc:/sys/bus/i2c/devices/4-0051# busctl introspect xyz.openbmc_project.FruDevice /xyz/openbmc_project/FruDevice/MSX4_MG1_000
NAME                                TYPE      SIGNATURE RESULT/VALUE             FLAGS
org.freedesktop.DBus.Introspectable interface -         -                        -
.Introspect                         method    -         s                        -
org.freedesktop.DBus.Peer           interface -         -                        -
.GetMachineId                       method    -         s                        -
.Ping                               method    -         -                        -
org.freedesktop.DBus.Properties     interface -         -                        -
.Get                                method    ss        v                        -
.GetAll                             method    s         a{sv}                    -
.Set                                method    ssv       -                        -
.PropertiesChanged                  signal    sa{sv}as  -                        -
xyz.openbmc_project.FruDevice       interface -         -                        -
.UpdateFruField                     method    ss        b                        -
.ADDRESS                            property  u         81                       emits-change
.BOARD_INFO_AM1                     property  s         "NULL"                   emits-change writable
.BOARD_LANGUAGE_CODE                property  s         "0"                      emits-change
.BOARD_MANUFACTURER                 property  s         "Giga Computing"         emits-change writable
.BOARD_MANUFACTURE_DATE             property  s         "20250101T000800Z"       emits-change
.BOARD_PART_NUMBER                  property  s         "123456789AB"            emits-change writable
.BOARD_PRODUCT_NAME                 property  s         "MSX4-MG1-000"           emits-change writable
.BOARD_SERIAL_NUMBER                property  s         "S2510200007"            emits-change writable
.BUS                                property  u         4                        emits-change
.CHASSIS_PART_NUMBER                property  s         "01234567"               emits-change writable
.CHASSIS_SERIAL_NUMBER              property  s         "01234567890123456789AB" emits-change writable
.CHASSIS_TYPE                       property  s         "23"                     emits-change
.Common_Format_Version              property  s         "1"                      emits-change
.PRODUCT_ASSET_TAG                  property  s         "12345678901234"         emits-change writable
.PRODUCT_LANGUAGE_CODE              property  s         "0"                      emits-change
.PRODUCT_MANUFACTURER               property  s         "Giga Computing"         emits-change writable
.PRODUCT_PART_NUMBER                property  s         "000000000001"           emits-change writable
.PRODUCT_PRODUCT_NAME               property  s         "XL44-SX2-AAS1-000"      emits-change writable
.PRODUCT_SERIAL_NUMBER              property  s         "01234567890123"         emits-change writable
.PRODUCT_VERSION                    property  s         "0100"                   emits-change writable
```
Change-Id: Ic4cd7111cd4f3694faed79793e1abc98f254617b
Signed-off-by: Marc Olberding <molberding@nvidia.com>
diff --git a/test/test_fru-utils.cpp b/test/test_fru-utils.cpp
index a4c698c..031b4e4 100644
--- a/test/test_fru-utils.cpp
+++ b/test/test_fru-utils.cpp
@@ -484,37 +484,11 @@
     EXPECT_FALSE(isFieldEditable("ABCD_BOARD"));
 }
 
-TEST(GetAreaIdxTest, InvalidAreaReturnsInvalid)
-{
-    // Validates that false is returned for an invalid area.
-    const std::string invalidArea = "INVALID_AREA";
-    fruAreas areaIdx = fruAreas::fruAreaInternal;
-    EXPECT_FALSE(getAreaIdx(invalidArea, areaIdx));
-}
-
-TEST(GetAreaIdxTest, ValidAreaReturnsValid)
-{
-    const std::vector<std::string> validAreas = {"INTERNAL", "CHASSIS", "BOARD",
-                                                 "PRODUCT", "MULTIRECORD"};
-
-    const std::array<fruAreas, 5> expectedAreas = {
-        fruAreas::fruAreaInternal, fruAreas::fruAreaChassis,
-        fruAreas::fruAreaBoard, fruAreas::fruAreaProduct,
-        fruAreas::fruAreaMultirecord};
-
-    for (size_t i = 0; i < validAreas.size(); ++i)
-    {
-        fruAreas testArea = fruAreas::fruAreaInternal; // default init
-        EXPECT_TRUE(getAreaIdx(validAreas[i], testArea));
-        EXPECT_EQ(testArea, expectedAreas[i]);
-    }
-}
-
 TEST(UpdateAreaChecksumTest, EmptyArea)
 {
     // Validates that an empty area does not cause any issues.
     std::vector<uint8_t> fruArea = {};
-    EXPECT_FALSE(updateAreacksum(fruArea));
+    EXPECT_FALSE(updateAreaChecksum(fruArea));
 }
 
 TEST(UpdateAreaChecksumTest, ValidArea)
@@ -522,7 +496,7 @@
     // Validates that a valid area updates the checksum correctly.
     std::vector<uint8_t> fruArea = {0x01, 0x00, 0x01, 0x02,
                                     0x03, 0x04, 0x00, 0x00};
-    EXPECT_TRUE(updateAreacksum(fruArea));
+    EXPECT_TRUE(updateAreaChecksum(fruArea));
     EXPECT_EQ(fruArea.back(), 0xf5);
 }
 
@@ -531,7 +505,7 @@
     // Validates that an invalid area does not update the checksum.
     std::vector<uint8_t> fruArea = {0x01, 0x00, 0x01, 0x02, 0x03,
                                     0x04, 0x00, 0x00, 0xAA};
-    EXPECT_FALSE(updateAreacksum(fruArea));
+    EXPECT_FALSE(updateAreaChecksum(fruArea));
 }
 
 TEST(DisassembleFruDataTest, EmptyData)
@@ -566,7 +540,7 @@
     };
 
     std::vector<std::vector<uint8_t>> areasData;
-    EXPECT_TRUE(disassembleFruData(fruData, areasData));
+    ASSERT_TRUE(disassembleFruData(fruData, areasData));
     EXPECT_GT(areasData.size(), 1);
 
     // Internal area is size is zero
@@ -606,6 +580,33 @@
                  areasData[static_cast<size_t>(fruAreas::fruAreaProduct)],
                  "PRODUCT_PRODUCT_NAME", "OpenBMC-test1"));
 
+    EXPECT_EQ(
+        areasData[static_cast<size_t>(fruAreas::fruAreaProduct)].size() % 8, 0);
+    EXPECT_EQ(areasData[static_cast<size_t>(fruAreas::fruAreaBoard)].size() % 8,
+              0);
+
     std::vector<uint8_t> assembledData;
     EXPECT_TRUE(assembleFruData(assembledData, areasData));
+
+    boost::container::flat_map<std::string, std::string> result;
+    auto rescode = formatIPMIFRU(assembledData, result);
+    EXPECT_NE(rescode, resCodes::resErr);
+
+    EXPECT_EQ(result["PRODUCT_ASSET_TAG"], "123");
+    EXPECT_EQ(result["PRODUCT_PART_NUMBER"], "699-13809-0404-600");
+    EXPECT_EQ(result["PRODUCT_PRODUCT_NAME"], "OpenBMC-test1");
+    EXPECT_EQ(result["BOARD_INFO_AM1"], "01");
+    EXPECT_EQ(result["BOARD_INFO_AM2"], "MAC: 3C:6D:66:14:C8:7A");
+}
+
+TEST(ReassembleFruDataTest, UnalignedFails)
+{
+    std::vector<uint8_t> areaOne{0, 35};
+    std::vector<uint8_t> areaTwo{0, 32};
+    std::vector<std::vector<uint8_t>> areas;
+    areas.push_back(areaOne);
+    areas.push_back(areaTwo);
+
+    std::vector<uint8_t> fruData;
+    EXPECT_FALSE(assembleFruData(fruData, areas));
 }