Skip to content

Commit 686a269

Browse files
committed
Add "token revoke" for identity v3
Change-Id: Ie631600d02942fe6ce035f31af46abe44e543631 Closes-bug: #1543226
1 parent 624c39a commit 686a269

6 files changed

Lines changed: 48 additions & 2 deletions

File tree

doc/source/command-objects/token.rst

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,6 @@ Issue new token
1717
token revoke
1818
------------
1919

20-
*Identity version 2 only.*
21-
2220
Revoke existing token
2321

2422
.. program:: token revoke

openstackclient/identity/v3/token.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -173,3 +173,22 @@ def take_action(self, parsed_args):
173173
if 'tenant_id' in token:
174174
token['project_id'] = token.pop('tenant_id')
175175
return zip(*sorted(six.iteritems(token)))
176+
177+
178+
class RevokeToken(command.Command):
179+
"""Revoke existing token"""
180+
181+
def get_parser(self, prog_name):
182+
parser = super(RevokeToken, self).get_parser(prog_name)
183+
parser.add_argument(
184+
'token',
185+
metavar='<token>',
186+
help='Token to be deleted',
187+
)
188+
return parser
189+
190+
def take_action(self, parsed_args):
191+
identity_client = self.app.client_manager.identity
192+
193+
identity_client.tokens.revoke_token(parsed_args.token)
194+
return

openstackclient/tests/identity/v3/fakes.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -420,6 +420,8 @@ def __init__(self, **kwargs):
420420
self.session = mock.Mock()
421421
self.session.auth.auth_ref.service_catalog.resource_class = \
422422
fakes.FakeResource(None, {})
423+
self.tokens = mock.Mock()
424+
self.tokens.resource_class = fakes.FakeResource(None, {})
423425
self.trusts = mock.Mock()
424426
self.trusts.resource_class = fakes.FakeResource(None, {})
425427
self.users = mock.Mock()

openstackclient/tests/identity/v3/test_token.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,3 +80,24 @@ def test_token_issue_with_domain_id(self):
8080
identity_fakes.user_id,
8181
)
8282
self.assertEqual(datalist, data)
83+
84+
85+
class TestTokenRevoke(TestToken):
86+
87+
TOKEN = 'fob'
88+
89+
def setUp(self):
90+
super(TestTokenRevoke, self).setUp()
91+
self.tokens_mock = self.app.client_manager.identity.tokens
92+
self.tokens_mock.reset_mock()
93+
self.tokens_mock.revoke_token.return_value = True
94+
self.cmd = token.RevokeToken(self.app, None)
95+
96+
def test_token_revoke(self):
97+
arglist = [self.TOKEN]
98+
verifylist = [('token', self.TOKEN)]
99+
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
100+
101+
self.cmd.take_action(parsed_args)
102+
103+
self.tokens_mock.revoke_token.assert_called_with(self.TOKEN)
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
features:
3+
- |
4+
Add ``token revoke`` command for Identity v3
5+
[Bug `1543226 <https://bugs.launchpad.net/bugs/1543226>`_]

setup.cfg

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -295,6 +295,7 @@ openstack.identity.v3 =
295295
service_provider_show = openstackclient.identity.v3.service_provider:ShowServiceProvider
296296

297297
token_issue = openstackclient.identity.v3.token:IssueToken
298+
token_revoke = openstackclient.identity.v3.token:RevokeToken
298299

299300
trust_create = openstackclient.identity.v3.trust:CreateTrust
300301
trust_delete = openstackclient.identity.v3.trust:DeleteTrust

0 commit comments

Comments
 (0)