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 get_user_list_test(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) self.assertEqual(len(user_data_list), 2) self.assertIsInstance(user_data_list[0], UserData) self.assertIsInstance(user_data_list[1], UserData) self.assertTrue(compare_data(user_data_list[0], user1)) self.assertTrue(compare_data(user_data_list[1], user2)) user_data_list = get_user_list(users_module_mock, add_default=True) self.assertEqual(len(user_data_list), 2) self.assertIsInstance(user_data_list[0], UserData) self.assertIsInstance(user_data_list[1], UserData) self.assertTrue(compare_data(user_data_list[0], user1)) self.assertTrue(compare_data(user_data_list[1], user2)) user_data_list = get_user_list(users_module_mock, add_default=True, add_if_not_empty=True) self.assertEqual(len(user_data_list), 3) self.assertIsInstance(user_data_list[0], UserData) self.assertIsInstance(user_data_list[1], UserData) self.assertIsInstance(user_data_list[2], UserData) self.assertTrue(compare_data(user_data_list[0], UserData())) self.assertTrue(compare_data(user_data_list[1], user1)) self.assertTrue(compare_data(user_data_list[2], user2))
def test_admin_user_detection_6(self): """Test that admin user detection works correctly - 1 admin (case 5).""" # 2 users, unlocked root user1 = UserData() user1.name = "user1" user1.groups = ["foo", "bar"] user1.lock = False user2 = UserData() user2.name = "user2" user2.groups = ["baz", "bar"] user2.lock = False self.users_interface.SetUsers(UserData.to_structure_list([user1, user2])) self.users_interface.SetCryptedRootPassword("abc") self.users_interface.SetRootAccountLocked(False) assert self.users_interface.CheckAdminUserExists()
def test_admin_user_detection_2(self): """Test that admin user detection works correctly - 0 admins (case 1).""" # 2 locked admin users, locked root user1 = UserData() user1.name = "user1" user1.groups = ["foo", "wheel", "bar"] user1.lock = True user2 = UserData() user2.name = "user2" user2.groups = ["baz", "bar", "wheel"] user2.lock = True self.users_interface.SetUsers(UserData.to_structure_list([user1, user2])) self.users_interface.SetCryptedRootPassword("abc") self.users_interface.SetRootAccountLocked(True) assert not self.users_interface.CheckAdminUserExists()
def test_admin_user_detection_5(self): """Test that admin user detection works correctly - 1 admin (case 4).""" # 1 user, 1 unlocked admin user, locked root user1 = UserData() user1.name = "user1" user1.groups = ["foo", "bar"] user1.lock = False user2 = UserData() user2.name = "user2" user2.groups = ["baz", "bar", "wheel"] user2.lock = False self.users_interface.Users = UserData.to_structure_list([user1, user2]) self.users_interface.SetCryptedRootPassword("abc") self.users_interface.IsRootAccountLocked = True assert self.users_interface.CheckAdminUserExists()
def set_user_list(users_module, user_data_list, remove_unset=False): """Properly set the user list in the Users DBus module. Internally we are working with a list of UserData instances, while the SetUsers DBus API requires a list of DBus structures. Doing the conversion each time we need to set a new user list would be troublesome so this method takes a list of UserData instances, converts them to list of DBus structs and then forwards the list to the Users module. Also if remove_unset is True we will drop any UserData instances from the list before forwarding it to the Users DBus module. Missing name is used as an indicator that the given user has been unset by one of the UIs and should be discarded. :param users_module: Users DBus module proxy :param list user_data_list: list of user data objects :param bool remove_unset: remove all users without name from the list before setting it :type user_data_list: list of UserData instances """ if remove_unset: user_data_list = [user for user in user_data_list if user.name] users_module.Users = UserData.to_structure_list(user_data_list)
def Users(self) -> List[Structure]: """List of users, each describing a single user. :return: a list of user describing DBus Structures """ return UserData.to_structure_list(self.implementation.users)