blob: 01a9cd04433c4e3a53618992d5a9b49abe8beb81 [file] [log] [blame]
David Kranz8d1a0dc2015-03-13 11:43:37 -04001# 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
Doug Hellmannd5205022015-05-06 19:59:05 +000015from oslo_config import cfg
David Kranz8d1a0dc2015-03-13 11:43:37 -040016from oslotest import mockpatch
17
Andrea Frittoli (andreaf)290b3e12015-10-08 10:25:02 +010018from tempest.common import credentials_factory as credentials
David Kranz8d1a0dc2015-03-13 11:43:37 -040019from tempest import config
Matthew Treinishffad78a2016-04-16 14:39:52 -040020from tempest.tests import base
David Kranz8d1a0dc2015-03-13 11:43:37 -040021from tempest.tests import fake_config
22
23
24class TestAdminAvailable(base.TestCase):
25
Andrea Frittoli (andreaf)32d0de12015-10-09 14:43:53 +010026 identity_version = 'v2'
27
David Kranz8d1a0dc2015-03-13 11:43:37 -040028 def setUp(self):
29 super(TestAdminAvailable, self).setUp()
30 self.useFixture(fake_config.ConfigFixture())
Jordan Pittier0021c292016-03-29 21:33:34 +020031 self.patchobject(config, 'TempestConfigPrivate',
32 fake_config.FakePrivate)
David Kranz8d1a0dc2015-03-13 11:43:37 -040033
Andrea Frittoli (andreaf)9c798452015-10-09 13:38:20 +010034 def run_test(self, dynamic_creds, use_accounts_file, admin_creds):
David Kranz8d1a0dc2015-03-13 11:43:37 -040035
Andrea Frittoli (andreaf)17209bb2015-05-22 10:16:57 -070036 cfg.CONF.set_default('use_dynamic_credentials',
Andrea Frittoli (andreaf)9c798452015-10-09 13:38:20 +010037 dynamic_creds, group='auth')
David Kranz8d1a0dc2015-03-13 11:43:37 -040038 if use_accounts_file:
39 accounts = [{'username': 'u1',
Sean Dagueed6e5862016-04-04 10:49:13 -040040 'project_name': 't1',
David Kranz8d1a0dc2015-03-13 11:43:37 -040041 'password': 'p'},
42 {'username': 'u2',
Sean Dagueed6e5862016-04-04 10:49:13 -040043 'project_name': 't2',
David Kranz8d1a0dc2015-03-13 11:43:37 -040044 'password': 'p'}]
45 if admin_creds == 'role':
46 accounts.append({'username': 'admin',
Sean Dagueed6e5862016-04-04 10:49:13 -040047 'project_name': 'admin',
David Kranz8d1a0dc2015-03-13 11:43:37 -040048 'password': 'p',
49 'roles': ['admin']})
50 elif admin_creds == 'type':
51 accounts.append({'username': 'admin',
Sean Dagueed6e5862016-04-04 10:49:13 -040052 'project_name': 'admin',
David Kranz8d1a0dc2015-03-13 11:43:37 -040053 'password': 'p',
54 'types': ['admin']})
55 self.useFixture(mockpatch.Patch(
Andrea Frittoli (andreaf)f9e01262015-05-22 10:24:12 -070056 'tempest.common.preprov_creds.read_accounts_yaml',
David Kranz8d1a0dc2015-03-13 11:43:37 -040057 return_value=accounts))
Aaron Rosen48070042015-03-30 16:17:11 -070058 cfg.CONF.set_default('test_accounts_file',
59 use_accounts_file, group='auth')
David Kranz8d1a0dc2015-03-13 11:43:37 -040060 self.useFixture(mockpatch.Patch('os.path.isfile',
61 return_value=True))
62 else:
63 self.useFixture(mockpatch.Patch('os.path.isfile',
64 return_value=False))
65 if admin_creds:
Andrea Frittoli (andreaf)9c798452015-10-09 13:38:20 +010066 username = 'u'
Sean Dagueed6e5862016-04-04 10:49:13 -040067 project = 't'
Andrea Frittoli (andreaf)9c798452015-10-09 13:38:20 +010068 password = 'p'
69 domain = 'd'
David Kranz8d1a0dc2015-03-13 11:43:37 -040070 else:
Andrea Frittoli (andreaf)9c798452015-10-09 13:38:20 +010071 username = None
Sean Dagueed6e5862016-04-04 10:49:13 -040072 project = None
Andrea Frittoli (andreaf)9c798452015-10-09 13:38:20 +010073 password = None
74 domain = None
David Kranz8d1a0dc2015-03-13 11:43:37 -040075
Andrea Frittoli (andreaf)9c798452015-10-09 13:38:20 +010076 cfg.CONF.set_default('admin_username', username, group='auth')
Sean Dagueed6e5862016-04-04 10:49:13 -040077 cfg.CONF.set_default('admin_project_name', project, group='auth')
Andrea Frittoli (andreaf)9c798452015-10-09 13:38:20 +010078 cfg.CONF.set_default('admin_password', password, group='auth')
79 cfg.CONF.set_default('admin_domain_name', domain, group='auth')
David Kranz8d1a0dc2015-03-13 11:43:37 -040080
Andrea Frittoli (andreaf)9c798452015-10-09 13:38:20 +010081 expected = admin_creds is not None or dynamic_creds
Andrea Frittoli (andreaf)32d0de12015-10-09 14:43:53 +010082 observed = credentials.is_admin_available(
83 identity_version=self.identity_version)
David Kranz8d1a0dc2015-03-13 11:43:37 -040084 self.assertEqual(expected, observed)
85
Andrea Frittoli (andreaf)9c798452015-10-09 13:38:20 +010086 # Dynamic credentials implies admin so only one test case for True
87 def test__dynamic_creds__accounts_file__no_admin(self):
88 self.run_test(dynamic_creds=True,
David Kranz8d1a0dc2015-03-13 11:43:37 -040089 use_accounts_file=True,
90 admin_creds=None)
91
Andrea Frittoli (andreaf)9c798452015-10-09 13:38:20 +010092 def test__no_dynamic_creds__accounts_file__no_admin(self):
93 self.run_test(dynamic_creds=False,
David Kranz8d1a0dc2015-03-13 11:43:37 -040094 use_accounts_file=True,
95 admin_creds=None)
96
Andrea Frittoli (andreaf)9c798452015-10-09 13:38:20 +010097 def test__no_dynamic_creds__accounts_file__admin_role(self):
98 self.run_test(dynamic_creds=False,
David Kranz8d1a0dc2015-03-13 11:43:37 -040099 use_accounts_file=True,
100 admin_creds='role')
101
Andrea Frittoli (andreaf)9c798452015-10-09 13:38:20 +0100102 def test__no_dynamic_creds__accounts_file__admin_type(self):
103 self.run_test(dynamic_creds=False,
David Kranz8d1a0dc2015-03-13 11:43:37 -0400104 use_accounts_file=True,
105 admin_creds='type')
106
Andrea Frittoli (andreaf)9c798452015-10-09 13:38:20 +0100107 def test__no_dynamic_creds__no_accounts_file__no_admin(self):
108 self.run_test(dynamic_creds=False,
David Kranz8d1a0dc2015-03-13 11:43:37 -0400109 use_accounts_file=False,
110 admin_creds=None)
111
Andrea Frittoli (andreaf)9c798452015-10-09 13:38:20 +0100112 def test__no_dynamic_creds__no_accounts_file__admin(self):
113 self.run_test(dynamic_creds=False,
David Kranz8d1a0dc2015-03-13 11:43:37 -0400114 use_accounts_file=False,
115 admin_creds='role')
Andrea Frittoli (andreaf)32d0de12015-10-09 14:43:53 +0100116
117
118class TestAdminAvailableV3(TestAdminAvailable):
119
120 identity_version = 'v3'