blob: cb1de166692419470a6ba2b4f0730850522f96d9 [file] [log] [blame]
Andrea Frittoli (andreaf)9c798452015-10-09 13:38:20 +01001# Copyright 2015 Red Hat, Inc.
2#
3# Licensed under the Apache License, Version 2.0 (the "License"); you may
4# not use this file except in compliance with the License. You may obtain
5# a copy of the License at
6#
7# http://www.apache.org/licenses/LICENSE-2.0
8#
9# Unless required by applicable law or agreed to in writing, software
10# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
11# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
12# License for the specific language governing permissions and limitations
13# under the License.
14
15from oslo_config import cfg
16from oslotest import mockpatch
17
Andrea Frittoli (andreaf)290b3e12015-10-08 10:25:02 +010018from tempest.common import credentials_factory as credentials
Andrea Frittoli (andreaf)9c798452015-10-09 13:38:20 +010019from tempest import config
Andrea Frittoli (andreaf)9c798452015-10-09 13:38:20 +010020from tempest.tests import fake_config
Jordan Pittier41129042016-03-29 21:21:16 +020021from tempest.tests.lib import base
Andrea Frittoli (andreaf)9c798452015-10-09 13:38:20 +010022
23
24class TestAltAvailable(base.TestCase):
25
26 identity_version = 'v2'
27
28 def setUp(self):
29 super(TestAltAvailable, self).setUp()
30 self.useFixture(fake_config.ConfigFixture())
31 self.stubs.Set(config, 'TempestConfigPrivate', fake_config.FakePrivate)
32
33 def run_test(self, dynamic_creds, use_accounts_file, creds):
34
35 cfg.CONF.set_default('use_dynamic_credentials',
36 dynamic_creds, group='auth')
37 if use_accounts_file:
38 accounts = [dict(username="u%s" % ii,
Sean Dagueed6e5862016-04-04 10:49:13 -040039 project_name="t%s" % ii,
Andrea Frittoli (andreaf)9c798452015-10-09 13:38:20 +010040 password="p") for ii in creds]
41 self.useFixture(mockpatch.Patch(
42 'tempest.common.preprov_creds.read_accounts_yaml',
43 return_value=accounts))
44 cfg.CONF.set_default('test_accounts_file',
45 use_accounts_file, group='auth')
46 self.useFixture(mockpatch.Patch('os.path.isfile',
47 return_value=True))
48 else:
49 self.useFixture(mockpatch.Patch('os.path.isfile',
50 return_value=False))
51 cred_prefix = ['', 'alt_']
52 for ii in range(0, 2):
53 if len(creds) > ii:
54 username = 'u%s' % creds[ii]
Sean Dagueed6e5862016-04-04 10:49:13 -040055 project = 't%s' % creds[ii]
Andrea Frittoli (andreaf)9c798452015-10-09 13:38:20 +010056 password = 'p'
57 domain = 'd'
58 else:
59 username = None
Sean Dagueed6e5862016-04-04 10:49:13 -040060 project = None
Andrea Frittoli (andreaf)9c798452015-10-09 13:38:20 +010061 password = None
62 domain = None
63
64 cfg.CONF.set_default('%susername' % cred_prefix[ii], username,
65 group='identity')
Sean Dagueed6e5862016-04-04 10:49:13 -040066 cfg.CONF.set_default('%sproject_name' % cred_prefix[ii],
67 project, group='identity')
Andrea Frittoli (andreaf)9c798452015-10-09 13:38:20 +010068 cfg.CONF.set_default('%spassword' % cred_prefix[ii], password,
69 group='identity')
70 cfg.CONF.set_default('%sdomain_name' % cred_prefix[ii], domain,
71 group='identity')
72
73 expected = len(set(creds)) > 1 or dynamic_creds
74 observed = credentials.is_alt_available(
75 identity_version=self.identity_version)
76 self.assertEqual(expected, observed)
77
78 # Dynamic credentials implies alt so only one test case for True
79 def test__dynamic_creds__accounts_file__one_user(self):
80 self.run_test(dynamic_creds=True,
81 use_accounts_file=False,
82 creds=['1', '2'])
83
84 def test__no_dynamic_creds__accounts_file__one_user(self):
85 self.run_test(dynamic_creds=False,
86 use_accounts_file=True,
87 creds=['1'])
88
89 def test__no_dynamic_creds__accounts_file__two_users(self):
90 self.run_test(dynamic_creds=False,
91 use_accounts_file=True,
92 creds=['1', '2'])
93
94 def test__no_dynamic_creds__accounts_file__two_users_identical(self):
95 self.run_test(dynamic_creds=False,
96 use_accounts_file=True,
97 creds=['1', '1'])
98
99 def test__no_dynamic_creds__no_accounts_file__one_user(self):
100 self.run_test(dynamic_creds=False,
101 use_accounts_file=False,
102 creds=['1'])
103
104 def test__no_dynamic_creds__no_accounts_file__two_users(self):
105 self.run_test(dynamic_creds=False,
106 use_accounts_file=False,
107 creds=['1', '2'])
108
109 def test__no_dynamic_creds__no_accounts_file__two_users_identical(self):
110 self.run_test(dynamic_creds=False,
111 use_accounts_file=False,
112 creds=['1', '1'])
113
114
115class TestAltAvailableV3(TestAltAvailable):
116
117 identity_version = 'v3'