Fix bug with listing IAM users.

This commit is contained in:
Steve Pulec 2017-01-11 20:54:37 -05:00
parent 2a02259a3c
commit 201efd5773
3 changed files with 11 additions and 11 deletions

View File

@ -176,15 +176,15 @@ class Group(object):
class User(object): class User(object):
def __init__(self, name, path='/'): def __init__(self, name, path=None):
self.name = name self.name = name
self.id = random_resource_id() self.id = random_resource_id()
self.path = path self.path = path if path else "/"
self.created = datetime.strftime( self.created = datetime.strftime(
datetime.utcnow(), datetime.utcnow(),
"%Y-%m-%d-%H-%M-%S" "%Y-%m-%d-%H-%M-%S"
) )
self.arn = 'arn:aws:iam::123456789012:user/{0}'.format(name) self.arn = 'arn:aws:iam::123456789012:user{0}{1}'.format(self.path, name)
self.policies = {} self.policies = {}
self.access_keys = [] self.access_keys = []
self.password = None self.password = None
@ -591,7 +591,7 @@ class IAMBackend(BaseBackend):
def list_users(self, path_prefix, marker, max_items): def list_users(self, path_prefix, marker, max_items):
users = None users = None
try: try:
users = self.users users = self.users.values()
except KeyError: except KeyError:
raise IAMNotFoundException("Users {0}, {1}, {2} not found".format(path_prefix, marker, max_items)) raise IAMNotFoundException("Users {0}, {1}, {2} not found".format(path_prefix, marker, max_items))

View File

@ -204,9 +204,9 @@ class IamResponse(BaseResponse):
path_prefix = self._get_param('PathPrefix') path_prefix = self._get_param('PathPrefix')
marker = self._get_param('Marker') marker = self._get_param('Marker')
max_items = self._get_param('MaxItems') max_items = self._get_param('MaxItems')
user = iam_backend.list_users(path_prefix, marker, max_items) users = iam_backend.list_users(path_prefix, marker, max_items)
template = self.response_template(LIST_USERS_TEMPLATE) template = self.response_template(LIST_USERS_TEMPLATE)
return template.render(action='List', user=user) return template.render(action='List', users=users)
def create_login_profile(self): def create_login_profile(self):
user_name = self._get_param('UserName') user_name = self._get_param('UserName')
@ -724,7 +724,7 @@ LIST_USERS_TEMPLATE = """<{{ action }}UsersResponse>
<UserId>{{ user.id }}</UserId> <UserId>{{ user.id }}</UserId>
<Path>{{ user.path }}</Path> <Path>{{ user.path }}</Path>
<UserName>{{ user.name }}</UserName> <UserName>{{ user.name }}</UserName>
<Arn>arn:aws:iam::123456789012:user/{{ user.path }}/{{ user.name }}</Arn> <Arn>{{ user.arn }}</Arn>
</member> </member>
{% endfor %} {% endfor %}
</Users> </Users>

View File

@ -196,10 +196,10 @@ def test_list_users():
conn = boto3.client('iam') conn = boto3.client('iam')
conn.create_user(UserName='my-user') conn.create_user(UserName='my-user')
response = conn.list_users(PathPrefix=path_prefix, MaxItems=max_items) response = conn.list_users(PathPrefix=path_prefix, MaxItems=max_items)
assert_equals( user = response['Users'][0]
response['Users'], user['UserName'].should.equal('my-user')
[] user['Path'].should.equal('/')
) user['Arn'].should.equal('arn:aws:iam::123456789012:user/my-user')
@mock_iam() @mock_iam()