Fix unit tests for migration

Prepare credential providers unit tests for migration:
- move dynamic_creds tests to the right folder
- rename tenant_isolation variable to dynamic_creds in admin_available
- create missing tests for alt_available

Change-Id: Ib8dcdd1671b3d107a6358b8b0b5a1639485161c5
diff --git a/tempest/tests/common/test_admin_available.py b/tempest/tests/common/test_admin_available.py
index 709ca6f..a53ed5f 100644
--- a/tempest/tests/common/test_admin_available.py
+++ b/tempest/tests/common/test_admin_available.py
@@ -30,10 +30,10 @@
         self.useFixture(fake_config.ConfigFixture())
         self.stubs.Set(config, 'TempestConfigPrivate', fake_config.FakePrivate)
 
-    def run_test(self, tenant_isolation, use_accounts_file, admin_creds):
+    def run_test(self, dynamic_creds, use_accounts_file, admin_creds):
 
         cfg.CONF.set_default('use_dynamic_credentials',
-                             tenant_isolation, group='auth')
+                             dynamic_creds, group='auth')
         if use_accounts_file:
             accounts = [{'username': 'u1',
                          'tenant_name': 't1',
@@ -62,48 +62,54 @@
             self.useFixture(mockpatch.Patch('os.path.isfile',
                                             return_value=False))
             if admin_creds:
-                (u, t, p, d) = ('u', 't', 'p', 'd')
+                username = 'u'
+                tenant = 't'
+                password = 'p'
+                domain = 'd'
             else:
-                (u, t, p, d) = (None, None, None, None)
+                username = None
+                tenant = None
+                password = None
+                domain = None
 
-            cfg.CONF.set_default('admin_username', u, group='auth')
-            cfg.CONF.set_default('admin_tenant_name', t, group='auth')
-            cfg.CONF.set_default('admin_password', p, group='auth')
-            cfg.CONF.set_default('admin_domain_name', d, group='auth')
+            cfg.CONF.set_default('admin_username', username, group='auth')
+            cfg.CONF.set_default('admin_tenant_name', tenant, group='auth')
+            cfg.CONF.set_default('admin_password', password, group='auth')
+            cfg.CONF.set_default('admin_domain_name', domain, group='auth')
 
-        expected = admin_creds is not None or tenant_isolation
+        expected = admin_creds is not None or dynamic_creds
         observed = credentials.is_admin_available(
             identity_version=self.identity_version)
         self.assertEqual(expected, observed)
 
-    # Tenant isolation implies admin so only one test case for True
-    def test__tenant_isolation__accounts_file__no_admin(self):
-        self.run_test(tenant_isolation=True,
+    # Dynamic credentials implies admin so only one test case for True
+    def test__dynamic_creds__accounts_file__no_admin(self):
+        self.run_test(dynamic_creds=True,
                       use_accounts_file=True,
                       admin_creds=None)
 
-    def test__no_tenant_isolation__accounts_file__no_admin(self):
-        self.run_test(tenant_isolation=False,
+    def test__no_dynamic_creds__accounts_file__no_admin(self):
+        self.run_test(dynamic_creds=False,
                       use_accounts_file=True,
                       admin_creds=None)
 
-    def test__no_tenant_isolation__accounts_file__admin_role(self):
-        self.run_test(tenant_isolation=False,
+    def test__no_dynamic_creds__accounts_file__admin_role(self):
+        self.run_test(dynamic_creds=False,
                       use_accounts_file=True,
                       admin_creds='role')
 
-    def test__no_tenant_isolation__accounts_file__admin_type(self):
-        self.run_test(tenant_isolation=False,
+    def test__no_dynamic_creds__accounts_file__admin_type(self):
+        self.run_test(dynamic_creds=False,
                       use_accounts_file=True,
                       admin_creds='type')
 
-    def test__no_tenant_isolation__no_accounts_file__no_admin(self):
-        self.run_test(tenant_isolation=False,
+    def test__no_dynamic_creds__no_accounts_file__no_admin(self):
+        self.run_test(dynamic_creds=False,
                       use_accounts_file=False,
                       admin_creds=None)
 
-    def test__no_tenant_isolation__no_accounts_file__admin(self):
-        self.run_test(tenant_isolation=False,
+    def test__no_dynamic_creds__no_accounts_file__admin(self):
+        self.run_test(dynamic_creds=False,
                       use_accounts_file=False,
                       admin_creds='role')
 
diff --git a/tempest/tests/common/test_alt_available.py b/tempest/tests/common/test_alt_available.py
new file mode 100644
index 0000000..6a86f73
--- /dev/null
+++ b/tempest/tests/common/test_alt_available.py
@@ -0,0 +1,117 @@
+# Copyright 2015 Red Hat, Inc.
+#
+#    Licensed under the Apache License, Version 2.0 (the "License"); you may
+#    not use this file except in compliance with the License. You may obtain
+#    a copy of the License at
+#
+#         http://www.apache.org/licenses/LICENSE-2.0
+#
+#    Unless required by applicable law or agreed to in writing, software
+#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+#    License for the specific language governing permissions and limitations
+#    under the License.
+
+from oslo_config import cfg
+from oslotest import mockpatch
+
+from tempest.common import credentials
+from tempest import config
+from tempest.tests import base
+from tempest.tests import fake_config
+
+
+class TestAltAvailable(base.TestCase):
+
+    identity_version = 'v2'
+
+    def setUp(self):
+        super(TestAltAvailable, self).setUp()
+        self.useFixture(fake_config.ConfigFixture())
+        self.stubs.Set(config, 'TempestConfigPrivate', fake_config.FakePrivate)
+
+    def run_test(self, dynamic_creds, use_accounts_file, creds):
+
+        cfg.CONF.set_default('use_dynamic_credentials',
+                             dynamic_creds, group='auth')
+        if use_accounts_file:
+            accounts = [dict(username="u%s" % ii,
+                             tenant_name="t%s" % ii,
+                             password="p") for ii in creds]
+            self.useFixture(mockpatch.Patch(
+                'tempest.common.preprov_creds.read_accounts_yaml',
+                return_value=accounts))
+            cfg.CONF.set_default('test_accounts_file',
+                                 use_accounts_file, group='auth')
+            self.useFixture(mockpatch.Patch('os.path.isfile',
+                                            return_value=True))
+        else:
+            self.useFixture(mockpatch.Patch('os.path.isfile',
+                                            return_value=False))
+            cred_prefix = ['', 'alt_']
+            for ii in range(0, 2):
+                if len(creds) > ii:
+                    username = 'u%s' % creds[ii]
+                    tenant = 't%s' % creds[ii]
+                    password = 'p'
+                    domain = 'd'
+                else:
+                    username = None
+                    tenant = None
+                    password = None
+                    domain = None
+
+                cfg.CONF.set_default('%susername' % cred_prefix[ii], username,
+                                     group='identity')
+                cfg.CONF.set_default('%stenant_name' % cred_prefix[ii], tenant,
+                                     group='identity')
+                cfg.CONF.set_default('%spassword' % cred_prefix[ii], password,
+                                     group='identity')
+                cfg.CONF.set_default('%sdomain_name' % cred_prefix[ii], domain,
+                                     group='identity')
+
+        expected = len(set(creds)) > 1 or dynamic_creds
+        observed = credentials.is_alt_available(
+            identity_version=self.identity_version)
+        self.assertEqual(expected, observed)
+
+    # Dynamic credentials implies alt so only one test case for True
+    def test__dynamic_creds__accounts_file__one_user(self):
+        self.run_test(dynamic_creds=True,
+                      use_accounts_file=False,
+                      creds=['1', '2'])
+
+    def test__no_dynamic_creds__accounts_file__one_user(self):
+        self.run_test(dynamic_creds=False,
+                      use_accounts_file=True,
+                      creds=['1'])
+
+    def test__no_dynamic_creds__accounts_file__two_users(self):
+        self.run_test(dynamic_creds=False,
+                      use_accounts_file=True,
+                      creds=['1', '2'])
+
+    def test__no_dynamic_creds__accounts_file__two_users_identical(self):
+        self.run_test(dynamic_creds=False,
+                      use_accounts_file=True,
+                      creds=['1', '1'])
+
+    def test__no_dynamic_creds__no_accounts_file__one_user(self):
+        self.run_test(dynamic_creds=False,
+                      use_accounts_file=False,
+                      creds=['1'])
+
+    def test__no_dynamic_creds__no_accounts_file__two_users(self):
+        self.run_test(dynamic_creds=False,
+                      use_accounts_file=False,
+                      creds=['1', '2'])
+
+    def test__no_dynamic_creds__no_accounts_file__two_users_identical(self):
+        self.run_test(dynamic_creds=False,
+                      use_accounts_file=False,
+                      creds=['1', '1'])
+
+
+class TestAltAvailableV3(TestAltAvailable):
+
+    identity_version = 'v3'
diff --git a/tempest/tests/test_dynamic_creds.py b/tempest/tests/common/test_dynamic_creds.py
similarity index 100%
rename from tempest/tests/test_dynamic_creds.py
rename to tempest/tests/common/test_dynamic_creds.py