def test_no_registration_if_profile_does_not_exist(self): session = mock.Mock() session.get_component.side_effect = ProfileNotFound(profile='unknown') assumerole.inject_assume_role_provider_cache( session, event_name='building-command-table.foo') credential_provider = session.get_component.return_value self.assertFalse(credential_provider.get_provider.called)
def test_no_registration_if_profile_does_not_exist(self): session = mock.Mock() session.get_component.side_effect = ProfileNotFound( profile='unknown') assumerole.inject_assume_role_provider_cache( session, event_name='building-command-table.foo') credential_provider = session.get_component.return_value self.assertFalse(credential_provider.get_provider.called)
def test_assume_role_provider_injected(self): session = mock.Mock() assumerole.inject_assume_role_provider_cache( session, event_name='building-command-table.foo') session.get_component.assert_called_with('credential_provider') credential_provider = session.get_component.return_value get_provider = credential_provider.get_provider get_provider.assert_called_with('assume-role') self.assertIsInstance(get_provider.return_value.cache, assumerole.JSONFileCache)
def test_assume_role_provider_injected(self): mock_assume_role = mock.Mock(spec=AssumeRoleProvider) mock_web_identity = mock.Mock(spec=AssumeRoleWithWebIdentityProvider) providers = { 'assume-role': mock_assume_role, 'assume-role-with-web-identity': mock_web_identity, } mock_resolver = mock.Mock(spec=CredentialResolver) mock_resolver.get_provider = providers.get session = mock.Mock(spec=Session) session.get_component.return_value = mock_resolver assumerole.inject_assume_role_provider_cache( session, event_name='building-command-table.foo') session.get_component.assert_called_with('credential_provider') self.assertIsInstance(mock_assume_role.cache, assumerole.JSONFileCache) self.assertIsInstance( mock_web_identity.cache, assumerole.JSONFileCache, )
import botocore.session import botocore.credentials session = botocore.session.get_session() if hasattr(botocore.credentials, 'JSONFileCache'): cli_cache = os.path.join(os.path.expanduser('~'), '.aws/cli/cache') try: session.get_component('credential_provider').get_provider('assume-role').cache = botocore.credentials.JSONFileCache(cli_cache) except botocore.exceptions.ProfileNotFound as e: sys.exit(e) else: # workaround old awscli without https://github.com/boto/botocore/pull/1157 from awscli.customizations.assumerole import inject_assume_role_provider_cache from awscli.customizations.scalarparse import add_scalar_parsers inject_assume_role_provider_cache(session) add_scalar_parsers(session) try: credentials = session.get_credentials() if credentials is None: sys.exit('Unable to locate AWS credentials.') frozen_credentials = credentials.get_frozen_credentials() except KeyboardInterrupt as e: sys.exit(e) except botocore.exceptions.ParamValidationError as e: sys.exit(e) except botocore.exceptions.ProfileNotFound as e: sys.exit(e) except botocore.exceptions.ClientError as e: sys.exit(e)