Add function to test user messages query by timestamp

-Updates the user messages tests to test query users messages
 by timestamp.
-Updates the negative user messages tests to test query users
 messages with invalid time format.

Depends-On: I3d94bac4304c236f275abe7ce31432b0e2384247
Change-Id: I7a048c754cb703eebee709e35d379a4c51a80b3a
diff --git a/manila_tempest_tests/config.py b/manila_tempest_tests/config.py
index e0e8ea3..774714b 100644
--- a/manila_tempest_tests/config.py
+++ b/manila_tempest_tests/config.py
@@ -30,7 +30,7 @@
                help="The minimum api microversion is configured to be the "
                     "value of the minimum microversion supported by Manila."),
     cfg.StrOpt("max_api_microversion",
-               default="2.51",
+               default="2.52",
                help="The maximum api microversion is configured to be the "
                     "value of the latest microversion supported by Manila."),
     cfg.StrOpt("region",
diff --git a/manila_tempest_tests/tests/api/admin/test_user_messages.py b/manila_tempest_tests/tests/api/admin/test_user_messages.py
index 8a11b1c..9d69f90 100644
--- a/manila_tempest_tests/tests/api/admin/test_user_messages.py
+++ b/manila_tempest_tests/tests/api/admin/test_user_messages.py
@@ -10,6 +10,8 @@
 #    License for the specific language governing permissions and limitations
 #    under the License.
 
+import datetime
+
 from oslo_utils import timeutils
 from oslo_utils import uuidutils
 from tempest import config
@@ -21,6 +23,7 @@
 CONF = config.CONF
 
 MICROVERSION = '2.37'
+QUERY_BY_TIMESTAMP_MICROVERSION = '2.52'
 MESSAGE_KEYS = (
     'created_at',
     'action_id',
@@ -111,3 +114,40 @@
         self.shares_v2_client.delete_message(self.message['id'])
         self.shares_v2_client.wait_for_resource_deletion(
             message_id=self.message['id'])
+
+    @decorators.attr(type=[base.TAG_POSITIVE, base.TAG_API])
+    @base.skip_if_microversion_not_supported(QUERY_BY_TIMESTAMP_MICROVERSION)
+    def test_list_messages_with_since_and_before_filters(self):
+        new_message = self.create_user_message()
+        created_at_1 = timeutils.parse_strtime(self.message['created_at'])
+        created_at_2 = timeutils.parse_strtime(new_message['created_at'])
+        time_1 = created_at_1 - datetime.timedelta(seconds=1)
+        time_2 = created_at_2 - datetime.timedelta(seconds=1)
+
+        params1 = {'created_since': str(created_at_1)}
+        # should return all user messages created by this test including
+        # self.message
+        messages = self.shares_v2_client.list_messages(params=params1)
+        ids = [x['id'] for x in messages]
+        self.assertGreaterEqual(len(ids), 2)
+        self.assertIn(self.message['id'], ids)
+        self.assertIn(new_message['id'], ids)
+
+        params2 = {'created_since': str(time_1),
+                   'created_before': str(time_2)}
+        # should not return new_message, but return a list that is equal to 1
+        # and include self.message
+        messages = self.shares_v2_client.list_messages(params=params2)
+        self.assertIsInstance(messages, list)
+        ids = [x['id'] for x in messages]
+        self.assertGreaterEqual(len(ids), 1)
+        self.assertIn(self.message['id'], ids)
+        self.assertNotIn(new_message['id'], ids)
+
+        params3 = {'created_before': str(time_2)}
+        # should not include self.message
+        messages = self.shares_v2_client.list_messages(params=params3)
+        ids = [x['id'] for x in messages]
+        self.assertGreaterEqual(len(ids), 1)
+        self.assertNotIn(new_message['id'], ids)
+        self.assertIn(self.message['id'], ids)
diff --git a/manila_tempest_tests/tests/api/admin/test_user_messages_negative.py b/manila_tempest_tests/tests/api/admin/test_user_messages_negative.py
index c9debdd..cf592e4 100644
--- a/manila_tempest_tests/tests/api/admin/test_user_messages_negative.py
+++ b/manila_tempest_tests/tests/api/admin/test_user_messages_negative.py
@@ -21,6 +21,7 @@
 CONF = config.CONF
 
 MICROVERSION = '2.37'
+QUERY_BY_TIMESTAMP_MICROVERSION = '2.52'
 
 
 class UserMessageNegativeTest(base.BaseSharesAdminTest):
@@ -61,3 +62,13 @@
         self.assertRaises(lib_exc.NotFound,
                           self.shares_v2_client.delete_message,
                           six.text_type(uuidutils.generate_uuid()))
+
+    @decorators.attr(type=[base.TAG_NEGATIVE, base.TAG_API])
+    @base.skip_if_microversion_not_supported(QUERY_BY_TIMESTAMP_MICROVERSION)
+    def test_list_messages_with_invalid_time_format(self):
+        params_key = ['created_since', 'created_before']
+        for key in params_key:
+            params = {key: 'invalid_time'}
+            self.assertRaises(lib_exc.BadRequest,
+                              self.shares_v2_client.list_messages,
+                              params=params)