diff --git a/moto/iam/models.py b/moto/iam/models.py index 4502d6da0..60b9b743d 100644 --- a/moto/iam/models.py +++ b/moto/iam/models.py @@ -176,15 +176,15 @@ class Group(object): class User(object): - def __init__(self, name, path='/'): + def __init__(self, name, path=None): self.name = name self.id = random_resource_id() - self.path = path + self.path = path if path else "/" self.created = datetime.strftime( datetime.utcnow(), "%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.access_keys = [] self.password = None @@ -591,7 +591,7 @@ class IAMBackend(BaseBackend): def list_users(self, path_prefix, marker, max_items): users = None try: - users = self.users + users = self.users.values() except KeyError: raise IAMNotFoundException("Users {0}, {1}, {2} not found".format(path_prefix, marker, max_items)) diff --git a/moto/iam/responses.py b/moto/iam/responses.py index d707c35ed..223691e1e 100644 --- a/moto/iam/responses.py +++ b/moto/iam/responses.py @@ -204,9 +204,9 @@ class IamResponse(BaseResponse): path_prefix = self._get_param('PathPrefix') marker = self._get_param('Marker') 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) - return template.render(action='List', user=user) + return template.render(action='List', users=users) def create_login_profile(self): user_name = self._get_param('UserName') @@ -724,7 +724,7 @@ LIST_USERS_TEMPLATE = """<{{ action }}UsersResponse> {{ user.id }} {{ user.path }} {{ user.name }} - arn:aws:iam::123456789012:user/{{ user.path }}/{{ user.name }} + {{ user.arn }} {% endfor %} diff --git a/tests/test_iam/test_iam.py b/tests/test_iam/test_iam.py index c276c8a80..bedea4e01 100644 --- a/tests/test_iam/test_iam.py +++ b/tests/test_iam/test_iam.py @@ -196,10 +196,10 @@ def test_list_users(): conn = boto3.client('iam') conn.create_user(UserName='my-user') response = conn.list_users(PathPrefix=path_prefix, MaxItems=max_items) - assert_equals( - response['Users'], - [] - ) + user = response['Users'][0] + user['UserName'].should.equal('my-user') + user['Path'].should.equal('/') + user['Arn'].should.equal('arn:aws:iam::123456789012:user/my-user') @mock_iam()