diff --git a/manila_tempest_tests/config.py b/manila_tempest_tests/config.py
index 7d7f3fb..1cd553e 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.24",
+               default="2.25",
                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/services/share/v2/json/shares_client.py b/manila_tempest_tests/services/share/v2/json/shares_client.py
index de8c62e..cbc26b5 100644
--- a/manila_tempest_tests/services/share/v2/json/shares_client.py
+++ b/manila_tempest_tests/services/share/v2/json/shares_client.py
@@ -785,6 +785,17 @@
         self.expected_success(202, resp.status)
         return body
 
+    def detail_quotas(self, tenant_id, user_id=None, url=None,
+                      version=LATEST_MICROVERSION):
+        if url is None:
+            url = self._get_quotas_url(version)
+        url += '/%s/detail' % tenant_id
+        if user_id is not None:
+            url += "?user_id=%s" % user_id
+        resp, body = self.get(url, version=version)
+        self.expected_success(200, resp.status)
+        return self._parse_resp(body)
+
     def update_quotas(self, tenant_id, user_id=None, shares=None,
                       snapshots=None, gigabytes=None, snapshot_gigabytes=None,
                       share_networks=None, force=True, url=None,
diff --git a/manila_tempest_tests/tests/api/admin/test_quotas_negative.py b/manila_tempest_tests/tests/api/admin/test_quotas_negative.py
index d6c47e5..b8557e1 100644
--- a/manila_tempest_tests/tests/api/admin/test_quotas_negative.py
+++ b/manila_tempest_tests/tests/api/admin/test_quotas_negative.py
@@ -203,3 +203,15 @@
             self.shares_v2_client.tenant_id,
             version=version, url=url,
         )
+
+    @tc.attr(base.TAG_NEGATIVE, base.TAG_API)
+    def test_show_quota_detail_with_wrong_versions(self):
+        version = '2.24'
+        url = 'quota-sets'
+
+        self.assertRaises(
+            lib_exc.NotFound,
+            self.shares_v2_client.detail_quotas,
+            self.shares_v2_client.tenant_id,
+            version=version, url=url,
+        )
diff --git a/manila_tempest_tests/tests/api/test_quotas.py b/manila_tempest_tests/tests/api/test_quotas.py
index e9f5042..a7540ed 100644
--- a/manila_tempest_tests/tests/api/test_quotas.py
+++ b/manila_tempest_tests/tests/api/test_quotas.py
@@ -64,3 +64,28 @@
         self.assertGreater(int(quotas["shares"]), -2)
         self.assertGreater(int(quotas["snapshots"]), -2)
         self.assertGreater(int(quotas["share_networks"]), -2)
+
+    @tc.attr(base.TAG_POSITIVE, base.TAG_API)
+    @base.skip_if_microversion_not_supported("2.25")
+    def test_show_quotas_detail(self):
+        quotas = self.shares_v2_client.detail_quotas(self.tenant_id)
+        quota_keys = list(quotas.keys())
+        for outer in ('gigabytes', 'snapshot_gigabytes', 'shares',
+                      'snapshots', 'share_networks'):
+            self.assertIn(outer, quota_keys)
+            for inner in ('in_use', 'limit', 'reserved'):
+                self.assertIn(inner, list(quotas[outer].keys()))
+                self.assertGreater(int(quotas[outer][inner]), -2)
+
+    @tc.attr(base.TAG_POSITIVE, base.TAG_API)
+    @base.skip_if_microversion_not_supported("2.25")
+    def test_show_quotas_detail_for_user(self):
+        quotas = self.shares_v2_client.detail_quotas(self.tenant_id,
+                                                     self.user_id)
+        quota_keys = list(quotas.keys())
+        for outer in ('gigabytes', 'snapshot_gigabytes', 'shares',
+                      'snapshots', 'share_networks'):
+            self.assertIn(outer, quota_keys)
+            for inner in ('in_use', 'limit', 'reserved'):
+                self.assertIn(inner, list(quotas[outer].keys()))
+                self.assertGreater(int(quotas[outer][inner]), -2)
