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