Skip to content

Commit d9c217e

Browse files
author
Steve Martinelli
committed
Request token authorize
Command doc and tweaks to the code Change-Id: I8f251bf9ca77f16b01a509844e79ddde82048b0d
1 parent f8d4dd2 commit d9c217e

3 files changed

Lines changed: 46 additions & 12 deletions

File tree

‎doc/source/command-objects/request-token.rst‎

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,26 @@ Identity v3
66

77
`Requires: OS-OAUTH1 extension`
88

9+
request token authorize
10+
-----------------------
11+
12+
Authorize a request token
13+
14+
.. program:: request token authorize
15+
.. code:: bash
16+
17+
os request token authorize
18+
--request-key <consumer-key>
19+
--role <role>
20+
21+
.. option:: --request-key <request-key>
22+
23+
Request token to authorize (ID only) (required)
24+
25+
.. option:: --role <role>
26+
27+
Roles to authorize (name or ID) (repeat to set multiple values) (required)
28+
929
request token create
1030
--------------------
1131

‎openstackclient/identity/v3/token.py‎

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525

2626

2727
class AuthorizeRequestToken(show.ShowOne):
28-
"""Authorize request token"""
28+
"""Authorize a request token"""
2929

3030
log = logging.getLogger(__name__ + '.AuthorizeRequestToken')
3131

@@ -34,13 +34,16 @@ def get_parser(self, prog_name):
3434
parser.add_argument(
3535
'--request-key',
3636
metavar='<request-key>',
37-
help='Request token key',
37+
help='Request token to authorize (ID only) (required)',
3838
required=True
3939
)
4040
parser.add_argument(
41-
'--role-ids',
42-
metavar='<role-ids>',
43-
help='Requested role IDs',
41+
'--role',
42+
metavar='<role>',
43+
action='append',
44+
default=[],
45+
help='Roles to authorize (name or ID) '
46+
'(repeat to set multiple values) (required)',
4447
required=True
4548
)
4649
return parser
@@ -49,17 +52,20 @@ def take_action(self, parsed_args):
4952
self.log.debug('take_action(%s)' % parsed_args)
5053
identity_client = self.app.client_manager.identity
5154

55+
# NOTE(stevemar): We want a list of role ids
5256
roles = []
53-
for r_id in parsed_args.role_ids.split():
54-
roles.append(r_id)
57+
for role in parsed_args.role:
58+
role_id = utils.find_resource(
59+
identity_client.roles,
60+
role,
61+
).id
62+
roles.append(role_id)
5563

5664
verifier_pin = identity_client.oauth1.request_tokens.authorize(
5765
parsed_args.request_key,
5866
roles)
5967

60-
info = {}
61-
info.update(verifier_pin._info)
62-
return zip(*sorted(six.iteritems(info)))
68+
return zip(*sorted(six.iteritems(verifier_pin._info)))
6369

6470

6571
class CreateAccessToken(show.ShowOne):

‎openstackclient/tests/identity/v3/test_oauth.py‎

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@ def setUp(self):
2828
self.request_tokens_mock.reset_mock()
2929
self.projects_mock = identity_client.projects
3030
self.projects_mock.reset_mock()
31+
self.roles_mock = identity_client.roles
32+
self.roles_mock.reset_mock()
3133

3234

3335
class TestRequestTokenCreate(TestOAuth1):
@@ -85,6 +87,12 @@ class TestRequestTokenAuthorize(TestOAuth1):
8587
def setUp(self):
8688
super(TestRequestTokenAuthorize, self).setUp()
8789

90+
self.roles_mock.get.return_value = fakes.FakeResource(
91+
None,
92+
copy.deepcopy(identity_fakes.ROLE),
93+
loaded=True,
94+
)
95+
8896
copied_verifier = copy.deepcopy(identity_fakes.OAUTH_VERIFIER)
8997
resource = fakes.FakeResource(None, copied_verifier, loaded=True)
9098
self.request_tokens_mock.authorize.return_value = resource
@@ -93,11 +101,11 @@ def setUp(self):
93101
def test_authorize_request_tokens(self):
94102
arglist = [
95103
'--request-key', identity_fakes.request_token_id,
96-
'--role-ids', identity_fakes.role_id,
104+
'--role', identity_fakes.role_name,
97105
]
98106
verifylist = [
99107
('request_key', identity_fakes.request_token_id),
100-
('role_ids', identity_fakes.role_id),
108+
('role', [identity_fakes.role_name]),
101109
]
102110
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
103111
columns, data = self.cmd.take_action(parsed_args)

0 commit comments

Comments
 (0)