def test_aws_auth_loop(self, config_mock): config_mock().reup = False keyman = Keyman(['foo', '-o', 'foo', '-u', 'bar', '-a', 'baz']) keyman.start_session = mock.MagicMock() keyman.aws_auth_loop() keyman.start_session.assert_has_calls( [mock.call(), mock.call().assume_role()])
def test_aws_auth_loop_multirole(self, config_mock): config_mock().reup = False keyman = Keyman(['foo', '-o', 'foo', '-u', 'bar', '-a', 'baz']) keyman.start_session = mock.MagicMock() keyman.start_session().assume_role.side_effect = aws.MultipleRoles keyman.handle_multiple_roles = mock.MagicMock() keyman.aws_auth_loop() keyman.handle_multiple_roles.assert_has_calls([mock.call(mock.ANY)])
def test_aws_auth_loop_exception(self, config_mock, _sleep_mock): config_mock().reup = False keyman = Keyman(['foo', '-o', 'foo', '-u', 'bar', '-a', 'baz']) keyman.start_session = mock.MagicMock() keyman.start_session.side_effect = Exception() with self.assertRaises(Exception): keyman.aws_auth_loop() assert keyman.start_session.called
def test_aws_auth_loop_exception(self, config_mock, _sleep_mock): config_mock().reup = False keyman = Keyman(["foo", "-o", "foo", "-u", "bar", "-a", "baz"]) keyman.start_session = mock.MagicMock() keyman.start_session.side_effect = Exception() with self.assertRaises(Exception): keyman.aws_auth_loop() assert keyman.start_session.called
def test_aws_auth_loop_continue(self, config_mock, sleep_mock): config_mock().reup = False keyman = Keyman(['foo', '-o', 'foo', '-u', 'bar', '-a', 'baz']) keyman.config.reup = True session_instance = mock.MagicMock() session_instance.is_valid = True keyman.start_session = mock.MagicMock() keyman.start_session.return_value = session_instance with self.assertRaises(Exception): keyman.aws_auth_loop() sleep_mock.assert_has_calls([mock.call(60)])
def test_aws_auth_loop(self, config_mock): config_mock().reup = False keyman = Keyman(['foo', '-o', 'foo', '-u', 'bar', '-a', 'baz']) keyman.start_session = mock.MagicMock() keyman.wrap_up = mock.MagicMock() keyman.handle_multiple_roles = mock.MagicMock() keyman.handle_multiple_roles.return_value = True keyman.aws_auth_loop() keyman.start_session.assert_has_calls( [mock.call(), mock.call().assume_role(mock.ANY)]) assert keyman.wrap_up.called assert keyman.handle_multiple_roles.called
def test_aws_auth_loop_reauth(self, config_mock, _sleep_mock): config_mock().reup = False keyman = Keyman(['foo', '-o', 'foo', '-u', 'bar', '-a', 'baz']) session_instance = mock.MagicMock() session_instance.assume_role.side_effect = okta.ReauthNeeded session_instance.is_valid = False keyman.start_session = mock.MagicMock() keyman.start_session.side_effect = session_instance, Exception() keyman.handle_multiple_roles = mock.MagicMock() keyman.auth_okta = mock.MagicMock() with self.assertRaises(Exception): keyman.aws_auth_loop() keyman.auth_okta.assert_has_calls([mock.call(state_token=None)])
def test_aws_auth_loop_multirole(self, config_mock): config_mock().reup = False config_mock().screen = False keyman = Keyman(['foo', '-o', 'foo', '-u', 'bar', '-a', 'baz']) session_instance = mock.MagicMock() session_instance.assume_role.side_effect = aws.MultipleRoles keyman.start_session = mock.MagicMock() keyman.start_session.return_value = session_instance keyman.handle_multiple_roles = mock.MagicMock() with self.assertRaises(Exception): keyman.aws_auth_loop() session_instance.assume_role.assert_has_calls([ mock.call(False), mock.call(False), ]) keyman.handle_multiple_roles.assert_has_calls([mock.call(mock.ANY)])
def test_aws_auth_loop(self, config_mock): config_mock().reup = False keyman = Keyman(["foo", "-o", "foo", "-u", "bar", "-a", "baz"]) keyman.start_session = mock.MagicMock() keyman.wrap_up = mock.MagicMock() keyman.handle_multiple_roles = mock.MagicMock() keyman.handle_multiple_roles.return_value = True keyman.aws_auth_loop() keyman.start_session.assert_has_calls( [ mock.call(), mock.call().assume_role(mock.ANY), ], ) assert keyman.wrap_up.called assert keyman.handle_multiple_roles.called
def test_aws_auth_loop_invalidsaml(self, config_mock, _sleep_mock): config_mock().reup = False keyman = Keyman(["foo", "-o", "foo", "-u", "bar", "-a", "baz"]) keyman.start_session = mock.MagicMock() keyman.start_session.side_effect = aws.InvalidSaml() keyman.okta_client = mock.MagicMock() ret = keyman.aws_auth_loop() assert keyman.start_session.called self.assertEqual(ret, 1)
def test_aws_auth_loop_connectionerror(self, config_mock, _sleep_mock): config_mock().reup = False keyman = Keyman(["foo", "-o", "foo", "-u", "bar", "-a", "baz"]) keyman.start_session = mock.MagicMock() err = requests.exceptions.ConnectionError() keyman.start_session.side_effect = err ret = keyman.aws_auth_loop() assert keyman.start_session.called self.assertEqual(ret, 3)
def test_main_aws_auth_error(self, _config_mock): keyman = Keyman(["foo", "-o", "foo", "-u", "bar", "-a", "baz"]) keyman.handle_appid_selection = mock.MagicMock() keyman.handle_appid_selection.side_effect = NoAWSAccounts() keyman.user_password = mock.MagicMock() keyman.user_password.return_value = "foo" keyman.init_okta = mock.MagicMock() keyman.auth_okta = mock.MagicMock() keyman.aws_auth_loop = mock.MagicMock() with self.assertRaises(SystemExit): keyman.main()
def test_aws_auth_loop_profile_error(self, config_mock): config_mock().reup = False keyman = Keyman(["foo", "-o", "foo", "-u", "bar", "-a", "baz"]) keyman.start_session = mock.MagicMock() profile_exc = botocore.exceptions.ProfileNotFound(profile="") keyman.start_session.side_effect = profile_exc keyman.okta_client = mock.MagicMock() ret = keyman.aws_auth_loop() assert keyman.start_session.called self.assertEqual(ret, 4)
def test_aws_auth_loop_continue(self, config_mock, sleep_mock): config_mock().reup = False keyman = Keyman(["foo", "-o", "foo", "-u", "bar", "-a", "baz"]) keyman.config.reup = True session_instance = mock.MagicMock() session_instance.is_valid = True keyman.start_session = mock.MagicMock() keyman.start_session.return_value = session_instance keyman.handle_multiple_roles = mock.MagicMock() keyman.handle_multiple_roles.return_value = True with self.assertRaises(Exception): keyman.aws_auth_loop() sleep_mock.assert_has_calls( [ mock.call(60), ], ) assert keyman.handle_multiple_roles.called
def test_main_no_aws_accounts(self, _config_mock): keyman = Keyman(['foo', '-o', 'foo', '-u', 'bar', '-a', 'baz']) keyman.handle_appid_selection = mock.MagicMock() keyman.user_password = mock.MagicMock() keyman.user_password.return_value = 'foo' keyman.init_okta = mock.MagicMock() keyman.auth_okta = mock.MagicMock() keyman.aws_auth_loop = mock.MagicMock() keyman.aws_auth_loop.return_value = 1 with self.assertRaises(SystemExit): keyman.main()
def test_main_update(self, config_mock): config_mock().update = True keyman = Keyman(["foo", "-o", "foo", "-u", "bar", "-a", "baz"]) keyman.update = mock.MagicMock() keyman.handle_appid_selection = mock.MagicMock() keyman.user_password = mock.MagicMock() keyman.user_password.return_value = "foo" keyman.init_okta = mock.MagicMock() keyman.auth_okta = mock.MagicMock() keyman.aws_auth_loop = mock.MagicMock() with self.assertRaises(SystemExit): keyman.main() keyman.update.assert_has_calls([mock.call(__version__)])
def test_main(self, _config_mock): keyman = Keyman(['foo', '-o', 'foo', '-u', 'bar', '-a', 'baz']) keyman.handle_appid_selection = mock.MagicMock() keyman.user_password = mock.MagicMock() keyman.user_password.return_value = 'foo' keyman.init_okta = mock.MagicMock() keyman.auth_okta = mock.MagicMock() keyman.aws_auth_loop = mock.MagicMock() keyman.main() assert keyman.handle_appid_selection.called assert keyman.user_password.called keyman.init_okta.assert_called_with('foo') assert keyman.auth_okta.called assert keyman.aws_auth_loop.called
def test_main_post_okta_appid_selection(self, _config_mock): keyman = Keyman(['foo', '-o', 'foo', '-u', 'bar']) keyman.handle_appid_selection = mock.MagicMock() keyman.config.appid = None keyman.user_password = mock.MagicMock() keyman.user_password.return_value = 'foo' keyman.init_okta = mock.MagicMock() keyman.auth_okta = mock.MagicMock() keyman.aws_auth_loop = mock.MagicMock() keyman.aws_auth_loop.return_value = None keyman.handle_appid_selection = mock.MagicMock() keyman.main() keyman.handle_appid_selection.assert_has_calls( [mock.call(), mock.call(okta_ready=True)])
def test_main(self, _config_mock): keyman = Keyman(["foo", "-o", "foo", "-u", "bar", "-a", "baz"]) keyman.handle_appid_selection = mock.MagicMock() keyman.user_password = mock.MagicMock() keyman.user_password.return_value = "foo" keyman.init_okta = mock.MagicMock() keyman.auth_okta = mock.MagicMock() keyman.aws_auth_loop = mock.MagicMock() keyman.aws_auth_loop.return_value = None keyman.main() assert keyman.handle_appid_selection.called assert keyman.user_password.called keyman.init_okta.assert_called_with("foo") assert keyman.auth_okta.called assert keyman.aws_auth_loop.called
def test_aws_auth_loop_multirole_no_match(self, config_mock): config_mock().reup = False config_mock().screen = False keyman = Keyman(["foo", "-o", "foo", "-u", "bar", "-a", "baz"]) session_instance = mock.MagicMock() session_instance.assume_role.side_effect = aws.MultipleRoles keyman.start_session = mock.MagicMock() keyman.start_session.return_value = session_instance keyman.handle_multiple_roles = mock.MagicMock() keyman.handle_multiple_roles.return_value = False ret = keyman.aws_auth_loop() keyman.handle_multiple_roles.assert_has_calls( [ mock.call(mock.ANY), ], ) self.assertEqual(ret, 1)