def test_set_password(self):
        """
        UserManagement.set_password should use chpasswd to change
        a user's password.
        """
        data = [("jdoe", "x", 1000, 1000, "JD,,,,", "/home/jdoe", "/bin/zsh")]
        provider = FakeUserProvider(users=data, shadow_file=self.shadow_file,
                                    popen=MockPopen("no output"))
        management = UserManagement(provider=provider)
        management.set_user_details("jdoe", password="******")

        self.assertEqual(b"jdoe:password", provider.popen.received_input)
        self.assertEqual(provider.popen.popen_inputs, [["chpasswd"]])
 def test_set_password_with_system_user(self):
     """
     L{UserManagement.set_password} should allow us to edit system
     users.
     """
     data = [("root", "x", 0, 0, ",,,,", "/home/root", "/bin/zsh")]
     provider = FakeUserProvider(users=data,
                                 shadow_file=self.shadow_file,
                                 popen=MockPopen("no output"))
     management = UserManagement(provider=provider)
     management.set_user_details("root", password="******")
     self.assertEqual(len(provider.popen.popen_inputs), 1)
     self.assertEqual(b"root:password", provider.popen.received_input)
 def test_clear_telephone_numbers(self):
     """
     L{UserManagement.set_user_details} should use C{chfn} to
     change a user's telephone numbers.
     """
     data = [("jdoe", "x", 1000, 1000, "JD,,+123456,+123456", "/home/jdoe",
              "/bin/zsh")]
     provider = FakeUserProvider(users=data, shadow_file=self.shadow_file,
                                 popen=MockPopen("no output"))
     management = UserManagement(provider=provider)
     management.set_user_details("jdoe", home_number="", work_number="")
     self.assertEqual(len(provider.popen.popen_inputs), 1)
     self.assertEqual(provider.popen.popen_inputs,
                      [["chfn", "-w", "", "-h", "", "jdoe"]])
 def test_clear_user_location(self):
     """
     L{UserManagement.set_user_details} should use C{chfn} to
     change a user's location.
     """
     data = [("jdoe", "x", 1000, 1000, "JD,Room 101,,,", "/home/jdoe",
              "/bin/zsh")]
     provider = FakeUserProvider(users=data, shadow_file=self.shadow_file,
                                 popen=MockPopen("no output"))
     management = UserManagement(provider=provider)
     management.set_user_details("jdoe", location="")
     self.assertEqual(len(provider.popen.popen_inputs), 1)
     self.assertEqual(provider.popen.popen_inputs,
                      [["chfn", "-r", "", "jdoe"]])
    def test_set_name(self):
        """
        L{UserManagement.set_user_details} should use C{chfn} to
        change a user's name.
        """
        data = [("jdoe", "x", 1000, 1000, "JD,,,,", "/home/jdoe", "/bin/zsh")]
        provider = FakeUserProvider(users=data, shadow_file=self.shadow_file,
                                    popen=MockPopen("no output"))
        management = UserManagement(provider=provider)
        management.set_user_details("jdoe", name="JD")

        self.assertEqual(len(provider.popen.popen_inputs), 1)
        self.assertEqual(provider.popen.popen_inputs,
                         [["chfn", "-f", "JD", "jdoe"]])
    def test_set_password_unicode(self):
        """
        Make sure passing unicode as username and password doesn't
        change things much (note that using something that's
        non-ASCII-encodable still probably won't work).
        """
        data = [("jdoe", "x", 1000, 1000, "JD,,,,", "/home/jdoe", "/bin/zsh")]
        provider = FakeUserProvider(users=data, shadow_file=self.shadow_file,
                                    popen=MockPopen("no output"))
        management = UserManagement(provider=provider)
        management.set_user_details("jdoe", password=u"password")

        self.assertEqual(len(provider.popen.popen_inputs), 1)
        self.assertEqual(b"jdoe:password", provider.popen.received_input)
    def test_set_primary_group(self):
        """
        L{UserManagement.set_set_user_details} should use C{usermod} to change
        the user's primary group.
        """
        data = [("jdoe", "x", 1000, 1000, "JD,,,,", "/home/jdoe", "/bin/zsh")]
        groups = [("users", "x", 1001, [])]
        provider = FakeUserProvider(users=data, groups=groups,
                                    shadow_file=self.shadow_file,
                                    popen=MockPopen("no output"))

        management = UserManagement(provider=provider)
        management.set_user_details("jdoe", primary_group_name="users")

        self.assertEqual(provider.popen.popen_inputs,
                         [["usermod", "-g", "1001", "jdoe"]])
Пример #8
0
    def test_set_password(self):
        """
        L{UserManagement.set_password} should use C{usermod} to change
        a user's password.
        """
        data = [("jdoe", "x", 1000, 1000, "JD,,,,", "/home/jdoe", "/bin/zsh")]
        provider = FakeUserProvider(users=data,
                                    shadow_file=self.shadow_file,
                                    popen=MockPopen("no output"))
        management = UserManagement(provider=provider)
        management.set_user_details("jdoe", password="******")

        self.assertEqual(len(provider.popen.popen_inputs), 1)
        password = provider.popen.popen_inputs[0][2]
        password = guess_password(password, "password")
        self.assertEqual(provider.popen.popen_inputs,
                         [["usermod", "-p", password, "jdoe"]])
    def test_contact_details_in_general(self):
        """
        L{UserManagement.set_user_details} should use C{chfn} to
        change a user's contact details.
        """
        data = [("jdoe", "x", 1000, 1000, "JD,,,,", "/home/jdoe", "/bin/zsh")]
        provider = FakeUserProvider(users=data, shadow_file=self.shadow_file,
                                    popen=MockPopen("no output"))
        management = UserManagement(provider=provider)
        location = u"Everywhere"
        work_number = u"1-800-123-4567"
        home_number = u"764-4321"
        management.set_user_details("jdoe", location=location,
                                    work_number=work_number,
                                    home_number=home_number)

        self.assertEqual(len(provider.popen.popen_inputs), 1)
        self.assertEqual(provider.popen.popen_inputs,
                         [["chfn", "-r", location, "-w", work_number,
                           "-h", home_number, "jdoe"]])