18d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi#!/usr/bin/env python 28d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi# Copyright (c) 2012 Amazon.com, Inc. or its affiliates. All Rights Reserved 38d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi# 48d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi# Permission is hereby granted, free of charge, to any person obtaining a 58d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi# copy of this software and associated documentation files (the 68d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi# "Software"), to deal in the Software without restriction, including 78d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi# without limitation the rights to use, copy, modify, merge, publish, dis- 88d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi# tribute, sublicense, and/or sell copies of the Software, and to permit 98d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi# persons to whom the Software is furnished to do so, subject to the fol- 108d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi# lowing conditions: 118d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi# 128d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi# The above copyright notice and this permission notice shall be included 138d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi# in all copies or substantial portions of the Software. 148d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi# 158d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 168d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABIL- 178d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi# ITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT 188d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi# SHALL THE AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 198d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 208d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS 218d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi# IN THE SOFTWARE. 228d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi# 238d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi 248d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoifrom base64 import b64decode 258d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoifrom boto.compat import json 268d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoifrom boto.iam.connection import IAMConnection 278d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoifrom tests.unit import AWSMockServiceTestCase 288d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi 298d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi 308d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoiclass TestCreateSamlProvider(AWSMockServiceTestCase): 318d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi connection_class = IAMConnection 328d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi 338d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi def default_body(self): 348d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi return b""" 358d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi <CreateSAMLProviderResponse xmlns="https://iam.amazonaws.com/doc/2010-05-08/"> 368d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi <CreateSAMLProviderResult> 378d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi <SAMLProviderArn>arn</SAMLProviderArn> 388d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi </CreateSAMLProviderResult> 398d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi <ResponseMetadata> 408d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi <RequestId>29f47818-99f5-11e1-a4c3-27EXAMPLE804</RequestId> 418d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi </ResponseMetadata> 428d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi </CreateSAMLProviderResponse> 438d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi """ 448d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi 458d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi def test_create_saml_provider(self): 468d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi self.set_http_response(status_code=200) 478d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi response = self.service_connection.create_saml_provider('document', 'name') 488d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi 498d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi self.assert_request_parameters( 508d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi {'Action': 'CreateSAMLProvider', 518d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi 'SAMLMetadataDocument': 'document', 528d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi 'Name': 'name'}, 538d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi ignore_params_values=['Version']) 548d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi 558d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi self.assertEqual(response['create_saml_provider_response'] 568d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi ['create_saml_provider_result'] 578d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi ['saml_provider_arn'], 'arn') 588d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi 598d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi 608d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoiclass TestListSamlProviders(AWSMockServiceTestCase): 618d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi connection_class = IAMConnection 628d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi 638d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi def default_body(self): 648d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi return b""" 658d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi <ListSAMLProvidersResponse xmlns="https://iam.amazonaws.com/doc/2010-05-08/"> 668d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi <ListSAMLProvidersResult> 678d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi <SAMLProviderList> 688d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi <member> 698d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi <Arn>arn:aws:iam::123456789012:instance-profile/application_abc/component_xyz/Database</Arn> 708d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi <ValidUntil>2032-05-09T16:27:11Z</ValidUntil> 718d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi <CreateDate>2012-05-09T16:27:03Z</CreateDate> 728d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi </member> 738d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi <member> 748d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi <Arn>arn:aws:iam::123456789012:instance-profile/application_abc/component_xyz/Webserver</Arn> 758d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi <ValidUntil>2015-03-11T13:11:02Z</ValidUntil> 768d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi <CreateDate>2012-05-09T16:27:11Z</CreateDate> 778d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi </member> 788d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi </SAMLProviderList> 798d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi </ListSAMLProvidersResult> 808d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi <ResponseMetadata> 818d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi <RequestId>fd74fa8d-99f3-11e1-a4c3-27EXAMPLE804</RequestId> 828d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi </ResponseMetadata> 838d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi </ListSAMLProvidersResponse> 848d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi """ 858d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi 868d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi def test_list_saml_providers(self): 878d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi self.set_http_response(status_code=200) 888d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi response = self.service_connection.list_saml_providers() 898d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi 908d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi self.assert_request_parameters( 918d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi {'Action': 'ListSAMLProviders'}, 928d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi ignore_params_values=['Version']) 938d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi self.assertEqual(response.saml_provider_list, [ 948d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi {'arn': 'arn:aws:iam::123456789012:instance-profile/application_abc/component_xyz/Database', 958d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi 'valid_until': '2032-05-09T16:27:11Z', 968d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi 'create_date': '2012-05-09T16:27:03Z'}, 978d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi {'arn': 'arn:aws:iam::123456789012:instance-profile/application_abc/component_xyz/Webserver', 988d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi 'valid_until': '2015-03-11T13:11:02Z', 998d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi 'create_date': '2012-05-09T16:27:11Z'}]) 1008d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi 1018d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi 1028d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoiclass TestGetSamlProvider(AWSMockServiceTestCase): 1038d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi connection_class = IAMConnection 1048d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi 1058d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi def default_body(self): 1068d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi return b""" 1078d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi <GetSAMLProviderResponse xmlns="https://iam.amazonaws.com/doc/2010-05-08/"> 1088d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi <GetSAMLProviderResult> 1098d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi <CreateDate>2012-05-09T16:27:11Z</CreateDate> 1108d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi <ValidUntil>2015-12-31T211:59:59Z</ValidUntil> 1118d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi <SAMLMetadataDocument>Pd9fexDssTkRgGNqs...DxptfEs==</SAMLMetadataDocument> 1128d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi </GetSAMLProviderResult> 1138d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi <ResponseMetadata> 1148d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi <RequestId>29f47818-99f5-11e1-a4c3-27EXAMPLE804</RequestId> 1158d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi </ResponseMetadata> 1168d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi </GetSAMLProviderResponse> 1178d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi """ 1188d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi 1198d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi def test_get_saml_provider(self): 1208d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi self.set_http_response(status_code=200) 1218d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi self.service_connection.get_saml_provider('arn') 1228d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi 1238d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi self.assert_request_parameters( 1248d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi { 1258d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi 'Action': 'GetSAMLProvider', 1268d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi 'SAMLProviderArn': 'arn' 1278d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi }, 1288d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi ignore_params_values=['Version']) 1298d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi 1308d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi 1318d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoiclass TestUpdateSamlProvider(AWSMockServiceTestCase): 1328d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi connection_class = IAMConnection 1338d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi 1348d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi def default_body(self): 1358d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi return b""" 1368d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi <UpdateSAMLProviderResponse xmlns="https://iam.amazonaws.com/doc/2010-05-08/"> 1378d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi <UpdateSAMLProviderResult> 1388d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi <SAMLProviderArn>arn:aws:iam::123456789012:saml-metadata/MyUniversity</SAMLProviderArn> 1398d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi </UpdateSAMLProviderResult> 1408d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi <ResponseMetadata> 1418d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi <RequestId>29f47818-99f5-11e1-a4c3-27EXAMPLE804</RequestId> 1428d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi </ResponseMetadata> 1438d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi </UpdateSAMLProviderResponse> 1448d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi """ 1458d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi 1468d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi def test_update_saml_provider(self): 1478d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi self.set_http_response(status_code=200) 1488d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi self.service_connection.update_saml_provider('arn', 'doc') 1498d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi 1508d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi self.assert_request_parameters( 1518d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi { 1528d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi 'Action': 'UpdateSAMLProvider', 1538d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi 'SAMLMetadataDocument': 'doc', 1548d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi 'SAMLProviderArn': 'arn' 1558d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi }, 1568d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi ignore_params_values=['Version']) 1578d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi 1588d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi 1598d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoiclass TestDeleteSamlProvider(AWSMockServiceTestCase): 1608d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi connection_class = IAMConnection 1618d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi 1628d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi def default_body(self): 1638d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi return "" 1648d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi 1658d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi def test_delete_saml_provider(self): 1668d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi self.set_http_response(status_code=200) 1678d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi self.service_connection.delete_saml_provider('arn') 1688d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi 1698d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi self.assert_request_parameters( 1708d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi { 1718d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi 'Action': 'DeleteSAMLProvider', 1728d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi 'SAMLProviderArn': 'arn' 1738d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi }, 1748d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi ignore_params_values=['Version']) 1758d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi 1768d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi 1778d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoiclass TestCreateRole(AWSMockServiceTestCase): 1788d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi connection_class = IAMConnection 1798d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi 1808d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi def default_body(self): 1818d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi return b""" 1828d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi <CreateRoleResponse xmlns="https://iam.amazonaws.com/doc/2010-05-08/"> 1838d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi <CreateRoleResult> 1848d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi <Role> 1858d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi <Path>/application_abc/component_xyz/</Path> 1868d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi <Arn>arn:aws:iam::123456789012:role/application_abc/component_xyz/S3Access</Arn> 1878d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi <RoleName>S3Access</RoleName> 1888d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi <AssumeRolePolicyDocument>{"Version":"2012-10-17","Statement":[{"Effect":"Allow","Principal":{"Service":["ec2.amazonaws.com"]},"Action":["sts:AssumeRole"]}]}</AssumeRolePolicyDocument> 1898d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi <CreateDate>2012-05-08T23:34:01.495Z</CreateDate> 1908d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi <RoleId>AROADBQP57FF2AEXAMPLE</RoleId> 1918d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi </Role> 1928d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi </CreateRoleResult> 1938d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi <ResponseMetadata> 1948d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi <RequestId>4a93ceee-9966-11e1-b624-b1aEXAMPLE7c</RequestId> 1958d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi </ResponseMetadata> 1968d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi </CreateRoleResponse> 1978d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi """ 1988d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi 1998d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi def test_create_role_default(self): 2008d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi self.set_http_response(status_code=200) 2018d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi self.service_connection.create_role('a_name') 2028d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi 2038d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi self.assert_request_parameters( 2048d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi {'Action': 'CreateRole', 2058d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi 'RoleName': 'a_name'}, 2068d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi ignore_params_values=['Version', 'AssumeRolePolicyDocument']) 2078d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi self.assertDictEqual(json.loads(self.actual_request.params["AssumeRolePolicyDocument"]), {"Statement": [{"Action": ["sts:AssumeRole"], "Effect": "Allow", "Principal": {"Service": ["ec2.amazonaws.com"]}}]}) 2088d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi 2098d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi def test_create_role_default_cn_north(self): 2108d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi self.set_http_response(status_code=200) 2118d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi self.service_connection.host = 'iam.cn-north-1.amazonaws.com.cn' 2128d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi self.service_connection.create_role('a_name') 2138d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi 2148d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi self.assert_request_parameters( 2158d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi {'Action': 'CreateRole', 2168d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi 'RoleName': 'a_name'}, 2178d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi ignore_params_values=['Version', 'AssumeRolePolicyDocument']) 2188d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi self.assertDictEqual(json.loads(self.actual_request.params["AssumeRolePolicyDocument"]), {"Statement": [{"Action": ["sts:AssumeRole"], "Effect": "Allow", "Principal": {"Service": ["ec2.amazonaws.com.cn"]}}]}) 2198d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi 2208d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi def test_create_role_string_policy(self): 2218d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi self.set_http_response(status_code=200) 2228d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi self.service_connection.create_role( 2238d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi 'a_name', 2248d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi # Historical usage. 2258d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi assume_role_policy_document='{"hello": "policy"}' 2268d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi ) 2278d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi 2288d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi self.assert_request_parameters( 2298d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi {'Action': 'CreateRole', 2308d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi 'AssumeRolePolicyDocument': '{"hello": "policy"}', 2318d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi 'RoleName': 'a_name'}, 2328d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi ignore_params_values=['Version']) 2338d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi 2348d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi def test_create_role_data_policy(self): 2358d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi self.set_http_response(status_code=200) 2368d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi self.service_connection.create_role( 2378d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi 'a_name', 2388d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi # With plain data, we should dump it for them. 2398d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi assume_role_policy_document={"hello": "policy"} 2408d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi ) 2418d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi 2428d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi self.assert_request_parameters( 2438d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi {'Action': 'CreateRole', 2448d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi 'AssumeRolePolicyDocument': '{"hello": "policy"}', 2458d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi 'RoleName': 'a_name'}, 2468d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi ignore_params_values=['Version']) 2478d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi 2488d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi 2498d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoiclass TestGetSigninURL(AWSMockServiceTestCase): 2508d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi connection_class = IAMConnection 2518d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi 2528d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi def default_body(self): 2538d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi return b""" 2548d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi <ListAccountAliasesResponse> 2558d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi <ListAccountAliasesResult> 2568d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi <IsTruncated>false</IsTruncated> 2578d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi <AccountAliases> 2588d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi <member>foocorporation</member> 2598d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi <member>anotherunused</member> 2608d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi </AccountAliases> 2618d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi </ListAccountAliasesResult> 2628d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi <ResponseMetadata> 2638d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi <RequestId>c5a076e9-f1b0-11df-8fbe-45274EXAMPLE</RequestId> 2648d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi </ResponseMetadata> 2658d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi </ListAccountAliasesResponse> 2668d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi """ 2678d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi 2688d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi def test_get_signin_url_default(self): 2698d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi self.set_http_response(status_code=200) 2708d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi url = self.service_connection.get_signin_url() 2718d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi self.assertEqual( 2728d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi url, 2738d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi 'https://foocorporation.signin.aws.amazon.com/console/ec2' 2748d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi ) 2758d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi 2768d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi def test_get_signin_url_s3(self): 2778d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi self.set_http_response(status_code=200) 2788d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi url = self.service_connection.get_signin_url(service='s3') 2798d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi self.assertEqual( 2808d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi url, 2818d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi 'https://foocorporation.signin.aws.amazon.com/console/s3' 2828d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi ) 2838d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi 2848d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi def test_get_signin_url_cn_north(self): 2858d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi self.set_http_response(status_code=200) 2868d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi self.service_connection.host = 'iam.cn-north-1.amazonaws.com.cn' 2878d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi url = self.service_connection.get_signin_url() 2888d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi self.assertEqual( 2898d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi url, 2908d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi 'https://foocorporation.signin.amazonaws.cn/console/ec2' 2918d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi ) 2928d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi 2938d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi 2948d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoiclass TestGetSigninURLNoAliases(AWSMockServiceTestCase): 2958d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi connection_class = IAMConnection 2968d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi 2978d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi def default_body(self): 2988d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi return b""" 2998d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi <ListAccountAliasesResponse> 3008d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi <ListAccountAliasesResult> 3018d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi <IsTruncated>false</IsTruncated> 3028d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi <AccountAliases></AccountAliases> 3038d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi </ListAccountAliasesResult> 3048d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi <ResponseMetadata> 3058d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi <RequestId>c5a076e9-f1b0-11df-8fbe-45274EXAMPLE</RequestId> 3068d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi </ResponseMetadata> 3078d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi </ListAccountAliasesResponse> 3088d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi """ 3098d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi 3108d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi def test_get_signin_url_no_aliases(self): 3118d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi self.set_http_response(status_code=200) 3128d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi 3138d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi with self.assertRaises(Exception): 3148d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi self.service_connection.get_signin_url() 3158d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi 3168d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi 3178d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoiclass TestGenerateCredentialReport(AWSMockServiceTestCase): 3188d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi connection_class = IAMConnection 3198d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi 3208d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi def default_body(self): 3218d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi return b""" 3228d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi <GenerateCredentialReportResponse> 3238d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi <GenerateCredentialReportResult> 3248d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi <State>COMPLETE</State> 3258d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi </GenerateCredentialReportResult> 3268d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi <ResponseMetadata> 3278d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi <RequestId>b62e22a3-0da1-11e4-ba55-0990EXAMPLE</RequestId> 3288d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi </ResponseMetadata> 3298d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi </GenerateCredentialReportResponse> 3308d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi """ 3318d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi 3328d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi def test_generate_credential_report(self): 3338d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi self.set_http_response(status_code=200) 3348d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi response = self.service_connection.generate_credential_report() 3358d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi self.assertEquals(response['generate_credential_report_response'] 3368d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi ['generate_credential_report_result'] 3378d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi ['state'], 'COMPLETE') 3388d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi 3398d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi 3408d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoiclass TestGetCredentialReport(AWSMockServiceTestCase): 3418d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi connection_class = IAMConnection 3428d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi 3438d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi def default_body(self): 3448d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi return b""" 3458d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi <GetCredentialReportResponse> 3468d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi <ResponseMetadata> 3478d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi <RequestId>99e60e9a-0db5-11e4-94d4-b764EXAMPLE</RequestId> 3488d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi </ResponseMetadata> 3498d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi <GetCredentialReportResult> 3508d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi <Content>RXhhbXBsZQ==</Content> 3518d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi <ReportFormat>text/csv</ReportFormat> 3528d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi <GeneratedTime>2014-07-17T11:09:11Z</GeneratedTime> 3538d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi </GetCredentialReportResult> 3548d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi </GetCredentialReportResponse> 3558d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi """ 3568d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi 3578d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi def test_get_credential_report(self): 3588d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi self.set_http_response(status_code=200) 3598d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi response = self.service_connection.get_credential_report() 3608d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi b64decode(response['get_credential_report_response'] 3618d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi ['get_credential_report_result'] 3628d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi ['content']) 3638d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi 3648d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoiclass TestCreateVirtualMFADevice(AWSMockServiceTestCase): 3658d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi connection_class = IAMConnection 3668d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi 3678d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi def default_body(self): 3688d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi return b""" 3698d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi <CreateVirtualMFADeviceResponse> 3708d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi <CreateVirtualMFADeviceResult> 3718d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi <VirtualMFADevice> 3728d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi <SerialNumber>arn:aws:iam::123456789012:mfa/ExampleName</SerialNumber> 3738d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi <Base32StringSeed>2K5K5XTLA7GGE75TQLYEXAMPLEEXAMPLEEXAMPLECHDFW4KJYZ6 3748d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi UFQ75LL7COCYKM</Base32StringSeed> 3758d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi <QRCodePNG>89504E470D0A1A0AASDFAHSDFKJKLJFKALSDFJASDF</QRCodePNG> 3768d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi </VirtualMFADevice> 3778d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi </CreateVirtualMFADeviceResult> 3788d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi <ResponseMetadata> 3798d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi <RequestId>7a62c49f-347e-4fc4-9331-6e8eEXAMPLE</RequestId> 3808d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi </ResponseMetadata> 3818d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi </CreateVirtualMFADeviceResponse> 3828d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi """ 3838d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi 3848d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi def test_create_virtual_mfa_device(self): 3858d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi self.set_http_response(status_code=200) 3868d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi response = self.service_connection.create_virtual_mfa_device('/', 'ExampleName') 3878d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi self.assert_request_parameters( 3888d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi {'Path': '/', 3898d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi 'VirtualMFADeviceName': 'ExampleName', 3908d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi 'Action': 'CreateVirtualMFADevice'}, 3918d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi ignore_params_values=['Version']) 3928d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi self.assertEquals(response['create_virtual_mfa_device_response'] 3938d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi ['create_virtual_mfa_device_result'] 3948d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi ['virtual_mfa_device'] 3958d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi ['serial_number'], 'arn:aws:iam::123456789012:mfa/ExampleName') 3968d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi 3978d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoiclass TestGetAccountPasswordPolicy(AWSMockServiceTestCase): 3988d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi connection_class = IAMConnection 3998d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi 4008d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi def default_body(self): 4018d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi return b""" 4028d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi <GetAccountPasswordPolicyResponse xmlns="https://iam.amazonaws.com/doc/2010-05-08/"> 4038d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi <GetAccountPasswordPolicyResult> 4048d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi <PasswordPolicy> 4058d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi <AllowUsersToChangePassword>true</AllowUsersToChangePassword> 4068d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi <RequireUppercaseCharacters>true</RequireUppercaseCharacters> 4078d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi <RequireSymbols>true</RequireSymbols> 4088d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi <ExpirePasswords>false</ExpirePasswords> 4098d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi <PasswordReusePrevention>12</PasswordReusePrevention> 4108d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi <RequireLowercaseCharacters>true</RequireLowercaseCharacters> 4118d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi <MaxPasswordAge>90</MaxPasswordAge> 4128d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi <HardExpiry>false</HardExpiry> 4138d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi <RequireNumbers>true</RequireNumbers> 4148d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi <MinimumPasswordLength>12</MinimumPasswordLength> 4158d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi </PasswordPolicy> 4168d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi </GetAccountPasswordPolicyResult> 4178d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi <ResponseMetadata> 4188d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi <RequestId>7a62c49f-347e-4fc4-9331-6e8eEXAMPLE</RequestId> 4198d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi </ResponseMetadata> 4208d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi </GetAccountPasswordPolicyResponse> 4218d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi """ 4228d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi 4238d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi def test_get_account_password_policy(self): 4248d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi self.set_http_response(status_code=200) 4258d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi response = self.service_connection.get_account_password_policy() 4268d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi 4278d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi self.assert_request_parameters( 4288d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi { 4298d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi 'Action': 'GetAccountPasswordPolicy', 4308d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi }, 4318d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi ignore_params_values=['Version']) 4328d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi self.assertEquals(response['get_account_password_policy_response'] 4338d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi ['get_account_password_policy_result']['password_policy'] 4348d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi ['minimum_password_length'], '12') 4358d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi 4368d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi 4378d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoiclass TestUpdateAccountPasswordPolicy(AWSMockServiceTestCase): 4388d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi connection_class = IAMConnection 4398d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi 4408d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi def default_body(self): 4418d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi return b""" 4428d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi <UpdateAccountPasswordPolicyResponse xmlns="https://iam.amazonaws.com/doc/2010-05-08/"> 4438d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi <ResponseMetadata> 4448d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi <RequestId>7a62c49f-347e-4fc4-9331-6e8eEXAMPLE</RequestId> 4458d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi </ResponseMetadata> 4468d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi </UpdateAccountPasswordPolicyResponse> 4478d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi """ 4488d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi 4498d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi def test_update_account_password_policy(self): 4508d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi self.set_http_response(status_code=200) 4518d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi response = self.service_connection.update_account_password_policy(minimum_password_length=88) 4528d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi 4538d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi self.assert_request_parameters( 4548d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi { 4558d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi 'Action': 'UpdateAccountPasswordPolicy', 4568d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi 'MinimumPasswordLength': 88 4578d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi }, 4588d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi ignore_params_values=['Version']) 4598d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi 4608d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi 4618d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoiclass TestDeleteAccountPasswordPolicy(AWSMockServiceTestCase): 4628d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi connection_class = IAMConnection 4638d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi 4648d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi def default_body(self): 4658d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi return b""" 4668d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi <DeleteAccountPasswordPolicyResponse> 4678d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi <ResponseMetadata> 4688d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi <RequestId>7a62c49f-347e-4fc4-9331-6e8eEXAMPLE</RequestId> 4698d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi </ResponseMetadata> 4708d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi </DeleteAccountPasswordPolicyResponse> 4718d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi """ 4728d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi 4738d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi def test_delete_account_password_policy(self): 4748d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi self.set_http_response(status_code=200) 4758d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi response = self.service_connection.delete_account_password_policy() 4768d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi 4778d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi self.assert_request_parameters( 4788d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi { 4798d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi 'Action': 'DeleteAccountPasswordPolicy' 4808d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi }, 4818d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi ignore_params_values=['Version']) 482