diff --git a/test/user_mgr_test.cpp b/test/user_mgr_test.cpp
index c7f1f89..943f0a8 100644
--- a/test/user_mgr_test.cpp
+++ b/test/user_mgr_test.cpp
@@ -40,9 +40,18 @@
     {
         DbusUserObj object;
         DbusUserObjValue objValue;
-        DbusUserObjPath object_path("/xyz/openbmc_project/user/ldap");
-        DbusUserPropVariant group("ldapGroup");
-        DbusUserPropVariant priv("priv-admin");
+
+        DbusUserObjPath obj_path("/xyz/openbmc_project/user/ldap/openldap");
+        DbusUserPropVariant enabled(true);
+        DbusUserObjProperties property = {std::make_pair("Enabled", enabled)};
+        std::string intf = "xyz.openbmc_project.Object.Enable";
+        objValue.emplace(intf, property);
+        object.emplace(obj_path, objValue);
+
+        DbusUserObjPath object_path(
+            "/xyz/openbmc_project/user/ldap/openldap/role_map/1");
+        std::string group = "ldapGroup";
+        std::string priv = "priv-admin";
         DbusUserObjProperties properties = {std::make_pair("GroupName", group),
                                             std::make_pair("Privilege", priv)};
         std::string interface = "xyz.openbmc_project.User.PrivilegeMapperEntry";
@@ -52,6 +61,20 @@
 
         return object;
     }
+
+    DbusUserObj createLdapConfigObjectWithoutPrivilegeMapper(void)
+    {
+        DbusUserObj object;
+        DbusUserObjValue objValue;
+
+        DbusUserObjPath obj_path("/xyz/openbmc_project/user/ldap/openldap");
+        DbusUserPropVariant enabled(true);
+        DbusUserObjProperties property = {std::make_pair("Enabled", enabled)};
+        std::string intf = "xyz.openbmc_project.Object.Enable";
+        objValue.emplace(intf, property);
+        object.emplace(obj_path, objValue);
+        return object;
+    }
 };
 
 TEST_F(TestUserMgr, ldapEntryDoesNotExist)
@@ -105,10 +128,11 @@
     UserInfoMap userInfo;
     std::string userName = "ldapUser";
     std::string ldapGroup = "ldapGroup";
-    DbusUserObj object;
 
     EXPECT_CALL(mockManager, getLdapGroupName(userName))
         .WillRepeatedly(Return(ldapGroup));
+    // Create LDAP config object without privilege mapper
+    DbusUserObj object = createLdapConfigObjectWithoutPrivilegeMapper();
     EXPECT_CALL(mockManager, getPrivilegeMapperObject())
         .WillRepeatedly(Return(object));
     userInfo = mockManager.getUserInfo(userName);
