userEnable: fix bug and add unit test
This commit adds unit tests for the |userEnable| function. To make it
happen, a new overload of |executeUserModify| is introduced. The idea
is the same as previous commits where we add sudo in unit tests.
Thanks to this unit test, this commit fixes an existing bug where the
corresponding user's |userEnabled| attribute isn't updated.
Tested: unit test passed
Coverage:
lines......: 81.3% (1918 of 2359 lines)
functions..: 93.9% (400 of 426 functions)
branches...: 32.0% (3029 of 9469 branches)
Signed-off-by: Nan Zhou <nanzhoumails@gmail.com>
Change-Id: I89752e5fcfc1aabb4090b0b2e8faf5f1b5ee5e76
diff --git a/user_mgr.cpp b/user_mgr.cpp
index 7b2b697..f7d5e8e 100644
--- a/user_mgr.cpp
+++ b/user_mgr.cpp
@@ -617,10 +617,7 @@
throwForUserDoesNotExist(userName);
try
{
- // set EXPIRE_DATE to 0 to disable user, PAM takes 0 as expire on
- // 1970-01-01, that's an implementation-defined behavior
- executeCmd("/usr/sbin/usermod", userName.c_str(), "-e",
- (enabled ? "" : "1970-01-01"));
+ executeUserModifyUserEnable(userName.c_str(), enabled);
}
catch (const InternalFailure& e)
{
@@ -631,6 +628,7 @@
log<level::INFO>("User enabled/disabled state updated successfully",
entry("USER_NAME=%s", userName.c_str()),
entry("ENABLED=%d", enabled));
+ usersList[userName]->setUserEnabled(enabled);
return;
}
@@ -1346,5 +1344,13 @@
(sshRequested ? "/bin/sh" : "/bin/nologin"));
}
+void UserMgr::executeUserModifyUserEnable(const char* userName, bool enabled)
+{
+ // set EXPIRE_DATE to 0 to disable user, PAM takes 0 as expire on
+ // 1970-01-01, that's an implementation-defined behavior
+ executeCmd("/usr/sbin/usermod", userName, "-e",
+ (enabled ? "" : "1970-01-01"));
+}
+
} // namespace user
} // namespace phosphor