Пример #1
0
    def test_login_success(self, error, krb_login):
        """Assert correct behavior for a successful login event."""
        krb_login.return_value = True
        config = {
            'some_meaningless_other_key': 'boring_value',
            'krb_ccache': 'a_ccache',
            'krb_keytab': 'a_keytab',
            'krb_principal': 'a_principal'
        }
        default_koji_opts = {
            'krb_rdns': False,
            'max_retries': 30,
            'retry_interval': 10,
            'offline_retry': True,
            'offline_retry_interval': 10,
            'anon_retry': True,
        }

        client = buildsys.koji_login(config, authenticate=True)

        for key in default_koji_opts:
            self.assertEqual(default_koji_opts[key], client.opts[key])
        self.assertEqual(type(client), koji.ClientSession)
        krb_login.assert_called_once_with(ccache='a_ccache',
                                          keytab='a_keytab',
                                          principal='a_principal')
        # No error should have been logged
        self.assertEqual(error.call_count, 0)
Пример #2
0
    def test_authenticate_false(self, error, krb_login):
        """If authenticate is False, no attempt to call krb_login() shold be made."""
        config = {
            'some_meaningless_other_key': 'boring_value',
            'krb_ccache': 'a_ccache',
            'krb_keytab': 'a_keytab',
            'krb_principal': 'a_principal'
        }
        default_koji_opts = {
            'krb_rdns': False,
            'max_retries': 30,
            'retry_interval': 10,
            'offline_retry': True,
            'offline_retry_interval': 10,
            'anon_retry': True,
        }

        client = buildsys.koji_login(config, authenticate=False)

        for key in default_koji_opts:
            self.assertEqual(default_koji_opts[key], client.opts[key])
        self.assertEqual(type(client), koji.ClientSession)
        # Since authenticate was False, the login should not have happened.
        self.assertEqual(krb_login.call_count, 0)
        # No error should have been logged
        self.assertEqual(error.call_count, 0)
Пример #3
0
    def test_AuthError(self, sleep, error, gssapi_login):
        """backoff should take effect if an AuthError is raised."""
        gssapi_login.side_effect = [koji.AuthError, koji.AuthError, True]
        config = {
            'some_meaningless_other_key': 'boring_value',
            'krb_ccache': 'a_ccache',
            'krb_keytab': 'a_keytab',
            'krb_principal': 'a_principal'
        }
        default_koji_opts = {
            'krb_rdns': False,
            'max_retries': 30,
            'retry_interval': 10,
            'offline_retry': True,
            'offline_retry_interval': 10,
            'anon_retry': True,
        }

        client = buildsys.koji_login(config, authenticate=True)

        for key in default_koji_opts:
            assert default_koji_opts[key] == client.opts[key]
        assert type(client) == koji.ClientSession
        # Due to the use of backoff, we should have called gssapi_login three times.
        assert gssapi_login.mock_calls == ([
            mock.call(
                ccache='a_ccache', keytab='a_keytab', principal='a_principal')
        ] * 3)
        # No error should have been logged
        assert error.call_count == 0
        # Make sure sleep was called twice, but we don't want to assert what values were used
        # because that's up to backoff and we don't want different versions of backoff to make
        # different choices and cause this test to fail.
        assert sleep.call_count == 2
Пример #4
0
    def test_login_failure(self, error):
        """Assert correct behavior for a failed login event."""
        config = {'some_meaningless_other_key': 'boring_value', 'krb_ccache': 'a_ccache',
                  'krb_keytab': 'a_keytab', 'krb_principal': 'a_principal'}

        client = buildsys.koji_login(config)

        self.assertEqual(type(client), koji.ClientSession)
        error.assert_called_once_with('Koji krb_login failed')
Пример #5
0
    def test_login_failure(self, error, krb_login):
        """Assert correct behavior for a failed login event."""
        krb_login.return_value = False
        config = {'some_meaningless_other_key': 'boring_value', 'krb_ccache': 'a_ccache',
                  'krb_keytab': 'a_keytab', 'krb_principal': 'a_principal'}

        client = buildsys.koji_login(config, authenticate=True)

        self.assertEqual(type(client), koji.ClientSession)
        krb_login.assert_called_once_with(ccache='a_ccache', keytab='a_keytab',
                                          principal='a_principal')
        error.assert_called_once_with('Koji krb_login failed')