|
21 | 21 | class KeypairBase(base.TestCase): |
22 | 22 | """Methods for functional tests.""" |
23 | 23 |
|
24 | | - def keypair_create(self, name=data_utils.rand_uuid()): |
| 24 | + def keypair_create(self, name=data_utils.rand_uuid(), user=None): |
25 | 25 | """Create keypair and add cleanup.""" |
26 | | - raw_output = self.openstack('keypair create ' + name) |
27 | | - self.addCleanup(self.keypair_delete, name, True) |
| 26 | + cmd = 'keypair create ' + name |
| 27 | + if user is not None: |
| 28 | + cmd += ' --user ' + user |
| 29 | + raw_output = self.openstack(cmd) |
| 30 | + self.addCleanup( |
| 31 | + self.keypair_delete, name, ignore_exceptions=True, user=user |
| 32 | + ) |
28 | 33 | if not raw_output: |
29 | 34 | self.fail('Keypair has not been created!') |
| 35 | + return name |
30 | 36 |
|
31 | 37 | def keypair_list(self, params=''): |
32 | 38 | """Return dictionary with list of keypairs.""" |
33 | 39 | raw_output = self.openstack('keypair list') |
34 | 40 | keypairs = self.parse_show_as_object(raw_output) |
35 | 41 | return keypairs |
36 | 42 |
|
37 | | - def keypair_delete(self, name, ignore_exceptions=False): |
| 43 | + def keypair_delete(self, name, ignore_exceptions=False, user=None): |
38 | 44 | """Try to delete keypair by name.""" |
39 | 45 | try: |
40 | | - self.openstack('keypair delete ' + name) |
| 46 | + cmd = 'keypair delete ' + name |
| 47 | + if user is not None: |
| 48 | + cmd += ' --user ' + user |
| 49 | + self.openstack(cmd) |
41 | 50 | except exceptions.CommandFailed: |
42 | 51 | if not ignore_exceptions: |
43 | 52 | raise |
@@ -200,3 +209,30 @@ def test_keypair_show(self): |
200 | 209 | items = self.parse_listing(raw_output) |
201 | 210 | self.assert_table_structure(items, HEADERS) |
202 | 211 | self.assertInOutput(self.KPName, raw_output) |
| 212 | + |
| 213 | + def test_keypair_list_by_project(self): |
| 214 | + """Test keypair list by project. |
| 215 | +
|
| 216 | + Test steps: |
| 217 | + 1) Create keypair for admin project in setUp |
| 218 | + 2) Create a new project |
| 219 | + 3) Create a new user |
| 220 | + 4) Associate the new user with the new project |
| 221 | + 5) Create keypair for the new user |
| 222 | + 6) List keypairs by the new project |
| 223 | + 7) Check that only the keypair from step 5 is returned |
| 224 | + """ |
| 225 | + project_name = data_utils.rand_name('TestProject') |
| 226 | + self.openstack(f'project create {project_name}') |
| 227 | + self.addCleanup(self.openstack, f'project delete {project_name}') |
| 228 | + user_name = data_utils.rand_name('TestUser') |
| 229 | + self.openstack(f'user create {user_name}') |
| 230 | + self.addCleanup(self.openstack, f'user delete {user_name}') |
| 231 | + self.openstack( |
| 232 | + f'role add --user {user_name} --project {project_name} member' |
| 233 | + ) |
| 234 | + keypair_name = self.keypair_create(user=user_name) |
| 235 | + raw_output = self.openstack(f'keypair list --project {project_name}') |
| 236 | + items = self.parse_listing(raw_output) |
| 237 | + self.assertEqual(1, len(items)) |
| 238 | + self.assertEqual(keypair_name, items[0]['Name']) |
0 commit comments