Fix user account status for manually blocked users

User account status in web interface is displayed incorrectly
if account is disabled (or enabled) via ssh.

Test manually:
1. Create new user using web interface
2. Change user account expiration date via ssh
    chage -E 1970-01-01 <new user>
  User account is blocked
3. Check user status in web interface.
 Blocked user account status should be displayed as "Disabled".

Change-Id: I15e93a87653289b5ba76313895da0cf7e5dd2c7c
Signed-off-by: Denis Zlobin <zlobin.d.al@gmail.com>
diff --git a/test/mock_user_mgr.hpp b/test/mock_user_mgr.hpp
index 3440299..99f2b37 100644
--- a/test/mock_user_mgr.hpp
+++ b/test/mock_user_mgr.hpp
@@ -17,6 +17,7 @@
     MOCK_METHOD0(getPrivilegeMapperObject, DbusUserObj());
     MOCK_METHOD1(userLockedForFailedAttempt, bool(const std::string& userName));
     MOCK_METHOD1(userPasswordExpired, bool(const std::string& userName));
+    MOCK_METHOD1(isUserEnabled, bool(const std::string& userName));
     MOCK_CONST_METHOD1(getPrimaryGroup, gid_t(const std::string& userName));
     MOCK_CONST_METHOD3(isGroupMember,
                        bool(const std::string& userName, gid_t primaryGid,
diff --git a/test/user_mgr_test.cpp b/test/user_mgr_test.cpp
index 9c825a4..cf623ae 100644
--- a/test/user_mgr_test.cpp
+++ b/test/user_mgr_test.cpp
@@ -44,6 +44,16 @@
         sdbusplus::message::object_path tempObjPath(usersObjPath);
         tempObjPath /= userName;
         std::string userObj(tempObjPath);
+        if (enabled)
+        {
+            ON_CALL(mockManager, isUserEnabled)
+                .WillByDefault(testing::Return(true));
+        }
+        else
+        {
+            ON_CALL(mockManager, isUserEnabled)
+                .WillByDefault(testing::Return(false));
+        }
         mockManager.usersList.emplace(
             userName, std::make_unique<phosphor::user::Users>(
                           mockManager.bus, userObj.c_str(), groupNames, priv,
@@ -261,7 +271,21 @@
         pwHistoryConfigFile = tempPWHistoryConfigFile;
         pwQualityConfigFile = tempPWQualityConfigFile;
 
-        ON_CALL(*this, executeUserAdd).WillByDefault(testing::Return());
+        ON_CALL(*this, executeUserAdd(testing::_, testing::_, testing::_,
+                                      testing::Eq(true)))
+            .WillByDefault(
+                [this]() {
+            ON_CALL(*this, isUserEnabled).WillByDefault(testing::Return(true));
+            testing::Return();
+            });
+
+        ON_CALL(*this, executeUserAdd(testing::_, testing::_, testing::_,
+                                      testing::Eq(false)))
+            .WillByDefault(
+                [this]() {
+            ON_CALL(*this, isUserEnabled).WillByDefault(testing::Return(false));
+            testing::Return();
+            });
 
         ON_CALL(*this, executeUserDelete).WillByDefault(testing::Return());
 
@@ -275,8 +299,21 @@
         ON_CALL(*this, executeUserModify(testing::_, testing::_, testing::_))
             .WillByDefault(testing::Return());
 
-        ON_CALL(*this, executeUserModifyUserEnable)
-            .WillByDefault(testing::Return());
+        ON_CALL(*this,
+                executeUserModifyUserEnable(testing::_, testing::Eq(true)))
+            .WillByDefault(
+                [this]() {
+            ON_CALL(*this, isUserEnabled).WillByDefault(testing::Return(true));
+            testing::Return();
+            });
+
+        ON_CALL(*this,
+                executeUserModifyUserEnable(testing::_, testing::Eq(false)))
+            .WillByDefault(
+                [this]() {
+            ON_CALL(*this, isUserEnabled).WillByDefault(testing::Return(false));
+            testing::Return();
+            });
 
         ON_CALL(*this, executeGroupCreation(testing::_))
             .WillByDefault(testing::Return());
@@ -321,6 +358,8 @@
 
     MOCK_METHOD(void, executeGroupDeletion, (const char*), (override));
 
+    MOCK_METHOD(bool, isUserEnabled, (const std::string& userName), (override));
+
   protected:
     static sdbusplus::bus_t busInTest;
     std::string tempFaillockConfigFile;