[Negative] Create share with non allowed share type

This test was created due to a bug [1] that was found when
creating a share type with non allowed share type.
When creating a share using a private share from other tenant, i.e.
the tenant has no access to the share type. As expected it failed
with 404, but the share stuck on "creating" status.

Note: This issue happens only when the share type name is used
for creating the share.
Creating a share using share type id works as expected.

[1] https://bugs.launchpad.net/manila/+bug/1885956

Depends-On: https://review.opendev.org/#/c/738941/
Change-Id: I567abccdaa622193b44a9b70bc0481842d8d55f1
Related-Bug: #1885956
diff --git a/manila_tempest_tests/tests/api/admin/test_share_types_negative.py b/manila_tempest_tests/tests/api/admin/test_share_types_negative.py
index 8bf4cb1..2018a70 100644
--- a/manila_tempest_tests/tests/api/admin/test_share_types_negative.py
+++ b/manila_tempest_tests/tests/api/admin/test_share_types_negative.py
@@ -128,3 +128,35 @@
             self.admin_shares_v2_client.remove_access_from_share_type,
             data_utils.rand_name("fake"),
             self.admin_shares_v2_client.tenant_id)
+
+    @decorators.idempotent_id('0fd53c51-e1ba-4392-9f4c-5d3bdd157163')
+    @tc.attr(base.TAG_NEGATIVE, base.TAG_BACKEND)
+    def test_create_share_with_non_allowed_share_type(self):
+        # Create a private share type
+        name = data_utils.rand_name('share-type')
+        share_type = self.create_share_type(
+            client=self.admin_shares_v2_client,
+            name=name, is_public=False,
+            extra_specs=self.add_extra_specs_to_dict())['share_type']
+
+        # The share type should not be listed without access
+        share_type_list = (
+            self.admin_shares_v2_client.list_share_types()['share_types'])
+        self.assertFalse(
+            any(share_type['id'] in st['id'] for st in share_type_list))
+
+        # List projects that have access for share type - none expected
+        access = self.admin_shares_v2_client.list_access_to_share_type(
+            share_type['id'])
+        self.assertEmpty(access)
+
+        # Although the share type should not be found on alt project,
+        # try to create a share with it by using the share type name
+        self.assertRaises(lib_exc.NotFound,
+                          self.alt_shares_v2_client.create_share,
+                          share_type_id=share_type['name'])
+
+        # The share should not be listed
+        share_list = self.alt_shares_v2_client.list_shares(detailed=True)
+        self.assertFalse(
+            any(share_type['id'] in s['share_type'] for s in share_list))