Add updateable association

Add 'updateable' association to the functional PSU firmware.
This 'updateable' association can be used to mark all the
firmware components which can be programmable from BMC
interfaces like Redfish.

Resolves openbmc/phosphor-psu-code-mgmt#2

Tested: Verify unit tests success;
        Verify the updateable associations are created for PSU firmware
        objects on Witherspoon, and the Redfish has "Updateable": true
        for the PSU images.

Signed-off-by: Lei YU <mine260309@gmail.com>
Change-Id: I579121587b0d2c14f08beceaa68e380eaf1eefd9
diff --git a/test/test_activation.cpp b/test/test_activation.cpp
index a7ce542..f2cc1ef 100644
--- a/test/test_activation.cpp
+++ b/test/test_activation.cpp
@@ -118,6 +118,8 @@
         .Times(0);
     EXPECT_CALL(mockedAssociationInterface, addFunctionalAssociation(dBusPath))
         .Times(0);
+    EXPECT_CALL(mockedAssociationInterface, addUpdateableAssociation(dBusPath))
+        .Times(0);
     EXPECT_CALL(mockedActivationListener, onUpdateDone(_, _)).Times(0);
     EXPECT_EQ(Status::Failed, activation->activation());
 }
@@ -139,6 +141,8 @@
         .Times(1);
     EXPECT_CALL(mockedAssociationInterface, addFunctionalAssociation(dBusPath))
         .Times(1);
+    EXPECT_CALL(mockedAssociationInterface, addUpdateableAssociation(dBusPath))
+        .Times(1);
     EXPECT_CALL(mockedActivationListener,
                 onUpdateDone(StrEq(versionId), StrEq(psu0)))
         .Times(1);
@@ -188,6 +192,8 @@
         .Times(1);
     EXPECT_CALL(mockedAssociationInterface, addFunctionalAssociation(dBusPath))
         .Times(1);
+    EXPECT_CALL(mockedAssociationInterface, addUpdateableAssociation(dBusPath))
+        .Times(1);
 
     EXPECT_CALL(mockedActivationListener,
                 onUpdateDone(StrEq(versionId), StrEq(psu3)))
@@ -224,6 +230,8 @@
         .Times(0);
     EXPECT_CALL(mockedAssociationInterface, addFunctionalAssociation(dBusPath))
         .Times(0);
+    EXPECT_CALL(mockedAssociationInterface, addUpdateableAssociation(dBusPath))
+        .Times(0);
     EXPECT_CALL(mockedActivationListener, onUpdateDone(_, _)).Times(0);
     onUpdateFailed();
     EXPECT_EQ(Status::Failed, activation->activation());
@@ -294,6 +302,8 @@
         .Times(1);
     EXPECT_CALL(mockedAssociationInterface, addFunctionalAssociation(dBusPath))
         .Times(1);
+    EXPECT_CALL(mockedAssociationInterface, addUpdateableAssociation(dBusPath))
+        .Times(1);
     onUpdateDone();
     EXPECT_EQ(Status::Active, activation->activation());
 }
@@ -334,6 +344,8 @@
         .Times(1);
     EXPECT_CALL(mockedAssociationInterface, addFunctionalAssociation(dBusPath))
         .Times(1);
+    EXPECT_CALL(mockedAssociationInterface, addUpdateableAssociation(dBusPath))
+        .Times(1);
 
     onUpdateDone();
     EXPECT_EQ(Status::Active, activation->activation());