def test_from_string_conversion_failure(self): config["jobtype_ignore_id_mapping_errors"] = True system = System() username = os.urandom(8).encode("hex") with patch.object(logger, "error") as error: value = system._get_uid_gid_value( username, None, "foo_bar", "getpwnam", "pwd" ) error.assert_called_with( "Failed to convert %s to a %s", username, "bar") self.assertIsNone(value) config["jobtype_ignore_id_mapping_errors"] = False username = os.urandom(8).encode("hex") with patch.object(logger, "error") as error: with self.assertRaises(KeyError): value = system._get_uid_gid_value( username, None, "foo_bar", "getpwnam", "pwd" ) error.assert_called_with( "Failed to convert %s to a %s", username, "bar") self.assertIsNone(value)
def test_module_not_implemented(self): system = System() with patch.object(logger, "warning") as warning: system._get_uid_gid_value( "", None, "function", NotImplemented, "module") warning.assert_called_with( "This platform does not implement the %r module, skipping %s()", "module", "function" )
def test_get_pwd_from_string(self): system = System() username = user.username() self.assertEqual( pwd.getpwnam(username).pw_uid, system._get_uid_gid_value( username, None, None, "getpwnam", "pwd" ) )
def test_from_integer_pwd_no_such_value(self): config["jobtype_ignore_id_mapping_errors"] = False system = System() all_ids = set(user.pw_uid for user in pwd.getpwall()) bad_id = 0 while True: if bad_id not in all_ids: break bad_id += 1 with self.assertRaises(KeyError): system._get_uid_gid_value( bad_id, None, None, "getpwuid", "pwd" ) config["jobtype_ignore_id_mapping_errors"] = True value = system._get_uid_gid_value( bad_id, None, None, "getpwuid", "pwd" ) self.assertIsNone(value)
def test_from_integer_grp_no_such_value(self): config["jobtype_ignore_id_mapping_errors"] = False system = System() all_ids = set(group.gr_gid for group in grp.getgrall()) bad_id = 0 while True: if bad_id not in all_ids: break bad_id += 1 with self.assertRaises(KeyError): system._get_uid_gid_value( bad_id, None, None, "getgrgid", "grp" ) config["jobtype_ignore_id_mapping_errors"] = True value = system._get_uid_gid_value( bad_id, None, None, "getgrgid", "grp" ) self.assertIsNone(value)
def test_get_grp_from_integer(self): system = System() success = True for group_id in os.getgroups(): try: self.assertEqual( group_id, system._get_uid_gid_value( group_id, None, None, "getgrnam", "grp" ) ) success = True # There's numerous ways this could happen including # the user being a part of the group however the group # itself is undefined. except KeyError: pass self.failUnless(success, "Expected at least one successful resolution")
def test_from_integer_no_such_module(self): system = System() with self.assertRaises(ValueError): system._get_uid_gid_value( 0, None, None, "getpwnam", "foo" )
def test_value_type(self): system = System() for entry in (None, [], tuple(), dict(), 1.0): with self.assertRaises(TypeError): system._get_uid_gid_value(entry, None, None, None, None)