blob: d22b27fa79e2d5a5066332f05c0a49aabcbad849 [file] [log] [blame]
nayna-patel914b4712013-07-16 08:29:05 +00001# Copyright 2013 OpenStack Foundation
2# All Rights Reserved.
3#
4# Licensed under the Apache License, Version 2.0 (the "License"); you may
5# not use this file except in compliance with the License. You may obtain
6# a copy of the License at
7#
8# http://www.apache.org/licenses/LICENSE-2.0
9#
10# Unless required by applicable law or agreed to in writing, software
11# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
12# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
13# License for the specific language governing permissions and limitations
14# under the License.
15
16from tempest.api.identity import base
Fei Long Wangd39431f2015-05-14 11:30:48 +120017from tempest.common.utils import data_utils
Masayuki Igawadf154682014-03-19 18:32:00 +090018from tempest import test
nayna-patel914b4712013-07-16 08:29:05 +000019
20
Matthew Treinishdb2c5972014-01-31 22:18:59 +000021class CredentialsTestJSON(base.BaseIdentityV3AdminTest):
nayna-patel914b4712013-07-16 08:29:05 +000022
23 @classmethod
Andrea Frittoli7688e742014-09-15 12:38:22 +010024 def resource_setup(cls):
25 super(CredentialsTestJSON, cls).resource_setup()
nayna-patel914b4712013-07-16 08:29:05 +000026 cls.projects = list()
27 cls.creds_list = [['project_id', 'user_id', 'id'],
28 ['access', 'secret']]
Ken'ichi Ohmichi96508472015-03-23 01:43:42 +000029 u_name = data_utils.rand_name('user')
nayna-patel914b4712013-07-16 08:29:05 +000030 u_desc = '%s description' % u_name
31 u_email = '%s@testmail.tm' % u_name
Ken'ichi Ohmichi96508472015-03-23 01:43:42 +000032 u_password = data_utils.rand_name('pass')
nayna-patel914b4712013-07-16 08:29:05 +000033 for i in range(2):
David Kranzd8ccb792014-12-29 11:32:05 -050034 cls.project = cls.client.create_project(
Ken'ichi Ohmichi96508472015-03-23 01:43:42 +000035 data_utils.rand_name('project'),
John Warren56317e02015-08-12 20:48:32 +000036 description=data_utils.rand_name('project-desc'))['project']
nayna-patel914b4712013-07-16 08:29:05 +000037 cls.projects.append(cls.project['id'])
38
David Kranzd8ccb792014-12-29 11:32:05 -050039 cls.user_body = cls.client.create_user(
nayna-patel914b4712013-07-16 08:29:05 +000040 u_name, description=u_desc, password=u_password,
John Warren56317e02015-08-12 20:48:32 +000041 email=u_email, project_id=cls.projects[0])['user']
nayna-patel914b4712013-07-16 08:29:05 +000042
43 @classmethod
Andrea Frittoli7688e742014-09-15 12:38:22 +010044 def resource_cleanup(cls):
David Kranze9d2f422014-07-02 13:57:41 -040045 cls.client.delete_user(cls.user_body['id'])
nayna-patel914b4712013-07-16 08:29:05 +000046 for p in cls.projects:
David Kranze9d2f422014-07-02 13:57:41 -040047 cls.client.delete_project(p)
Andrea Frittoli7688e742014-09-15 12:38:22 +010048 super(CredentialsTestJSON, cls).resource_cleanup()
nayna-patel914b4712013-07-16 08:29:05 +000049
50 def _delete_credential(self, cred_id):
David Kranz2aaf5312014-08-29 09:22:10 -040051 self.creds_client.delete_credential(cred_id)
nayna-patel914b4712013-07-16 08:29:05 +000052
Masayuki Igawadf154682014-03-19 18:32:00 +090053 @test.attr(type='smoke')
Chris Hoge7579c1a2015-02-26 14:12:15 -080054 @test.idempotent_id('7cd59bf9-bda4-4c72-9467-d21cab278355')
nayna-patel914b4712013-07-16 08:29:05 +000055 def test_credentials_create_get_update_delete(self):
Ken'ichi Ohmichi96508472015-03-23 01:43:42 +000056 keys = [data_utils.rand_name('Access'),
57 data_utils.rand_name('Secret')]
David Kranzd8ccb792014-12-29 11:32:05 -050058 cred = self.creds_client.create_credential(
nayna-patel914b4712013-07-16 08:29:05 +000059 keys[0], keys[1], self.user_body['id'],
John Warrenf3ac5cc2015-08-10 18:06:43 +000060 self.projects[0])['credential']
nayna-patel914b4712013-07-16 08:29:05 +000061 self.addCleanup(self._delete_credential, cred['id'])
nayna-patel914b4712013-07-16 08:29:05 +000062 for value1 in self.creds_list[0]:
63 self.assertIn(value1, cred)
64 for value2 in self.creds_list[1]:
65 self.assertIn(value2, cred['blob'])
66
Ken'ichi Ohmichi96508472015-03-23 01:43:42 +000067 new_keys = [data_utils.rand_name('NewAccess'),
68 data_utils.rand_name('NewSecret')]
David Kranzd8ccb792014-12-29 11:32:05 -050069 update_body = self.creds_client.update_credential(
nayna-patel914b4712013-07-16 08:29:05 +000070 cred['id'], access_key=new_keys[0], secret_key=new_keys[1],
John Warrenf3ac5cc2015-08-10 18:06:43 +000071 project_id=self.projects[1])['credential']
nayna-patel914b4712013-07-16 08:29:05 +000072 self.assertEqual(cred['id'], update_body['id'])
73 self.assertEqual(self.projects[1], update_body['project_id'])
74 self.assertEqual(self.user_body['id'], update_body['user_id'])
75 self.assertEqual(update_body['blob']['access'], new_keys[0])
76 self.assertEqual(update_body['blob']['secret'], new_keys[1])
77
John Warrenf3ac5cc2015-08-10 18:06:43 +000078 get_body = self.creds_client.get_credential(cred['id'])['credential']
nayna-patel914b4712013-07-16 08:29:05 +000079 for value1 in self.creds_list[0]:
80 self.assertEqual(update_body[value1],
81 get_body[value1])
82 for value2 in self.creds_list[1]:
83 self.assertEqual(update_body['blob'][value2],
84 get_body['blob'][value2])
85
Chris Hoge7579c1a2015-02-26 14:12:15 -080086 @test.idempotent_id('13202c00-0021-42a1-88d4-81b44d448aab')
nayna-patel914b4712013-07-16 08:29:05 +000087 def test_credentials_list_delete(self):
88 created_cred_ids = list()
89 fetched_cred_ids = list()
90
91 for i in range(2):
David Kranzd8ccb792014-12-29 11:32:05 -050092 cred = self.creds_client.create_credential(
Ken'ichi Ohmichi96508472015-03-23 01:43:42 +000093 data_utils.rand_name('Access'),
94 data_utils.rand_name('Secret'),
John Warrenf3ac5cc2015-08-10 18:06:43 +000095 self.user_body['id'], self.projects[0])['credential']
nayna-patel914b4712013-07-16 08:29:05 +000096 created_cred_ids.append(cred['id'])
97 self.addCleanup(self._delete_credential, cred['id'])
98
John Warrenf3ac5cc2015-08-10 18:06:43 +000099 creds = self.creds_client.list_credentials()['credentials']
nayna-patel914b4712013-07-16 08:29:05 +0000100
101 for i in creds:
102 fetched_cred_ids.append(i['id'])
103 missing_creds = [c for c in created_cred_ids
104 if c not in fetched_cred_ids]
105 self.assertEqual(0, len(missing_creds),
106 "Failed to find cred %s in fetched list" %
DennyZhangb432bac2013-09-17 16:24:12 +0000107 ', '.join(m_cred for m_cred in missing_creds))