toddlers/tests/utils/test_bugzilla_system.py
Nils Philippsen 8be9cead78 Fix import order, separation to appease flake8
Signed-off-by: Nils Philippsen <nils@redhat.com>
2020-07-02 12:51:48 +02:00

203 lines
7.5 KiB
Python

import logging
from unittest.mock import Mock, patch
import xmlrpc.client
import pytest
import toddlers.utils.bugzilla_system
class TestBugzillaSystem:
def test_set_bz_no_bugzilla_url(self):
with pytest.raises(
ValueError, match=r"No bugzilla_url found in the configuration file"
):
toddlers.utils.bugzilla_system.set_bz({})
def test_set_bz_no_bugzilla_username(self):
with pytest.raises(
ValueError, match=r"No bugzilla_username found in the configuration file"
):
config = {
"bugzilla_url": "https:bz.example.com",
}
toddlers.utils.bugzilla_system.set_bz(config)
def test_set_bz_no_bugzilla_password(self):
with pytest.raises(
ValueError, match=r"No bugzilla_password found in the configuration file"
):
config = {
"bugzilla_url": "https:bz.example.com",
"bugzilla_username": "bz_username",
}
toddlers.utils.bugzilla_system.set_bz(config)
@patch("toddlers.utils.bugzilla_system.Bugzilla")
def test_set_bz(self, mock_bz):
mock_bz.return_value = "bugzilla_object"
config = {
"bugzilla_url": "https:bz.example.com",
"bugzilla_username": "bz_username",
"bugzilla_password": "bz_password",
}
output = toddlers.utils.bugzilla_system.set_bz(config)
mock_bz.assert_called_with(
url="https:bz.example.com/xmlrpc.cgi",
user="bz_username",
password="bz_password",
cookiefile=None,
tokenfile=None,
)
assert output == "bugzilla_object"
@patch("toddlers.utils.bugzilla_system._BUGZILLA", new=None)
def test_get_bz_not_set(self):
with pytest.raises(
ValueError, match=r"No bugzilla connection set, call set_bz first"
):
toddlers.utils.bugzilla_system.get_bz()
def test_get_bz(self):
output = toddlers.utils.bugzilla_system.get_bz()
assert output == "bugzilla_object"
@patch("toddlers.utils.bugzilla_system.get_bz")
def test_get_group_member(self, mock_bz):
groups = Mock()
groups.member_emails = ["foo@bar.com", "foo@baz.com"]
server = Mock()
server.getgroup.return_value = groups
mock_bz.return_value = server
output = toddlers.utils.bugzilla_system.get_group_member("test")
mock_bz.assert_called_with()
server.getgroup.assert_called_with("test", membership=True)
assert output == ["foo@bar.com", "foo@baz.com"]
@patch("toddlers.utils.bugzilla_system.get_bz")
def test_remove_user_from_group(self, mock_bz):
server = Mock()
server.updateperms.return_value = True
mock_bz.return_value = server
toddlers.utils.bugzilla_system.remove_user_from_group(
"test@foo.com", "groupname"
)
mock_bz.assert_called_with()
server.updateperms.assert_called_with("test@foo.com", "rem", "groupname")
@patch("toddlers.utils.bugzilla_system.get_bz")
def test_remove_user_from_group_failed(self, mock_bz):
server = Mock()
server.updateperms.side_effect = xmlrpc.client.Fault(55, "error string")
mock_bz.return_value = server
with pytest.raises(xmlrpc.client.Fault, match=r"<Fault 55: 'error string'>"):
toddlers.utils.bugzilla_system.remove_user_from_group(
"test@foo.com", "groupname"
)
mock_bz.assert_called_with()
server.updateperms.assert_called_with("test@foo.com", "rem", "groupname")
@patch("toddlers.utils.bugzilla_system.get_bz")
def test_remove_user_from_group_no_user(self, mock_bz):
server = Mock()
server.updateperms.side_effect = xmlrpc.client.Fault(51, "No such user")
mock_bz.return_value = server
toddlers.utils.bugzilla_system.remove_user_from_group(
"test@foo.com", "groupname"
)
mock_bz.assert_called_with()
server.updateperms.assert_called_with("test@foo.com", "rem", "groupname")
@patch("toddlers.utils.bugzilla_system.get_bz")
def test_user_exists(self, mock_bz):
server = Mock()
server.getuser.return_value = True
mock_bz.return_value = server
output = toddlers.utils.bugzilla_system.user_exists("test@foo.com")
mock_bz.assert_called_with()
server.getuser.assert_called_with("test@foo.com")
assert output
@patch("toddlers.utils.bugzilla_system.get_bz")
def test_user_exists_no_user(self, mock_bz):
server = Mock()
server.getuser.side_effect = xmlrpc.client.Fault(51, "No such user")
mock_bz.return_value = server
output = toddlers.utils.bugzilla_system.user_exists("test@foo.com")
mock_bz.assert_called_with()
server.getuser.assert_called_with("test@foo.com")
assert output is False
@patch("toddlers.utils.bugzilla_system.get_bz")
def test_user_exists_failed(self, mock_bz):
server = Mock()
server.getuser.side_effect = xmlrpc.client.Fault(55, "error string")
mock_bz.return_value = server
with pytest.raises(xmlrpc.client.Fault, match=r"<Fault 55: 'error string'>"):
toddlers.utils.bugzilla_system.user_exists("test@foo.com")
mock_bz.assert_called_with()
server.getuser.assert_called_with("test@foo.com")
@patch("toddlers.utils.bugzilla_system.user_exists", new=Mock(return_value=False))
@patch("toddlers.utils.bugzilla_system.get_bz")
def test_add_user_to_group_no_user(self, mock_bz):
server = Mock()
server.updateperms.return_value = True
mock_bz.return_value = server
output = toddlers.utils.bugzilla_system.add_user_to_group(
user_email="test@foo.com",
bz_group="groupname",
no_bz_account=[],
dry_run=False,
)
mock_bz.assert_called_with()
server.updateperms.assert_not_called()
assert output == ["test@foo.com"]
@patch("toddlers.utils.bugzilla_system.user_exists", new=Mock(return_value=True))
@patch("toddlers.utils.bugzilla_system.get_bz")
def test_add_user_to_group_dry_run(self, mock_bz, caplog):
caplog.set_level(logging.INFO)
server = Mock()
server.updateperms.return_value = True
mock_bz.return_value = server
output = toddlers.utils.bugzilla_system.add_user_to_group(
user_email="test@foo.com",
bz_group="groupname",
no_bz_account=[],
dry_run=True,
)
mock_bz.assert_called_with()
server.updateperms.assert_not_called()
assert output == []
assert (
caplog.records[-1].message
== " Would add test@foo.com to the group groupname"
)
@patch("toddlers.utils.bugzilla_system.user_exists", new=Mock(return_value=True))
@patch("toddlers.utils.bugzilla_system.get_bz")
def test_add_user_to_group(self, mock_bz, caplog):
caplog.set_level(logging.INFO)
server = Mock()
server.updateperms.return_value = True
mock_bz.return_value = server
output = toddlers.utils.bugzilla_system.add_user_to_group(
user_email="test@foo.com",
bz_group="groupname",
no_bz_account=[],
dry_run=False,
)
mock_bz.assert_called_with()
server.updateperms.assert_called_with("test@foo.com", "add", "groupname")
assert output == []