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