def test_change_password_error(self):
     """
     UserManagement.add_user should raise a UserManagementError if
     chpasswd fails.
     """
     provider = FakeUserProvider(popen=MockPopen("", return_codes=[0, 1]))
     provider.popen.err_out = b"PAM is unhappy"
     management = UserManagement(provider=provider)
     with self.assertRaises(UserManagementError) as e:
         management.add_user("jdoe", u"John Doe", "password", False, None,
                             None, None, None)
     expected = "Error setting password for user {}.\n {}".format(
         b"jdoe", b"PAM is unhappy")
     self.assertEqual(expected, str(e.exception))
    def test_add_user(self):
        """L{UserManagement.add_user} should use C{adduser} to add users."""
        groups = [("users", "x", 1001, [])]
        provider = FakeUserProvider(groups=groups, popen=MockPopen(""))
        management = UserManagement(provider=provider)
        management.add_user("jdoe", "John Doe", "password", False, "users",
                            "Room 101", "+123456", None)
        self.assertEqual(len(provider.popen.popen_inputs), 2)
        self.assertEqual(provider.popen.popen_inputs[0],
                         ["adduser", "jdoe", "--disabled-password",
                          "--gecos", "John Doe,Room 101,+123456,",
                          "--gid", "1001"])

        chpasswd = provider.popen.popen_inputs[1]
        self.assertEqual(len(chpasswd), 1, chpasswd)
        self.assertEqual(b"jdoe:password", provider.popen.received_input)
예제 #3
0
    def test_add_user(self):
        """L{UserManagement.add_user} should use C{adduser} to add users."""
        groups = [("users", "x", 1001, [])]
        provider = FakeUserProvider(groups=groups, popen=MockPopen(""))
        management = UserManagement(provider=provider)
        management.add_user("jdoe", "John Doe", "password", False, "users",
                            "Room 101", "+123456", None)
        self.assertEqual(len(provider.popen.popen_inputs), 2)
        self.assertEqual(provider.popen.popen_inputs[0], [
            "adduser", "jdoe", "--disabled-password", "--gecos",
            "John Doe,Room 101,+123456,", "--gid", "1001"
        ])

        usermod = provider.popen.popen_inputs[1]
        self.assertEqual(len(usermod), 4, usermod)
        password = guess_password(usermod[2], "password")
        self.assertEqual(usermod, ["usermod", "-p", password, "jdoe"])