Changed a Keyword and test case for date and time

    Changes:
        - Added a keyword for set date and time

    Tested:
        Ran and tested on BMC Environment

Change-Id: I3a3053cda80b4e1d456904de9d654115f78187a7
Signed-off-by: Saranya Devi Alluri <saranyad@in.ibm.com>
diff --git a/lib/bmc_date_and_time_utils.robot b/lib/bmc_date_and_time_utils.robot
index 1b01945..0d9da48 100644
--- a/lib/bmc_date_and_time_utils.robot
+++ b/lib/bmc_date_and_time_utils.robot
@@ -25,34 +25,34 @@
 
 Redfish Set DateTime
     [Documentation]  Set DateTime using Redfish.
-    [Arguments]  ${date_time}=${EMPTY}  &{kwargs}
+    [Arguments]  ${date_time}=${EMPTY}  ${request_type}=valid
     # Description of argument(s):
     # date_time                     New time to set for BMC (eg.
     #                               "2019-06-30 09:21:28"). If this value is
     #                               empty, it will be set to the UTC current
     #                               date time of the local system.
-    # kwargs                        Additional parameters to be passed directly to
-    #                               th Redfish.Patch function.  A good use for
-    #                               this is when testing a bad date-time, the
-    #                               caller can specify
-    #                               valid_status_codes=[${HTTP_BAD_REQUEST}].
+    # request_type                  By default user request is valid.
+    #                               User can pass invalid to identify the user
+    #                               date time input will result in failure as
+    #                               expected.
 
     # Assign default value of UTC current date time if date_time is empty.
     ${date_time}=  Run Keyword If
     ...  '${date_time}' == '${EMPTY}'  Get Current Date  time_zone=UTC
     ...  ELSE
     ...  Set Variable  ${date_time}
-    # Change date format to 2024-03-07T07:58:50+00:00 from 2024-03-07 07:58:50.000.
-    IF  "T" in "${date_time}"
+    # Patch date_time based on type of ${request_type}.
+    IF  '${request_type}' == 'valid'
+        ${date_time}=  Convert Date  ${date_time}  result_format=%Y-%m-%dT%H:%M:%S+00:00
         Wait Until Keyword Succeeds  1min  5sec
         ...  Redfish.Patch  ${REDFISH_BASE_URI}Managers/${MANAGER_ID}
-        ...  body={'DateTime': '${date_time}'}  &{kwargs}
+        ...  body={'DateTime': '${date_time}'}
         ...  valid_status_codes=[${HTTP_OK}, ${HTTP_NO_CONTENT}]
     ELSE
-        ${date_time_formatted}=  Convert Date  ${date_time}  result_format=%Y-%m-%dT%H:%M:%S+00:00
         Wait Until Keyword Succeeds  1min  5sec
-        ...  Redfish.Patch  ${REDFISH_BASE_URI}Managers/${MANAGER_ID}  body={'DateTime': '${date_time_formatted}'}
-        ...  &{kwargs}  valid_status_codes=[${HTTP_OK}, ${HTTP_NO_CONTENT}]
+        ...  Redfish.Patch  ${REDFISH_BASE_URI}Managers/${MANAGER_ID}
+        ...  body={'DateTime': '${date_time}'}
+        ...  valid_status_codes=[${HTTP_BAD_REQUEST}]
     END
 
 
@@ -76,7 +76,7 @@
     ...    Redfish Power off  stack_mode=skip
     ${current_date}=  Get Current Date  time_zone=UTC
     ${new_value}=  Subtract Time From Date  ${current_date}  1 day
-    Redfish Set DateTime  ${new_value}  valid_status_codes=[${HTTP_OK}]
+    Redfish Set DateTime  ${new_value}
     ${current_value}=  Redfish Get DateTime
     ${time_diff}=  Subtract Date From Date  ${current_value}  ${new_value}
     Should Be True  '${time_diff}'<='3'
diff --git a/redfish/managers/test_managers_bmc_time.robot b/redfish/managers/test_managers_bmc_time.robot
index 377de31..d845743 100644
--- a/redfish/managers/test_managers_bmc_time.robot
+++ b/redfish/managers/test_managers_bmc_time.robot
@@ -55,18 +55,18 @@
 
 
 Verify Set DateTime With Offset Using Redfish
-    [Documentation]  Verify set DateTime with offset using redfish API.
+    [Documentation]  Verify error while setting DateTime with offset using redfish API.
     [Tags]  Verify_Set_DateTime_With_Offset_Using_Redfish
     [Teardown]  Run Keywords  Redfish Set DateTime  AND  FFDC On Test Case Fail
 
-    Redfish Set DateTime  ${date_time_with_offset}  valid_status_codes=[${HTTP_BAD_REQUEST}]
+    Redfish Set DateTime  ${date_time_with_offset}  invalid
 
 
 Verify Set DateTime With Invalid Data Using Redfish
     [Documentation]  Verify error while setting invalid DateTime using Redfish.
     [Tags]  Verify_Set_DateTime_With_Invalid_Data_Using_Redfish
 
-    Redfish Set DateTime  ${invalid_datetime}  valid_status_codes=[${HTTP_BAD_REQUEST}]
+    Redfish Set DateTime  ${invalid_datetime}  invalid
 
 
 Verify DateTime Persists After Reboot
@@ -92,9 +92,9 @@
     [Documentation]  Verify immediate change in BMC date time.
     [Tags]  Verify_Immediate_Consumption_Of_BMC_Date
     [Setup]  Run Keywords  Set Time To Manual Mode  AND
-    ...  Redfish Set DateTime  valid_status_codes=[${HTTP_OK}]
+    ...  Redfish Set DateTime
     [Teardown]  Run Keywords  FFDC On Test Case Fail  AND
-    ...  Redfish Set DateTime  valid_status_codes=[${HTTP_OK}]
+    ...  Redfish Set DateTime
     [Template]  Set BMC Date And Verify
 
     # host_state