Example #1
0
    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()])
Example #2
0
    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)])
Example #3
0
    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
Example #4
0
    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
Example #5
0
    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)])
Example #6
0
    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
Example #7
0
    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)])
Example #8
0
    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)])
Example #9
0
    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
Example #10
0
    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)
Example #11
0
    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)
Example #12
0
    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()
Example #13
0
    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)
Example #14
0
    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
Example #15
0
    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()
Example #16
0
    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__)])
Example #17
0
    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
Example #18
0
    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)])
Example #19
0
    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
Example #20
0
    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)