LDAP login-related test cases

- Verify LDAP User Able To Login Using REST
- Verify LDAP User Able to Logout Using REST
- Verify LDAP Secure_Mode Is Set

Change-Id: I5b767820c5293369d2265529194a39a1947e6621
Signed-off-by: Sivas SRR <sivas.srr@in.ibm.com>
diff --git a/tests_ldap/test_user_ldap_management.robot b/tests_ldap/test_user_ldap_management.robot
new file mode 100644
index 0000000..59957ad
--- /dev/null
+++ b/tests_ldap/test_user_ldap_management.robot
@@ -0,0 +1,132 @@
+*** Settings ***
+Documentation   OpenBMC LDAP user management test.
+
+Resource         ../lib/rest_client.robot
+Resource         ../lib/openbmc_ffdc.robot
+
+Suite Setup      Suite Setup Execution
+Test Teardown    FFDC On Test Case Fail
+
+*** Variables ****
+
+*** Test Cases ***
+
+Verify LDAP Client Service Is Running And API Available
+    [Documentation]  Verify LDAP client service is running and API available.
+    [Tags]  Verify_LDAP_Client_Service_Is_Running_And_API_Available
+
+    Check LDAP Service Running
+    ${resp}=  Read Properties  ${BMC_LDAP_URI}
+    Should Not Be Empty  ${resp}
+
+
+Verify LDAP Config Is Created
+    [Documentation]  Verify LDAP config is created in BMC.
+    [Tags]  Verify_LDAP_Config_Is_Created
+
+    Populate All Attributes for LDAP Config
+    Check LDAP Config File Generated
+
+
+Verify LDAP Config Is Deleted
+    [Documentation]  Verify LDAP config is deleted in BMC.
+    [Tags]  Verify_LDAP_Config_Is_Deleted
+
+    Delete LDAP Config
+    Check LDAP Config File Deleted
+
+
+Verify LDAP User Able To Login Using REST
+    [Documentation]  Verify LDAP user able to login using REST.
+    [Tags]  Verify_LDAP_User_Able_To_Login_Using_REST
+
+    Populate All Attributes for LDAP Config
+    Check LDAP Config File Generated
+
+    # REST Login to BMC with LDAP user and password.
+    Initialize OpenBMC  OPENBMC_USER=${LDAP_USER}
+    ...  OPENBMC_PASSWORD=${LDAP_USER_PASSWORD}
+
+    ${bmc_user_uris}=  Read Properties  ${BMC_USER_URI}list
+    Should Not Be Empty  ${bmc_user_uris}
+
+
+Verify LDAP User Able to Logout Using REST
+    [Documentation]  Verify LDAP user able to logout using REST.
+    [Tags]  Verify_LDAP_User_Able_To_Logout_Using_REST
+
+    Populate All Attributes for LDAP Config
+    Check LDAP Config File Generated
+
+    # REST Login to BMC with LDAP user and password.
+    Initialize OpenBMC  OPENBMC_USER=${LDAP_USER}
+    ...  OPENBMC_PASSWORD=${LDAP_USER_PASSWORD}
+
+    # REST Logout from BMC.
+    Log Out OpenBMC
+
+Verify LDAP Secure_Mode Is Set
+    [Documentation]  Verify LDAP Secure Mode is set using REST.
+    [Tags]  Verify_LDAP_Secure_Mode_Is_Set
+
+    ${ldap_mode}=  Create Dictionary  data=${False}
+    Write Attribute  ${BMC_LDAP_URI}/config/attr/LDAPType  data=${ldap_mode}
+    ...  verify=${True}  expected_value=${False}
+
+
+*** Keywords ***
+
+Suite Setup Execution
+    [Documentation]  Check for LDAP test readiness.
+
+    Should Not Be Empty  ${LDAP_SECURE_MODE}
+    Should Not Be Empty  ${LDAP_SERVER_URI}
+    Should Not Be Empty  ${LDAP_BIND_DN}
+    Should Not Be Empty  ${LDAP_BASE_DN}
+    Should Not Be Empty  ${LDAP_BIND_DN_PASSWORD}
+    Should Not Be Empty  ${LDAP_SEARCH_SCOPE}
+    Should Not Be Empty  ${LDAP_SERVER_TYPE}
+    Check LDAP Service Running
+
+Check LDAP Service Running
+    [Documentation]  Check LDAP service running in BMC.
+
+    BMC Execute Command  systemctl | grep -in ldap
+
+Populate All Attributes for LDAP Config
+    [Documentation]  Populate all attributes for LDAP configuration.
+
+    @{ldap_parm_list}=  Create List  xyz.openbmc_project.User.Ldap.Create
+    ...  ${LDAP_SECURE_MODE}  ${LDAP_SERVER_URI}  ${LDAP_BIND_DN}
+    ...  ${LDAP_BASE_DN}  ${LDAP_BIND_DN_PASSWORD}  ${LDAP_SEARCH_SCOPE}
+    ...  ${LDAP_SERVER_TYPE}
+
+    ${data}=  Create Dictionary  data=@{ldap_parm_list}
+
+    ${resp}=  OpenBMC Post Request
+    ...  ${BMC_LDAP_URI}/action/CreateConfig  data=${data}
+    Should Be Equal As Strings  ${resp.status_code}  ${HTTP_OK}
+
+Check LDAP Config File Generated
+    [Documentation]  Check LDAP file nslcd.conf generated.
+    [Arguments]  ${ldap_server}=${LDAP_SERVER_URI}
+
+    ${ldap_server_config}  ${stderr}  ${rc}=  BMC Execute Command
+    ...  cat /etc/nslcd.conf
+
+    Should Contain  ${ldap_server_config}  ${ldap_server}
+    ...  msg=${ldap_server} is not configured.
+
+Delete LDAP Config
+    [Documentation]  Delete LDAP Config from REST.
+
+    ${data}=  Create Dictionary  data=@{EMPTY}
+    ${resp}=  OpenBMC Post Request
+    ...  ${BMC_LDAP_URI}/action/delete  data=${data}
+
+    Should Be Equal As Strings  ${resp.status_code}  ${HTTP_OK}
+
+Check LDAP Config File Deleted
+    [Documentation]  Check LDAP file nslcd.conf deleted.
+
+    BMC Execute Command  [ ! -f /etc/nslcd.conf ]