示例#1
0
    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)
示例#2
0
    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))
示例#3
0
    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()
示例#4
0
    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()
示例#6
0
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)