diff --git a/lib/bmc_redfish.py b/lib/bmc_redfish.py
index 0619ca5..ba1b7d7 100644
--- a/lib/bmc_redfish.py
+++ b/lib/bmc_redfish.py
@@ -37,14 +37,6 @@
         self._username_ = username
         self._password_ = password
         self._default_prefix_ = "/redfish/v1"
-        self._robj_ = \
-            redfish.redfish_client(base_url=self._base_url_,
-                                   username=self._username_,
-                                   password=self._password_,
-                                   default_prefix=self._default_prefix_,
-                                   *args, **kwargs)
-        self._robj_.login(auth=redfish.AuthMethod.SESSION)
-        self._session_location_ = self._robj_.get_session_location()
 
     def __enter__(self):
         return self
@@ -60,8 +52,20 @@
         args/kwargs     These are passed directly to the corresponding
                         RestClientBase method.
         """
-        self._robj_.__init__(self._base_url_, self._username_, self._password_)
+
+        for arg in args:
+            hostname = self._base_url_.strip("https://")
+            # Class object constructor reinitialized.
+            self.__init__(hostname=hostname,
+                          username=arg['username'],
+                          password=arg['password'])
+
+        self._robj_ = redfish.redfish_client(base_url=self._base_url_,
+                                             username=self._username_,
+                                             password=self._password_,
+                                             default_prefix=self._default_prefix_)
         self._robj_.login(auth=redfish.AuthMethod.SESSION)
+        self._session_location_ = self._robj_.get_session_location()
 
     def get(self, resource_path, *args, **kwargs):
         r"""
diff --git a/redfish/service_root/test_service_root_security.robot b/redfish/service_root/test_service_root_security.robot
new file mode 100644
index 0000000..7b2bf28
--- /dev/null
+++ b/redfish/service_root/test_service_root_security.robot
@@ -0,0 +1,33 @@
+*** Settings ***
+Resource         ../../lib/resource.txt
+Resource         ../../lib/bmc_redfish_resource.robot
+
+*** Test Cases ***
+
+Login To BMCweb With Invalid Credentials
+    [Documentation]  Login to BMC web using invalid credential.
+    [Tags]  Login_To_BMCweb_With_Invalid_Credentials
+    [Template]  Login And Verify Redfish Response
+
+    # Expect status            Username               Password
+    InvalidCredentialsError*   ${OPENBMC_USERNAME}    deadpassword
+    InvalidCredentialsError*   groot                  ${OPENBMC_PASSWORD}
+    InvalidCredentialsError*   ${EMPTY}               ${OPENBMC_PASSWORD}
+    InvalidCredentialsError*   ${OPENBMC_USERNAME}    ${EMPTY}
+    InvalidCredentialsError*   ${EMPTY}               ${EMPTY}
+
+
+*** Keywords ***
+
+Login And Verify Redfish Response
+    [Documentation]  Login and verify redfish response.
+    [Arguments]  ${expected_response}  ${username}  ${password}
+
+    # Description of arguments:
+    # expected_response   Expected REST status.
+    # username            The username to be used to connect to the server.
+    # password            The password to be used to connect to the server.
+
+    ${data}=  Create Dictionary  username=${username}  password=${password}
+    Run Keyword And Expect Error  ${expected_response}  redfish.Login  ${data}
+
