blob: 6bb0ebec0c9e259daeb48e4a298c6fb9bfc01422 [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
Masayuki Igawa259c1132013-10-31 17:48:44 +090017from 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 _interface = 'json'
23
24 @classmethod
Masayuki Igawadf154682014-03-19 18:32:00 +090025 @test.safe_setup
nayna-patel914b4712013-07-16 08:29:05 +000026 def setUpClass(cls):
27 super(CredentialsTestJSON, cls).setUpClass()
28 cls.projects = list()
29 cls.creds_list = [['project_id', 'user_id', 'id'],
30 ['access', 'secret']]
Masayuki Igawa259c1132013-10-31 17:48:44 +090031 u_name = data_utils.rand_name('user-')
nayna-patel914b4712013-07-16 08:29:05 +000032 u_desc = '%s description' % u_name
33 u_email = '%s@testmail.tm' % u_name
Masayuki Igawa259c1132013-10-31 17:48:44 +090034 u_password = data_utils.rand_name('pass-')
nayna-patel914b4712013-07-16 08:29:05 +000035 for i in range(2):
Matthew Treinishdb2c5972014-01-31 22:18:59 +000036 resp, cls.project = cls.client.create_project(
Masayuki Igawa259c1132013-10-31 17:48:44 +090037 data_utils.rand_name('project-'),
38 description=data_utils.rand_name('project-desc-'))
Tushar Kalraed260612014-03-24 10:57:01 -070039 assert resp['status'] == '201', (
40 "Expected 201, but got: %s" % resp['status'])
nayna-patel914b4712013-07-16 08:29:05 +000041 cls.projects.append(cls.project['id'])
42
Matthew Treinishdb2c5972014-01-31 22:18:59 +000043 resp, cls.user_body = cls.client.create_user(
nayna-patel914b4712013-07-16 08:29:05 +000044 u_name, description=u_desc, password=u_password,
45 email=u_email, project_id=cls.projects[0])
Tushar Kalraed260612014-03-24 10:57:01 -070046 assert resp['status'] == '201', (
47 "Expected 201, but got: %s" % resp['status'])
nayna-patel914b4712013-07-16 08:29:05 +000048
49 @classmethod
50 def tearDownClass(cls):
Matthew Treinishdb2c5972014-01-31 22:18:59 +000051 resp, _ = cls.client.delete_user(cls.user_body['id'])
Tushar Kalraed260612014-03-24 10:57:01 -070052 assert resp['status'] == '204', (
53 "Expected 204, but got: %s" % resp['status'])
nayna-patel914b4712013-07-16 08:29:05 +000054 for p in cls.projects:
Matthew Treinishdb2c5972014-01-31 22:18:59 +000055 resp, _ = cls.client.delete_project(p)
Tushar Kalraed260612014-03-24 10:57:01 -070056 assert resp['status'] == '204', (
57 "Expected 204, but got: %s" % resp['status'])
nayna-patel914b4712013-07-16 08:29:05 +000058 super(CredentialsTestJSON, cls).tearDownClass()
59
60 def _delete_credential(self, cred_id):
61 resp, body = self.creds_client.delete_credential(cred_id)
62 self.assertEqual(resp['status'], '204')
63
Masayuki Igawadf154682014-03-19 18:32:00 +090064 @test.attr(type='smoke')
nayna-patel914b4712013-07-16 08:29:05 +000065 def test_credentials_create_get_update_delete(self):
Masayuki Igawa259c1132013-10-31 17:48:44 +090066 keys = [data_utils.rand_name('Access-'),
67 data_utils.rand_name('Secret-')]
nayna-patel914b4712013-07-16 08:29:05 +000068 resp, cred = self.creds_client.create_credential(
69 keys[0], keys[1], self.user_body['id'],
70 self.projects[0])
71 self.addCleanup(self._delete_credential, cred['id'])
72 self.assertEqual(resp['status'], '201')
73 for value1 in self.creds_list[0]:
74 self.assertIn(value1, cred)
75 for value2 in self.creds_list[1]:
76 self.assertIn(value2, cred['blob'])
77
Masayuki Igawa259c1132013-10-31 17:48:44 +090078 new_keys = [data_utils.rand_name('NewAccess-'),
79 data_utils.rand_name('NewSecret-')]
nayna-patel914b4712013-07-16 08:29:05 +000080 resp, update_body = self.creds_client.update_credential(
81 cred['id'], access_key=new_keys[0], secret_key=new_keys[1],
82 project_id=self.projects[1])
83 self.assertEqual(resp['status'], '200')
84 self.assertEqual(cred['id'], update_body['id'])
85 self.assertEqual(self.projects[1], update_body['project_id'])
86 self.assertEqual(self.user_body['id'], update_body['user_id'])
87 self.assertEqual(update_body['blob']['access'], new_keys[0])
88 self.assertEqual(update_body['blob']['secret'], new_keys[1])
89
90 resp, get_body = self.creds_client.get_credential(cred['id'])
91 self.assertEqual(resp['status'], '200')
92 for value1 in self.creds_list[0]:
93 self.assertEqual(update_body[value1],
94 get_body[value1])
95 for value2 in self.creds_list[1]:
96 self.assertEqual(update_body['blob'][value2],
97 get_body['blob'][value2])
98
Masayuki Igawadf154682014-03-19 18:32:00 +090099 @test.attr(type='smoke')
nayna-patel914b4712013-07-16 08:29:05 +0000100 def test_credentials_list_delete(self):
101 created_cred_ids = list()
102 fetched_cred_ids = list()
103
104 for i in range(2):
105 resp, cred = self.creds_client.create_credential(
Masayuki Igawa259c1132013-10-31 17:48:44 +0900106 data_utils.rand_name('Access-'),
107 data_utils.rand_name('Secret-'),
nayna-patel914b4712013-07-16 08:29:05 +0000108 self.user_body['id'], self.projects[0])
109 self.assertEqual(resp['status'], '201')
110 created_cred_ids.append(cred['id'])
111 self.addCleanup(self._delete_credential, cred['id'])
112
113 resp, creds = self.creds_client.list_credentials()
114 self.assertEqual(resp['status'], '200')
115
116 for i in creds:
117 fetched_cred_ids.append(i['id'])
118 missing_creds = [c for c in created_cred_ids
119 if c not in fetched_cred_ids]
120 self.assertEqual(0, len(missing_creds),
121 "Failed to find cred %s in fetched list" %
DennyZhangb432bac2013-09-17 16:24:12 +0000122 ', '.join(m_cred for m_cred in missing_creds))
nayna-patel914b4712013-07-16 08:29:05 +0000123
124
125class CredentialsTestXML(CredentialsTestJSON):
126 _interface = 'xml'