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)
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)
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
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')
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')