def test_get_user_list(self):
        """Test the shared get_user_list() method."""
        user1 = UserData()
        user1.name = "user1"
        user1.uid = 123
        user1.groups = ["foo", "bar"]
        user1.gid = 321
        user1.homedir = "user1_home"
        user1.password = "******"
        user1.is_crypted = False
        user1.lock = False
        user1.shell = "zsh"
        user1.gecos = "some stuff"

        user2 = UserData()
        user2.name = "user2"
        user2.uid = 456
        user2.groups = ["baz", "bar"]
        user2.gid = 654
        user2.homedir = "user2_home"
        user2.password = "******"
        user2.is_crypted = True
        user2.lock = False
        user2.shell = "csh"
        user2.gecos = "some other stuff"

        users_module_mock = Mock()
        users_module_mock.Users = UserData.to_structure_list([user1, user2])
        user_data_list = get_user_list(users_module_mock)

        assert len(user_data_list) == 2
        assert isinstance(user_data_list[0], UserData)
        assert isinstance(user_data_list[1], UserData)
        assert compare_data(user_data_list[0], user1)
        assert compare_data(user_data_list[1], user2)

        user_data_list = get_user_list(users_module_mock, add_default=True)

        assert len(user_data_list) == 2
        assert isinstance(user_data_list[0], UserData)
        assert isinstance(user_data_list[1], UserData)
        assert compare_data(user_data_list[0], user1)
        assert compare_data(user_data_list[1], user2)

        user_data_list = get_user_list(users_module_mock,
                                       add_default=True,
                                       add_if_not_empty=True)
        default_added_user_data = UserData()
        default_added_user_data.set_admin_priviledges(True)

        assert len(user_data_list) == 3
        assert isinstance(user_data_list[0], UserData)
        assert isinstance(user_data_list[1], UserData)
        assert isinstance(user_data_list[2], UserData)
        assert compare_data(user_data_list[0], default_added_user_data)
        assert compare_data(user_data_list[1], user1)
        assert compare_data(user_data_list[2], user2)
    def test_get_default_user(self):
        """Test that default user is correctly added by get_user_list()."""
        users_module_mock = Mock()
        users_module_mock.Users = []
        user_data_list = get_user_list(users_module_mock, add_default=True)

        default_added_user_data = UserData()
        default_added_user_data.set_admin_priviledges(True)

        assert len(user_data_list) == 1
        assert isinstance(user_data_list[0], UserData)
        assert compare_data(user_data_list[0], default_added_user_data)
Beispiel #3
0
    def test_set_admin_priviledges(self):
        """Test setting user admin privileges works correctly."""
        user_data = UserData()
        assert not user_data.has_admin_priviledges()
        assert "wheel" not in user_data.groups

        # turn it on
        user_data.set_admin_priviledges(True)
        assert user_data.has_admin_priviledges()
        assert "wheel" in user_data.groups

        # turn it off
        user_data.set_admin_priviledges(False)
        assert not user_data.has_admin_priviledges()
        assert "wheel" not in user_data.groups

        # existing groups - turn in on
        user_data = UserData()
        user_data.groups = ["foo", "bar"]
        user_data.set_admin_priviledges(True)
        assert user_data.has_admin_priviledges()
        assert "wheel" in user_data.groups
        assert "foo" in user_data.groups
        assert "bar" in user_data.groups

        # existing groups - turn in off
        user_data.set_admin_priviledges(False)
        assert not user_data.has_admin_priviledges()
        assert "wheel" not in user_data.groups
        assert "foo" in user_data.groups
        assert "bar" in user_data.groups

        # group wheel added externally
        user_data = UserData()
        user_data.groups = ["foo", "bar", "wheel"]
        assert user_data.has_admin_priviledges()
        assert "wheel" in user_data.groups
        assert "foo" in user_data.groups
        assert "bar" in user_data.groups

        # now remove the wheel group via API
        user_data.set_admin_priviledges(False)
        assert not user_data.has_admin_priviledges()
        assert "wheel" not in user_data.groups
        assert "foo" in user_data.groups
        assert "bar" in user_data.groups
Beispiel #4
0
    def set_admin_priviledges_test(self):
        """Test setting user admin privileges works correctly."""
        user_data = UserData()
        self.assertFalse(user_data.has_admin_priviledges())
        self.assertNotIn("wheel", user_data.groups)

        # turn it on
        user_data.set_admin_priviledges(True)
        self.assertTrue(user_data.has_admin_priviledges())
        self.assertIn("wheel", user_data.groups)

        # turn it off
        user_data.set_admin_priviledges(False)
        self.assertFalse(user_data.has_admin_priviledges())
        self.assertNotIn("wheel", user_data.groups)

        # existing groups - turn in on
        user_data = UserData()
        user_data.groups = ["foo", "bar"]
        user_data.set_admin_priviledges(True)
        self.assertTrue(user_data.has_admin_priviledges())
        self.assertIn("wheel", user_data.groups)
        self.assertIn("foo", user_data.groups)
        self.assertIn("bar", user_data.groups)

        # existing groups - turn in off
        user_data.set_admin_priviledges(False)
        self.assertFalse(user_data.has_admin_priviledges())
        self.assertNotIn("wheel", user_data.groups)
        self.assertIn("foo", user_data.groups)
        self.assertIn("bar", user_data.groups)

        # group wheel added externally
        user_data = UserData()
        user_data.groups = ["foo", "bar", "wheel"]
        self.assertTrue(user_data.has_admin_priviledges())
        self.assertIn("wheel", user_data.groups)
        self.assertIn("foo", user_data.groups)
        self.assertIn("bar", user_data.groups)

        # now remove the wheel group via API
        user_data.set_admin_priviledges(False)
        self.assertFalse(user_data.has_admin_priviledges())
        self.assertNotIn("wheel", user_data.groups)
        self.assertIn("foo", user_data.groups)
        self.assertIn("bar", user_data.groups)
Beispiel #5
0
def get_user_list(users_module, add_default=False, add_if_not_empty=False):
    """Get list of users from the Users DBus module.

    If add_default is True we will add an empty UserData instance as the first element
    of the list, so that the UIs don't have to handle that themselves.

    :param users_module: Users DBus module proxy
    :param bool add_default: if True add default user as first list element
    :returns: list of users from the Users DBus module
    :rtype: list
    """

    user_data_list = UserData.from_structure_list(users_module.Users)

    if add_default:
        # we only add default user to an empty list, to add default user to
        # a populated list the add_if_not_empty option needs to be used
        if not user_data_list or add_if_not_empty:
            data = UserData()
            data.set_admin_priviledges(True)
            user_data_list.insert(0, data)

    return user_data_list