Merge pull request #323 from mikegrima/mgrima-add-boto-test-list_instance_profiles_for_role
Added in test for the boto IAM method: list_instance_profiles_for_role()
This commit is contained in:
commit
2cd633e27d
@ -291,6 +291,16 @@ class IAMBackend(BaseBackend):
|
||||
def get_instance_profiles(self):
|
||||
return self.instance_profiles.values()
|
||||
|
||||
def get_instance_profiles_for_role(self, role_name):
|
||||
found_profiles = []
|
||||
|
||||
for profile in self.get_instance_profiles():
|
||||
if len(profile.roles) > 0:
|
||||
if profile.roles[0].name == role_name:
|
||||
found_profiles.append(profile)
|
||||
|
||||
return found_profiles
|
||||
|
||||
def add_role_to_instance_profile(self, profile_name, role_name):
|
||||
profile = self.get_instance_profile(profile_name)
|
||||
role = self.get_role(role_name)
|
||||
|
@ -87,6 +87,13 @@ class IamResponse(BaseResponse):
|
||||
template = self.response_template(LIST_INSTANCE_PROFILES_TEMPLATE)
|
||||
return template.render(instance_profiles=profiles)
|
||||
|
||||
def list_instance_profiles_for_role(self):
|
||||
role_name = self._get_param('RoleName')
|
||||
profiles = iam_backend.get_instance_profiles_for_role(role_name=role_name)
|
||||
|
||||
template = self.response_template(LIST_INSTANCE_PROFILES_FOR_ROLE_TEMPLATE)
|
||||
return template.render(instance_profiles=profiles)
|
||||
|
||||
def upload_server_certificate(self):
|
||||
cert_name = self._get_param('ServerCertificateName')
|
||||
cert_body = self._get_param('CertificateBody')
|
||||
@ -602,3 +609,35 @@ CREDENTIAL_REPORT = """<GetCredentialReportResponse>
|
||||
<RequestId>fa788a82-aa8a-11e4-a278-1786c418872b"</RequestId>
|
||||
</ResponseMetadata>
|
||||
</GetCredentialReportResponse>"""
|
||||
|
||||
LIST_INSTANCE_PROFILES_FOR_ROLE_TEMPLATE = """<ListInstanceProfilesForRoleResponse>
|
||||
<ListInstanceProfilesForRoleResult>
|
||||
<IsTruncated>false</IsTruncated>
|
||||
<InstanceProfiles>
|
||||
{% for profile in instance_profiles %}
|
||||
<member>
|
||||
<Id>{{ profile.id }}</Id>
|
||||
<Roles>
|
||||
{% for role in profile.roles %}
|
||||
<member>
|
||||
<Path>{{ role.path }}</Path>
|
||||
<Arn>arn:aws:iam::123456789012:role{{ role.path }}S3Access</Arn>
|
||||
<RoleName>{{ role.name }}</RoleName>
|
||||
<AssumeRolePolicyDocument>{{ role.assume_policy_document }}</AssumeRolePolicyDocument>
|
||||
<CreateDate>2012-05-09T15:45:35Z</CreateDate>
|
||||
<RoleId>{{ role.id }}</RoleId>
|
||||
</member>
|
||||
{% endfor %}
|
||||
</Roles>
|
||||
<InstanceProfileName>{{ profile.name }}</InstanceProfileName>
|
||||
<Path>{{ profile.path }}</Path>
|
||||
<Arn>arn:aws:iam::123456789012:instance-profile{{ profile.path }}Webserver</Arn>
|
||||
<CreateDate>2012-05-09T16:27:11Z</CreateDate>
|
||||
</member>
|
||||
{% endfor %}
|
||||
</InstanceProfiles>
|
||||
</ListInstanceProfilesForRoleResult>
|
||||
<ResponseMetadata>
|
||||
<RequestId>6a8c3992-99f4-11e1-a4c3-27EXAMPLE804</RequestId>
|
||||
</ResponseMetadata>
|
||||
</ListInstanceProfilesForRoleResponse>"""
|
@ -62,6 +62,34 @@ def test_create_role_and_instance_profile():
|
||||
conn.list_roles().roles[0].role_name.should.equal('my-role')
|
||||
conn.list_instance_profiles().instance_profiles[0].instance_profile_name.should.equal("my-profile")
|
||||
|
||||
@mock_iam()
|
||||
def test_list_instance_profiles_for_role():
|
||||
conn = boto.connect_iam()
|
||||
|
||||
conn.create_role(role_name="my-role", assume_role_policy_document="some policy", path="my-path")
|
||||
conn.create_role(role_name="my-role2", assume_role_policy_document="some policy2", path="my-path2")
|
||||
|
||||
profile_name_list = ['my-profile', 'my-profile2']
|
||||
profile_path_list = ['my-path', 'my-path2']
|
||||
for profile_count in range(0,2):
|
||||
conn.create_instance_profile(profile_name_list[profile_count], path=profile_path_list[profile_count])
|
||||
|
||||
for profile_count in range(0,2):
|
||||
conn.add_role_to_instance_profile(profile_name_list[profile_count], "my-role")
|
||||
|
||||
profile_dump = conn.list_instance_profiles_for_role(role_name="my-role")
|
||||
profile_list = profile_dump['list_instance_profiles_for_role_response']['list_instance_profiles_for_role_result']['instance_profiles']
|
||||
for profile_count in range(0,len(profile_list)):
|
||||
profile_name_list.remove(profile_list[profile_count]["instance_profile_name"])
|
||||
profile_path_list.remove(profile_list[profile_count]["path"])
|
||||
profile_list[profile_count]["roles"]["member"]["role_name"].should.equal("my-role")
|
||||
|
||||
len(profile_name_list).should.equal(0)
|
||||
len(profile_path_list).should.equal(0)
|
||||
|
||||
profile_dump2 = conn.list_instance_profiles_for_role(role_name="my-role2")
|
||||
profile_list = profile_dump2['list_instance_profiles_for_role_response']['list_instance_profiles_for_role_result']['instance_profiles']
|
||||
len(profile_list).should.equal(0)
|
||||
|
||||
@mock_iam()
|
||||
def test_list_role_policies():
|
||||
|
Loading…
Reference in New Issue
Block a user