Enable gating tests for shadow-utils
Resolves: rhbz#1962811 Files from test directory are updated from the internal 8.5.0 repo
This commit is contained in:
parent
3eb64bd5e9
commit
d3db3c8cb5
7
gating.yaml
Normal file
7
gating.yaml
Normal file
@ -0,0 +1,7 @@
|
||||
--- !Policy
|
||||
product_versions:
|
||||
- rhel-9
|
||||
decision_context: osci_compose_gate
|
||||
rules:
|
||||
- !PassingTestCaseRule {test_case_name: osci.brew-build.tier0.functional}
|
||||
- !PassingTestCaseRule {test_case_name: baseos-ci.brew-build.tier1.functional}
|
@ -72,6 +72,6 @@ $(METADATA): Makefile
|
||||
@echo "TestTime: 5m" >> $(METADATA)
|
||||
@echo "RunFor: $(PACKAGE_NAME)" >> $(METADATA)
|
||||
@echo "Requires: $(PACKAGE_NAME)" >> $(METADATA)
|
||||
@echo "Requires: python" >> $(METADATA)
|
||||
@echo "Requires: python3-devel" >> $(METADATA)
|
||||
rhts-lint $(METADATA)
|
||||
|
||||
|
@ -3,9 +3,13 @@
|
||||
. /usr/share/beakerlib/beakerlib.sh || exit 1
|
||||
|
||||
rlJournalStart
|
||||
rlFileBackup --clean /etc/default/useradd- /etc/default/useradd
|
||||
rlFileBackup --clean /etc/default/useradd- /etc/default/useradd /etc/nsswitch.conf
|
||||
setenforce 0
|
||||
python sanity_test.py -v
|
||||
# We do not want sssd to interfere
|
||||
for i in passwd group shadow ; do
|
||||
sed -i "s/^$i:.*/$i: files/" /etc/nsswitch.conf
|
||||
done
|
||||
python3 sanity_test.py -v
|
||||
setenforce 1
|
||||
rlFileRestore
|
||||
|
||||
|
@ -15,7 +15,7 @@ TODO:
|
||||
import unittest
|
||||
import pwd
|
||||
import grp
|
||||
import commands
|
||||
import subprocess
|
||||
import os
|
||||
import os.path
|
||||
import sys
|
||||
@ -24,14 +24,14 @@ import tempfile
|
||||
import rpm
|
||||
import shutil
|
||||
|
||||
from UserDict import UserDict
|
||||
from collections import UserDict
|
||||
|
||||
class RedHatVersion(object):
|
||||
def __init__(self, type=None, version=None, release=None):
|
||||
self.type = type
|
||||
self.version = version
|
||||
self.release = release
|
||||
self.rhel = False
|
||||
self.rhel = False
|
||||
|
||||
def __eq__( self, other):
|
||||
"""
|
||||
@ -64,9 +64,12 @@ class RedHatVersion(object):
|
||||
rhel_versions[ver_rpm] = 6
|
||||
if ver_rpm in rhel_versions.keys():
|
||||
return (rhel_versions[ver_rpm], rel_rpm)
|
||||
elif b'.' in ver_rpm:
|
||||
ver_rpm = ver_rpm.split(b'.')[0]
|
||||
return (int(ver_rpm), rel_rpm)
|
||||
|
||||
def is_rhel(self):
|
||||
return self.rhel
|
||||
return self.rhel
|
||||
|
||||
def get_info(self):
|
||||
"""
|
||||
@ -80,11 +83,11 @@ class RedHatVersion(object):
|
||||
mi.pattern('name', rpm.RPMMIRE_GLOB, 'redhat-release*')
|
||||
|
||||
if mi:
|
||||
self.rhel = True
|
||||
self.rhel = True
|
||||
return ('RHEL',) + self.__get_rhel_info(mi)
|
||||
else:
|
||||
mi = ts.dbMatch('name','fedora-release')
|
||||
self.rhel = False
|
||||
self.rhel = False
|
||||
if mi.count() != 0:
|
||||
return ('Fedora',) + self.__get_fedora_info(mi)
|
||||
|
||||
@ -189,17 +192,20 @@ class LoginDefsParser(UserDict):
|
||||
|
||||
def __init__(self, path="/etc/login.defs",split=None):
|
||||
self.path = path
|
||||
self.data = []
|
||||
UserDict.__init__(self)
|
||||
try:
|
||||
defs = open(path)
|
||||
except IOError:
|
||||
print "Could not open the config file %s" % (path)
|
||||
|
||||
print("Could not open the config file %s" % (path))
|
||||
return
|
||||
|
||||
for line in defs:
|
||||
if line.startswith('#'): continue
|
||||
fields = line.split(split)
|
||||
if len(fields) != 2: continue # yeah, we're dirty
|
||||
self.data[fields[0]] = fields[1]
|
||||
defs.close()
|
||||
|
||||
def serialize(self):
|
||||
output = open(self.path, "w+")
|
||||
@ -245,7 +251,7 @@ class ShadowUtilsTestBase:
|
||||
""" Handy routines """
|
||||
def getDefaults(self):
|
||||
# get the default values for so we can compare against that
|
||||
(status, defaults_str) = commands.getstatusoutput('useradd -D')
|
||||
(status, defaults_str) = subprocess.getstatusoutput('useradd -D')
|
||||
if status != 0:
|
||||
raise RuntimeError("Could not get the default values for useradd")
|
||||
return dict([ rec.split("=") for rec in defaults_str.split("\n") ])
|
||||
@ -265,15 +271,15 @@ class TestUseradd(ShadowUtilsTestBase, unittest.TestCase):
|
||||
self.username = "test-shadow-utils-useradd"
|
||||
|
||||
def tearDown(self):
|
||||
commands.getstatusoutput("userdel -r %s" % (self.username))
|
||||
subprocess.getstatusoutput("userdel -r %s" % (self.username))
|
||||
|
||||
def testBasicAdd(self):
|
||||
""" useradd: Tests basic adding of a user """
|
||||
expected = self.getDefaultUserInfo(self.username)
|
||||
|
||||
runme = "useradd %s" % (self.username)
|
||||
(status, output) = commands.getstatusoutput(runme)
|
||||
self.failUnlessEqual(status, 0, output)
|
||||
(status, output) = subprocess.getstatusoutput(runme)
|
||||
self.assertEqual(status, 0, output)
|
||||
|
||||
created = UserInfo()
|
||||
created.get_info_name(self.username)
|
||||
@ -281,9 +287,9 @@ class TestUseradd(ShadowUtilsTestBase, unittest.TestCase):
|
||||
|
||||
def testExistingUser(self):
|
||||
""" useradd: Test that user with an existing name cannot be added """
|
||||
(status, output) = commands.getstatusoutput("useradd %s" % (self.username))
|
||||
self.failUnlessEqual(status, 0, output)
|
||||
self.assertNotEqual(commands.getstatusoutput("useradd %s" % (self.username))[0], 0, "FAIL: User that already exists added")
|
||||
(status, output) = subprocess.getstatusoutput("useradd %s" % (self.username))
|
||||
self.assertEqual(status, 0, output)
|
||||
self.assertNotEqual(subprocess.getstatusoutput("useradd %s" % (self.username))[0], 0, "FAIL: User that already exists added")
|
||||
|
||||
def testCustomUID(self):
|
||||
""" useradd: Adding an user with a specific UID """
|
||||
@ -293,8 +299,8 @@ class TestUseradd(ShadowUtilsTestBase, unittest.TestCase):
|
||||
expected["pw_uid"] = UID
|
||||
|
||||
runme = "useradd %s -u %d" % (self.username, UID)
|
||||
(status, output) = commands.getstatusoutput(runme)
|
||||
self.failUnlessEqual(status, 0, "Issued command: %s\n" % (runme) + "Got from useradd: %s\n" % (output))
|
||||
(status, output) = subprocess.getstatusoutput(runme)
|
||||
self.assertEqual(status, 0, "Issued command: %s\n" % (runme) + "Got from useradd: %s\n" % (output))
|
||||
|
||||
created = UserInfo()
|
||||
created.get_info_name(self.username)
|
||||
@ -302,7 +308,7 @@ class TestUseradd(ShadowUtilsTestBase, unittest.TestCase):
|
||||
|
||||
def testNegativeUID(self):
|
||||
""" useradd: Tests that user cannot have a negative UID assigned """
|
||||
self.assertNotEqual(commands.getstatusoutput("useradd %s --uid -5" % (self.username))[0], 0, "FAIL: User with UID < 0 added")
|
||||
self.assertNotEqual(subprocess.getstatusoutput("useradd %s --uid -5" % (self.username))[0], 0, "FAIL: User with UID < 0 added")
|
||||
|
||||
def testCustomExistingUID(self):
|
||||
""" useradd: Adding a user with a specific existing UID """
|
||||
@ -311,20 +317,20 @@ class TestUseradd(ShadowUtilsTestBase, unittest.TestCase):
|
||||
expected = self.getDefaultUserInfo(self.username)
|
||||
expected["pw_uid"] = UID
|
||||
|
||||
(status_u, output_u) = commands.getstatusoutput("useradd %s -u %d" % (self.username, UID))
|
||||
(status_u, output_u) = subprocess.getstatusoutput("useradd %s -u %d" % (self.username, UID))
|
||||
|
||||
# must fail without -o flag
|
||||
(status_u_no_o, output_u_no_o) = commands.getstatusoutput("useradd foo -u %d" % (UID))
|
||||
(status_u_no_o, output_u_no_o) = subprocess.getstatusoutput("useradd foo -u %d" % (UID))
|
||||
|
||||
# must pass with -o flag
|
||||
(status_o, output_o) = commands.getstatusoutput("useradd foo -u %d -o" % (UID))
|
||||
(status_o, output_o) = subprocess.getstatusoutput("useradd foo -u %d -o" % (UID))
|
||||
|
||||
# clean up
|
||||
(status, output) = commands.getstatusoutput("userdel -r foo")
|
||||
(status, output) = subprocess.getstatusoutput("userdel -r foo")
|
||||
|
||||
self.failUnlessEqual(status_u, 0, "FAIL: cannot add an user with a specified UID\n"+output_u)
|
||||
self.assertEqual(status_u, 0, "FAIL: cannot add an user with a specified UID\n"+output_u)
|
||||
self.assertEqual(status_o, 0, "FAIL: cannot add an user with an existing UID using the -o flag\n"+output_o)
|
||||
self.failUnlessEqual(status, 0, output)
|
||||
self.assertEqual(status, 0, output)
|
||||
self.assertNotEqual(status_u_no_o, 0, "FAIL: user with an existing UID added\n"+output_u_no_o)
|
||||
|
||||
def testCustomGID(self):
|
||||
@ -333,8 +339,8 @@ class TestUseradd(ShadowUtilsTestBase, unittest.TestCase):
|
||||
expected = self.getDefaultUserInfo(self.username)
|
||||
expected["pw_gid"] = GID
|
||||
|
||||
(status, output) = commands.getstatusoutput("useradd %s -g %d" % (self.username, GID))
|
||||
self.failUnlessEqual(status, 0, output)
|
||||
(status, output) = subprocess.getstatusoutput("useradd %s -g %d" % (self.username, GID))
|
||||
self.assertEqual(status, 0, output)
|
||||
|
||||
created = UserInfo()
|
||||
created.get_info_name(self.username)
|
||||
@ -346,8 +352,8 @@ class TestUseradd(ShadowUtilsTestBase, unittest.TestCase):
|
||||
expected = self.getDefaultUserInfo(self.username)
|
||||
expected["pw_shell"] = shell
|
||||
|
||||
(status, output) = commands.getstatusoutput("useradd %s -s %s" % (self.username, shell))
|
||||
self.failUnlessEqual(status, 0, output)
|
||||
(status, output) = subprocess.getstatusoutput("useradd %s -s %s" % (self.username, shell))
|
||||
self.assertEqual(status, 0, output)
|
||||
|
||||
created = UserInfo()
|
||||
created.get_info_name(self.username)
|
||||
@ -355,14 +361,14 @@ class TestUseradd(ShadowUtilsTestBase, unittest.TestCase):
|
||||
|
||||
def testCustomHome(self):
|
||||
""" useradd: Adding an user with a specific home directory """
|
||||
home = "/tmp/useradd-test"
|
||||
os.mkdir(home)
|
||||
home = "/tmp/useradd-test"
|
||||
os.mkdir(home)
|
||||
expected = self.getDefaultUserInfo(self.username)
|
||||
expected["pw_dir"] = home
|
||||
|
||||
(status, output) = commands.getstatusoutput("useradd %s -d %s" % (self.username, home))
|
||||
shutil.rmtree(home)
|
||||
self.failUnlessEqual(status, 0, output)
|
||||
(status, output) = subprocess.getstatusoutput("useradd %s -d %s" % (self.username, home))
|
||||
shutil.rmtree(home)
|
||||
self.assertEqual(status, 0, output)
|
||||
|
||||
created = UserInfo()
|
||||
created.get_info_name(self.username)
|
||||
@ -375,19 +381,19 @@ class TestUseradd(ShadowUtilsTestBase, unittest.TestCase):
|
||||
# system account with no home dir
|
||||
expected = self.getDefaultUserInfo(self.username)
|
||||
|
||||
(status, output) = commands.getstatusoutput("useradd -r %s" % (self.username))
|
||||
self.failUnlessEqual(status, 0, output)
|
||||
(status, output) = subprocess.getstatusoutput("useradd -r %s" % (self.username))
|
||||
self.assertEqual(status, 0, output)
|
||||
|
||||
created = UserInfo()
|
||||
created.get_info_name(self.username)
|
||||
self.assertEqual(os.path.exists(created["pw_dir"]), False, "FAIL: System user has a home dir created")
|
||||
self.assertEqual(created["pw_uid"] < defaults['UID_MIN'], True, "FAIL: System user has UID > UID_MIN")
|
||||
self.assertEqual(created["pw_uid"] < int(defaults['UID_MIN']), True, "FAIL: System user has UID > UID_MIN")
|
||||
self.assertEqual(created.lazy_compare(expected), True, "FAIL: Could not add a system user")
|
||||
|
||||
def testAddToMoreGroups(self):
|
||||
""" useradd: Creating an user that belongs to more than one group """
|
||||
(status, output) = commands.getstatusoutput("useradd -G bin %s" % (self.username))
|
||||
self.failUnlessEqual(status, 0, output)
|
||||
(status, output) = subprocess.getstatusoutput("useradd -G bin %s" % (self.username))
|
||||
self.assertEqual(status, 0, output)
|
||||
|
||||
gr_bin = GroupInfo()
|
||||
gr_bin.get_info_name("bin")
|
||||
@ -397,8 +403,8 @@ class TestUseradd(ShadowUtilsTestBase, unittest.TestCase):
|
||||
def testAddWithCommonName(self):
|
||||
""" useradd: Specifying a comment (user for account name) """
|
||||
comment = "zzzzzz"
|
||||
(status, output) = commands.getstatusoutput("useradd -c %s %s" % (comment, self.username))
|
||||
self.failUnlessEqual(status, 0, output)
|
||||
(status, output) = subprocess.getstatusoutput("useradd -c %s %s" % (comment, self.username))
|
||||
self.assertEqual(status, 0, output)
|
||||
|
||||
created = UserInfo()
|
||||
created.get_info_name(self.username)
|
||||
@ -408,32 +414,32 @@ class TestUseradd(ShadowUtilsTestBase, unittest.TestCase):
|
||||
""" useradd: Check if permissions on newly created home dir match the umask """
|
||||
defaults = LoginDefsParser()
|
||||
|
||||
(status, output) = commands.getstatusoutput("useradd %s" % (self.username))
|
||||
self.failUnlessEqual(status, 0, output)
|
||||
(status, output) = subprocess.getstatusoutput("useradd %s" % (self.username))
|
||||
self.assertEqual(status, 0, output)
|
||||
|
||||
created = UserInfo()
|
||||
created.get_info_name(self.username)
|
||||
|
||||
import stat
|
||||
perm = os.stat(created["pw_dir"])[stat.ST_MODE]
|
||||
mode = int(oct(perm & 0777))
|
||||
mode = perm & 0o777
|
||||
|
||||
self.assertEqual(defaults["UMASK"], "077", "FAIL: umask setting is not sane - is %s, should be 077" % (defaults["UMASK"]))
|
||||
self.assertEqual(int(defaults["UMASK"]) + mode , 777, "FAIL: newly-created home dir does not match the umask")
|
||||
self.assertEqual(int(defaults["UMASK"], 8) + mode , 0o777, "FAIL: newly-created home dir does not match the umask")
|
||||
|
||||
def testCreateMailSpool(self):
|
||||
""" useradd: Check whether the mail spool gets created when told to"""
|
||||
# set up creating of mail spool
|
||||
defaults = LoginDefsParser("/etc/default/useradd", split="=")
|
||||
|
||||
|
||||
create_mail = defaults["CREATE_MAIL_SPOOL"]
|
||||
defaults["CREATE_MAIL_SPOOL"] = "yes"
|
||||
defaults.serialize()
|
||||
|
||||
login_defs = LoginDefsParser()
|
||||
|
||||
(status, output) = commands.getstatusoutput("useradd %s" % (self.username))
|
||||
self.failUnlessEqual(status, 0, output)
|
||||
(status, output) = subprocess.getstatusoutput("useradd %s" % (self.username))
|
||||
self.assertEqual(status, 0, output)
|
||||
|
||||
# clean up
|
||||
defaults["CREATE_MAIL_SPOOL"] = create_mail
|
||||
@ -448,7 +454,7 @@ class TestUseradd(ShadowUtilsTestBase, unittest.TestCase):
|
||||
def testNoLastlog(self):
|
||||
""" useradd: Check if the -l option prevents from being added to the lastlog """
|
||||
pass # FIXME - add some code here
|
||||
|
||||
|
||||
|
||||
class TestUseraddWeirdNameTest(unittest.TestCase, ShadowUtilsTestBase):
|
||||
""" Tests addition/removal of usernames that have proven to be problematic in the past.
|
||||
@ -459,11 +465,11 @@ class TestUseraddWeirdNameTest(unittest.TestCase, ShadowUtilsTestBase):
|
||||
expected = self.getDefaultUserInfo(username)
|
||||
expected["pw_name"] = username
|
||||
|
||||
(status, output) = commands.getstatusoutput("useradd %s" % (username))
|
||||
(status, output) = subprocess.getstatusoutput("useradd %s" % (username))
|
||||
if success:
|
||||
self.failUnlessEqual(status, 0, output)
|
||||
self.assertEqual(status, 0, output)
|
||||
else:
|
||||
self.failIfEqual(status, 0, output)
|
||||
self.assertNotEqual(status, 0, output)
|
||||
return True
|
||||
|
||||
created = UserInfo()
|
||||
@ -471,12 +477,12 @@ class TestUseraddWeirdNameTest(unittest.TestCase, ShadowUtilsTestBase):
|
||||
self.assertEqual(created.lazy_compare(expected), True, "FAIL: TestUseraddWeirdName::addAndRemove - could not add a user")
|
||||
|
||||
# the cleanup method won't help this time
|
||||
(status, output) = commands.getstatusoutput("userdel -r %s" % (username))
|
||||
self.failUnlessEqual(status, 0, output)
|
||||
(status, output) = subprocess.getstatusoutput("userdel -r %s" % (username))
|
||||
self.assertEqual(status, 0, output)
|
||||
|
||||
def testNumericName(self):
|
||||
""" useradd: Test if an user with a purely numerical name can be added (123) """
|
||||
return self.addAndRemove("123")
|
||||
""" useradd: Test if an user with a purely numerical name can be added (123) - should fail """
|
||||
return self.addAndRemove("123", False)
|
||||
|
||||
def testSambaName(self):
|
||||
""" useradd: Test if an user with a name with a dollar at the end can be added (joepublic$ ) """
|
||||
@ -499,99 +505,99 @@ class TestUseraddDefaultsChange(unittest.TestCase, ShadowUtilsTestBase):
|
||||
def testDefaultsChange(self):
|
||||
""" useradd: Test overriding default settings (shell, home dir, group) with a -D option """
|
||||
save = self.getDefaults()
|
||||
|
||||
|
||||
new_defs = dict()
|
||||
new_defs["SHELL"] = "/bin/ksh"
|
||||
new_defs["GROUP"] = "1"
|
||||
new_defs["HOME"] = "/tmp"
|
||||
|
||||
command = "useradd -D -s%s -g%s -b%s" % (new_defs["SHELL"], new_defs["GROUP"], new_defs["HOME"])
|
||||
(status, output) = commands.getstatusoutput(command)
|
||||
self.failUnlessEqual(status, 0, output)
|
||||
(status, output) = subprocess.getstatusoutput(command)
|
||||
self.assertEqual(status, 0, output)
|
||||
|
||||
overriden = self.getDefaults()
|
||||
[ self.assertEqual(overriden[k], new_defs[k]) for k in new_defs.keys() ]
|
||||
|
||||
command = "useradd -D -s%s -g%s -b%s" % (save["SHELL"], save["GROUP"], save["HOME"])
|
||||
(status, output) = commands.getstatusoutput(command)
|
||||
self.failUnlessEqual(status, 0, output)
|
||||
(status, output) = subprocess.getstatusoutput(command)
|
||||
self.assertEqual(status, 0, output)
|
||||
|
||||
|
||||
class TestUserdel(unittest.TestCase, ShadowUtilsTestBase):
|
||||
def setUp(self):
|
||||
self.username = "test-shadow-utils-userdel"
|
||||
(status, output) = commands.getstatusoutput("useradd %s" % (self.username))
|
||||
self.failUnlessEqual(status, 0, output)
|
||||
(status, output) = subprocess.getstatusoutput("useradd %s" % (self.username))
|
||||
self.assertEqual(status, 0, output)
|
||||
|
||||
def testRemoveUserGroup(self):
|
||||
""" userdel: test if userdel removes user's group when he's deleted - regression test for #201379 """
|
||||
(status, output) = commands.getstatusoutput("userdel -r %s" % (self.username))
|
||||
self.failUnlessEqual(status, 0, output)
|
||||
(status, output) = subprocess.getstatusoutput("userdel -r %s" % (self.username))
|
||||
self.assertEqual(status, 0, output)
|
||||
|
||||
# This would fail if we did not have the group removed
|
||||
(status, output) = commands.getstatusoutput("useradd %s" % (self.username))
|
||||
self.failUnlessEqual(status, 0, output)
|
||||
(status, output) = subprocess.getstatusoutput("useradd %s" % (self.username))
|
||||
self.assertEqual(status, 0, output)
|
||||
|
||||
(status, output) = commands.getstatusoutput("userdel -r %s" % (self.username))
|
||||
self.failUnlessEqual(status, 0, output)
|
||||
(status, output) = subprocess.getstatusoutput("userdel -r %s" % (self.username))
|
||||
self.assertEqual(status, 0, output)
|
||||
|
||||
class TestUsermod(unittest.TestCase, ShadowUtilsTestBase):
|
||||
def setUp(self):
|
||||
self.username = "test-shadow-utils-usermod"
|
||||
(status, output) = commands.getstatusoutput("useradd %s" % (self.username))
|
||||
self.failUnlessEqual(status, 0, output)
|
||||
(status, output) = subprocess.getstatusoutput("useradd %s" % (self.username))
|
||||
self.assertEqual(status, 0, output)
|
||||
|
||||
def tearDown(self):
|
||||
(status, output) = commands.getstatusoutput("userdel -r %s" % (self.username))
|
||||
self.failUnlessEqual(status, 0, output)
|
||||
(status, output) = subprocess.getstatusoutput("userdel -r %s" % (self.username))
|
||||
self.assertEqual(status, 0, output)
|
||||
|
||||
def testAppendToSupplementaryGroup(self):
|
||||
""" usermod: Test if a user can be added to a supplementary group """
|
||||
add_group = "additional_group"
|
||||
(status, output) = commands.getstatusoutput("groupadd %s" % (add_group))
|
||||
self.failUnlessEqual(status, 0, output)
|
||||
(status, output) = subprocess.getstatusoutput("groupadd %s" % (add_group))
|
||||
self.assertEqual(status, 0, output)
|
||||
|
||||
(status_mod, output_mod) = commands.getstatusoutput("usermod -a -G %s %s" % (add_group, self.username))
|
||||
(status_mod, output_mod) = subprocess.getstatusoutput("usermod -a -G %s %s" % (add_group, self.username))
|
||||
add_group_info = GroupInfo()
|
||||
add_group_info.get_info_name(add_group)
|
||||
(status, output) = commands.getstatusoutput("groupdel %s" % (add_group))
|
||||
(status, output) = subprocess.getstatusoutput("groupdel %s" % (add_group))
|
||||
|
||||
self.failUnlessEqual(status, 0, output)
|
||||
self.failUnlessEqual(status_mod, 0, output_mod)
|
||||
self.assertEqual(status, 0, output)
|
||||
self.assertEqual(status_mod, 0, output_mod)
|
||||
self.assertEqual(self.username in add_group_info["gr_mem"], True, "User not in supplementary group after usermod -G --append")
|
||||
|
||||
|
||||
def testAppendToSupplementaryGroupLongOption(self):
|
||||
""" usermod: Test if a user can be added to a supplementary group via --append rather that -a (regression test for 222540) """
|
||||
# this is known to not work on older RHELs - test what we are running
|
||||
rhv = RedHatVersion()
|
||||
runs = rhv.get_info()
|
||||
if rhv.is_rhel():
|
||||
if runs[1] < 5:
|
||||
print "This test makes sense for RHEL5+"
|
||||
return
|
||||
else:
|
||||
if runs[1] < 6:
|
||||
print "This test makes sense for Fedora 6+"
|
||||
return
|
||||
# this is known to not work on older RHELs - test what we are running
|
||||
rhv = RedHatVersion()
|
||||
runs = rhv.get_info()
|
||||
if rhv.is_rhel():
|
||||
if runs[1] < 5:
|
||||
print("This test makes sense for RHEL5+")
|
||||
return
|
||||
else:
|
||||
if runs[1] < 6:
|
||||
print("This test makes sense for Fedora 6+")
|
||||
return
|
||||
|
||||
type, release, version = RedHatVersion().get_info()
|
||||
if RedHatVersion().is_rhel():
|
||||
type, release, version = RedHatVersion().get_info()
|
||||
if RedHatVersion().is_rhel():
|
||||
if release < 5 or (release == 5 and version < 2):
|
||||
print "This test makes sense for RHEL 5.2+"
|
||||
print("This test makes sense for RHEL 5.2+")
|
||||
return
|
||||
|
||||
add_group = "additional_group"
|
||||
(status, output) = commands.getstatusoutput("groupadd %s" % (add_group))
|
||||
self.failUnlessEqual(status, 0, output)
|
||||
(status, output) = subprocess.getstatusoutput("groupadd %s" % (add_group))
|
||||
self.assertEqual(status, 0, output)
|
||||
|
||||
(status_mod, output_mod) = commands.getstatusoutput("usermod --append -G %s %s" % (add_group, self.username))
|
||||
(status_mod, output_mod) = subprocess.getstatusoutput("usermod --append -G %s %s" % (add_group, self.username))
|
||||
add_group_info = GroupInfo()
|
||||
add_group_info.get_info_name(add_group)
|
||||
(status, output) = commands.getstatusoutput("groupdel %s" % (add_group))
|
||||
(status, output) = subprocess.getstatusoutput("groupdel %s" % (add_group))
|
||||
|
||||
self.failUnlessEqual(status, 0, output)
|
||||
self.failUnlessEqual(status_mod, 0, output_mod)
|
||||
self.assertEqual(status, 0, output)
|
||||
self.assertEqual(status_mod, 0, output_mod)
|
||||
self.assertEqual(self.username in add_group_info["gr_mem"], True, "User not in supplementary group after usermod -G --append")
|
||||
|
||||
|
||||
@ -599,8 +605,8 @@ class TestUsermod(unittest.TestCase, ShadowUtilsTestBase):
|
||||
""" usermod: Test if the comment field (used as the Common Name) can be changed """
|
||||
new_comment = "zzzzzz"
|
||||
|
||||
(status, output) = commands.getstatusoutput("usermod -c %s %s" % (new_comment, self.username))
|
||||
self.failUnlessEqual(status, 0, output)
|
||||
(status, output) = subprocess.getstatusoutput("usermod -c %s %s" % (new_comment, self.username))
|
||||
self.assertEqual(status, 0, output)
|
||||
|
||||
created = UserInfo()
|
||||
created.get_info_name(self.username)
|
||||
@ -614,15 +620,15 @@ class TestUsermod(unittest.TestCase, ShadowUtilsTestBase):
|
||||
created.get_info_name(self.username)
|
||||
old_home = created["pw_dir"]
|
||||
|
||||
(status, output) = commands.getstatusoutput("usermod -d %s %s" % (new_home, self.username))
|
||||
self.failUnlessEqual(status, 0, output)
|
||||
(status, output) = subprocess.getstatusoutput("usermod -d %s %s" % (new_home, self.username))
|
||||
self.assertEqual(status, 0, output)
|
||||
|
||||
created.get_info_name(self.username)
|
||||
self.assertEqual(created["pw_dir"], new_home)
|
||||
|
||||
# revert to old home so we can userdel -r in tearDown
|
||||
(status, output) = commands.getstatusoutput("usermod -d %s %s" % (old_home, self.username))
|
||||
self.failUnlessEqual(status, 0, output)
|
||||
(status, output) = subprocess.getstatusoutput("usermod -d %s %s" % (old_home, self.username))
|
||||
self.assertEqual(status, 0, output)
|
||||
|
||||
# FIXME - test if contents of /home directories are transferred with the -m option
|
||||
# FIXME - test if new home is created if does not exist before
|
||||
@ -631,19 +637,19 @@ class TestUsermod(unittest.TestCase, ShadowUtilsTestBase):
|
||||
""" usermod: Test if user's gid can be changed. """
|
||||
new_group = "root"
|
||||
# test non-existing group
|
||||
(status_fail, output_fail) = commands.getstatusoutput("usermod -g no-such-group %s" % (self.username))
|
||||
(status, output) = commands.getstatusoutput("usermod -g %s %s" % (new_group, self.username))
|
||||
(status_fail, output_fail) = subprocess.getstatusoutput("usermod -g no-such-group %s" % (self.username))
|
||||
(status, output) = subprocess.getstatusoutput("usermod -g %s %s" % (new_group, self.username))
|
||||
|
||||
created = UserInfo()
|
||||
created.get_info_name(self.username)
|
||||
|
||||
left = GroupInfo()
|
||||
if left.get_info_name(self.username) == None:
|
||||
(status_del, output_del) = commands.getstatusoutput("groupdel %s" % (self.username))
|
||||
self.failUnlessEqual(status_del, 0, output_del)
|
||||
(status_del, output_del) = subprocess.getstatusoutput("groupdel %s" % (self.username))
|
||||
self.assertEqual(status_del, 0, output_del)
|
||||
|
||||
self.failIfEqual(status_fail, 0, output_fail)
|
||||
self.failUnlessEqual(status, 0, output)
|
||||
self.assertNotEqual(status_fail, 0, output_fail)
|
||||
self.assertEqual(status, 0, output)
|
||||
self.assertEqual(created["pw_gid"], 0) #0 is root group
|
||||
|
||||
def testLoginChange(self):
|
||||
@ -654,24 +660,24 @@ class TestUsermod(unittest.TestCase, ShadowUtilsTestBase):
|
||||
uid = user["pw_uid"] # UID won't change even when login does
|
||||
|
||||
# test changing to an existing user name
|
||||
(status, output) = commands.getstatusoutput("usermod -l root %s" % (self.username))
|
||||
self.failIfEqual(status, 0, output)
|
||||
(status, output) = subprocess.getstatusoutput("usermod -l root %s" % (self.username))
|
||||
self.assertNotEqual(status, 0, output)
|
||||
|
||||
(status, output) = commands.getstatusoutput("usermod -l %s %s" % (new_login, self.username))
|
||||
self.failUnlessEqual(status, 0, output)
|
||||
(status, output) = subprocess.getstatusoutput("usermod -l %s %s" % (new_login, self.username))
|
||||
self.assertEqual(status, 0, output)
|
||||
user.get_info_name(new_login)
|
||||
self.assertEqual(user["pw_uid"], uid)
|
||||
|
||||
# revert so we can userdel -r on tearDown
|
||||
(status, output) = commands.getstatusoutput("usermod -l %s %s" % (self.username, new_login))
|
||||
self.failUnlessEqual(status, 0, output)
|
||||
(status, output) = subprocess.getstatusoutput("usermod -l %s %s" % (self.username, new_login))
|
||||
self.assertEqual(status, 0, output)
|
||||
|
||||
def testShellChange(self):
|
||||
""" usermod: Test if user's shell can be changed """
|
||||
new_shell = "/bin/sh"
|
||||
|
||||
(status, output) = commands.getstatusoutput("usermod -s %s %s" % (new_shell, self.username))
|
||||
self.failUnlessEqual(status, 0, output)
|
||||
(status, output) = subprocess.getstatusoutput("usermod -s %s %s" % (new_shell, self.username))
|
||||
self.assertEqual(status, 0, output)
|
||||
|
||||
created = UserInfo()
|
||||
created.get_info_name(self.username)
|
||||
@ -682,7 +688,7 @@ class TestGroupadd(unittest.TestCase, ShadowUtilsTestBase):
|
||||
self.groupname = "test-shadow-utils-groups"
|
||||
|
||||
def tearDown(self):
|
||||
commands.getstatusoutput("groupdel %s" % (self.groupname))
|
||||
subprocess.getstatusoutput("groupdel %s" % (self.groupname))
|
||||
|
||||
def testAddGroup(self):
|
||||
""" groupadd: Basic adding of a group """
|
||||
@ -690,8 +696,8 @@ class TestGroupadd(unittest.TestCase, ShadowUtilsTestBase):
|
||||
expected = GroupInfo()
|
||||
expected["gr_name"] = self.groupname
|
||||
|
||||
(status, output) = commands.getstatusoutput("groupadd %s" % (self.groupname))
|
||||
self.failUnlessEqual(status, 0, output)
|
||||
(status, output) = subprocess.getstatusoutput("groupadd %s" % (self.groupname))
|
||||
self.assertEqual(status, 0, output)
|
||||
|
||||
created = GroupInfo()
|
||||
created.get_info_name(self.groupname)
|
||||
@ -704,18 +710,18 @@ class TestGroupadd(unittest.TestCase, ShadowUtilsTestBase):
|
||||
expected["gr_name"] = self.groupname
|
||||
defaults = LoginDefsParser()
|
||||
|
||||
(status, output) = commands.getstatusoutput("groupadd -r %s" % (self.groupname))
|
||||
self.failUnlessEqual(status, 0, output)
|
||||
(status, output) = subprocess.getstatusoutput("groupadd -r %s" % (self.groupname))
|
||||
self.assertEqual(status, 0, output)
|
||||
|
||||
created = GroupInfo()
|
||||
created.get_info_name(self.groupname)
|
||||
self.assertEqual(created["gr_gid"] < defaults["GID_MIN"], True, "FAIL: System group has gid >= GID_MIN")
|
||||
self.assertEqual(created["gr_gid"] < int(defaults["GID_MIN"]), True, "FAIL: System group has gid >= GID_MIN")
|
||||
self.assertEqual(created.lazy_compare(expected), True, "FAIL: Could not add a system group")
|
||||
|
||||
def testAddExistingGid(self):
|
||||
""" groupadd: Test if we group with an existing GID can be added """
|
||||
(status, output) = commands.getstatusoutput("groupadd %s" % (self.groupname))
|
||||
self.failUnlessEqual(status, 0, output)
|
||||
(status, output) = subprocess.getstatusoutput("groupadd %s" % (self.groupname))
|
||||
self.assertEqual(status, 0, output)
|
||||
|
||||
gname = "%s-2" % (self.groupname)
|
||||
|
||||
@ -723,12 +729,12 @@ class TestGroupadd(unittest.TestCase, ShadowUtilsTestBase):
|
||||
created.get_info_name(self.groupname)
|
||||
|
||||
# no -o option -> this should fail
|
||||
(status, output) = commands.getstatusoutput("groupadd -g%s %s" % (created["gr_gid"], gname))
|
||||
self.failIfEqual(status, 0, output)
|
||||
(status, output) = subprocess.getstatusoutput("groupadd -g%s %s" % (created["gr_gid"], gname))
|
||||
self.assertNotEqual(status, 0, output)
|
||||
|
||||
# override with -o option, should pass now
|
||||
(status, output) = commands.getstatusoutput("groupadd -g%s -o %s" % (created["gr_gid"], gname))
|
||||
self.failUnlessEqual(status, 0, output)
|
||||
(status, output) = subprocess.getstatusoutput("groupadd -g%s -o %s" % (created["gr_gid"], gname))
|
||||
self.assertEqual(status, 0, output)
|
||||
|
||||
# test if the new GID is really the same
|
||||
same_gid = GroupInfo()
|
||||
@ -736,31 +742,30 @@ class TestGroupadd(unittest.TestCase, ShadowUtilsTestBase):
|
||||
self.assertEqual(same_gid["gr_gid"], created["gr_gid"])
|
||||
|
||||
# clean up
|
||||
(status, output) = commands.getstatusoutput("groupdel %s" % (gname))
|
||||
self.failUnlessEqual(status, 0, output)
|
||||
(status, output) = subprocess.getstatusoutput("groupdel %s" % (gname))
|
||||
self.assertEqual(status, 0, output)
|
||||
|
||||
|
||||
def testOverrideDefaults(self):
|
||||
""" groupadd: Test if the defaults can be overriden with the -K option """
|
||||
# this is known to not work on older RHELs - test what we are running
|
||||
rhv = RedHatVersion()
|
||||
runs = rhv.get_info()
|
||||
if rhv.is_rhel():
|
||||
if runs[1] < 5:
|
||||
print "This test makes sense for RHEL5+"
|
||||
return
|
||||
else:
|
||||
if runs[1] < 6:
|
||||
print "This test makes sense for Fedora 6+"
|
||||
return
|
||||
# this is known to not work on older RHELs - test what we are running
|
||||
rhv = RedHatVersion()
|
||||
runs = rhv.get_info()
|
||||
if rhv.is_rhel():
|
||||
if runs[1] < 5:
|
||||
print("This test makes sense for RHEL5+")
|
||||
return
|
||||
else:
|
||||
if runs[1] < 6:
|
||||
print("This test makes sense for Fedora 6+")
|
||||
return
|
||||
|
||||
|
||||
GID_MIN = 600
|
||||
GID_MAX = 625
|
||||
|
||||
(status, output) = commands.getstatusoutput("groupadd -K GID_MIN=%d -K GID_MAX=%d %s" %
|
||||
(status, output) = subprocess.getstatusoutput("groupadd -K GID_MIN=%d -K GID_MAX=%d %s" %
|
||||
(GID_MIN, GID_MAX, self.groupname))
|
||||
self.failUnlessEqual(status, 0, output)
|
||||
self.assertEqual(status, 0, output)
|
||||
|
||||
created = GroupInfo()
|
||||
created.get_info_name(self.groupname)
|
||||
@ -769,41 +774,41 @@ class TestGroupadd(unittest.TestCase, ShadowUtilsTestBase):
|
||||
|
||||
def testFOption(self):
|
||||
""" groupadd: Tests the -f option of groupadd """
|
||||
(status, output) = commands.getstatusoutput("groupadd %s" % (self.groupname))
|
||||
self.failUnlessEqual(status, 0, output)
|
||||
(status, output) = subprocess.getstatusoutput("groupadd %s" % (self.groupname))
|
||||
self.assertEqual(status, 0, output)
|
||||
|
||||
(status, output) = commands.getstatusoutput("groupadd -f %s" % (self.groupname))
|
||||
(status, output) = subprocess.getstatusoutput("groupadd -f %s" % (self.groupname))
|
||||
self.assertEqual(status, 0, output)
|
||||
|
||||
class TestGroupaddInvalidName(unittest.TestCase, ShadowUtilsTestBase):
|
||||
def testGroupaddInvalidName(self):
|
||||
""" groupadd: Test adding of a group with an invalid name """
|
||||
(status, output) = commands.getstatusoutput("groupadd foo?")
|
||||
(status, output) = subprocess.getstatusoutput("groupadd foo?")
|
||||
self.assertNotEqual(status, 0, output)
|
||||
(status, output) = commands.getstatusoutput("groupadd aaaaabbbbbcccccdddddeeeeefffffggg") #33 chars
|
||||
(status, output) = subprocess.getstatusoutput("groupadd aaaaabbbbbcccccdddddeeeeefffffggg") #33 chars
|
||||
self.assertNotEqual(status, 0, output)
|
||||
|
||||
class TestGroupaddValidName(unittest.TestCase, ShadowUtilsTestBase):
|
||||
def testGroupaddValidName(self):
|
||||
""" groupadd: Test adding and removing of groups with maximal valid name and name ending with $ """
|
||||
(status, output) = commands.getstatusoutput("groupadd aaaaabbbbbcccccdddddeeeeefffffgg") #32 chars
|
||||
(status, output) = subprocess.getstatusoutput("groupadd aaaaabbbbbcccccdddddeeeeefffffgg") #32 chars
|
||||
self.assertEqual(status, 0, output)
|
||||
(status, output) = commands.getstatusoutput("groupadd aaaaabbbbbcccccdddddeeeeefffffg\$") #32 chars
|
||||
(status, output) = subprocess.getstatusoutput("groupadd aaaaabbbbbcccccdddddeeeeefffffg\$") #32 chars
|
||||
self.assertEqual(status, 0, output)
|
||||
(status, output) = commands.getstatusoutput("groupdel aaaaabbbbbcccccdddddeeeeefffffgg") #32 chars
|
||||
(status, output) = subprocess.getstatusoutput("groupdel aaaaabbbbbcccccdddddeeeeefffffgg") #32 chars
|
||||
self.assertEqual(status, 0, output)
|
||||
(status, output) = commands.getstatusoutput("groupdel aaaaabbbbbcccccdddddeeeeefffffg\$") #32 chars
|
||||
(status, output) = subprocess.getstatusoutput("groupdel aaaaabbbbbcccccdddddeeeeefffffg\$") #32 chars
|
||||
self.assertEqual(status, 0, output)
|
||||
|
||||
|
||||
class TestGroupmod(unittest.TestCase, ShadowUtilsTestBase):
|
||||
def setUp(self):
|
||||
self.groupname = "test-shadow-utils-groups"
|
||||
(status, output) = commands.getstatusoutput("groupadd %s" % (self.groupname))
|
||||
self.failUnlessEqual(status, 0, output)
|
||||
(status, output) = subprocess.getstatusoutput("groupadd %s" % (self.groupname))
|
||||
self.assertEqual(status, 0, output)
|
||||
|
||||
def tearDown(self):
|
||||
commands.getstatusoutput("groupdel %s" % (self.groupname))
|
||||
subprocess.getstatusoutput("groupdel %s" % (self.groupname))
|
||||
|
||||
def testChangeGID(self):
|
||||
""" groupmod: Test changing a gid of a group """
|
||||
@ -811,8 +816,8 @@ class TestGroupmod(unittest.TestCase, ShadowUtilsTestBase):
|
||||
expected["gr_name"] = self.groupname
|
||||
expected["gr_gid"] = 54321
|
||||
|
||||
(status, output) = commands.getstatusoutput("groupmod -g%d %s" % (expected["gr_gid"], self.groupname))
|
||||
self.failUnlessEqual(status, 0, output)
|
||||
(status, output) = subprocess.getstatusoutput("groupmod -g%d %s" % (expected["gr_gid"], self.groupname))
|
||||
self.assertEqual(status, 0, output)
|
||||
|
||||
created = GroupInfo()
|
||||
created.get_info_name(self.groupname)
|
||||
@ -829,22 +834,22 @@ class TestGroupmod(unittest.TestCase, ShadowUtilsTestBase):
|
||||
expected["gr_name"] = self.groupname
|
||||
expected["gr_gid"] = created["gr_gid"]
|
||||
|
||||
(status, output) = commands.getstatusoutput("groupadd %s" % (second_name))
|
||||
self.failUnlessEqual(status, 0, output)
|
||||
(status, output) = subprocess.getstatusoutput("groupadd %s" % (second_name))
|
||||
self.assertEqual(status, 0, output)
|
||||
|
||||
# try to assingn GID of the first group to the second - this should fail without the -o option
|
||||
(status, output) = commands.getstatusoutput("groupmod -g%d %s" % (created["gr_gid"], second_name))
|
||||
self.failIfEqual(status, 0, output)
|
||||
(status, output) = subprocess.getstatusoutput("groupmod -g%d %s" % (created["gr_gid"], second_name))
|
||||
self.assertNotEqual(status, 0, output)
|
||||
|
||||
# should pass with the -o option
|
||||
(status, output) = commands.getstatusoutput("groupmod -g%d -o %s" % (created["gr_gid"], second_name))
|
||||
self.failUnlessEqual(status, 0, output)
|
||||
(status, output) = subprocess.getstatusoutput("groupmod -g%d -o %s" % (created["gr_gid"], second_name))
|
||||
self.assertEqual(status, 0, output)
|
||||
|
||||
self.assertEqual(created.lazy_compare(expected), True, "FAIL: Could not change GID of an existing group to an existing one")
|
||||
|
||||
# clean up
|
||||
commands.getstatusoutput("groupdel %s" % (second_name))
|
||||
self.failUnlessEqual(status, 0, output)
|
||||
subprocess.getstatusoutput("groupdel %s" % (second_name))
|
||||
self.assertEqual(status, 0, output)
|
||||
|
||||
def testChangeGroupName(self):
|
||||
""" groupmod: Test changing a group's name """
|
||||
@ -853,8 +858,8 @@ class TestGroupmod(unittest.TestCase, ShadowUtilsTestBase):
|
||||
created = GroupInfo()
|
||||
created.get_info_name(self.groupname)
|
||||
|
||||
(status, output) = commands.getstatusoutput("groupmod -n%s %s" % (second_name, self.groupname))
|
||||
self.failUnlessEqual(status, 0, output)
|
||||
(status, output) = subprocess.getstatusoutput("groupmod -n%s %s" % (second_name, self.groupname))
|
||||
self.assertEqual(status, 0, output)
|
||||
|
||||
changed = GroupInfo()
|
||||
changed.get_info_gid(created["gr_gid"])
|
||||
@ -862,47 +867,47 @@ class TestGroupmod(unittest.TestCase, ShadowUtilsTestBase):
|
||||
self.assertEqual(changed["gr_gid"], created["gr_gid"])
|
||||
|
||||
# change back, so the group could be deleted by tearDown
|
||||
(status, output) = commands.getstatusoutput("groupmod -n%s %s" % (self.groupname, second_name))
|
||||
self.failUnlessEqual(status, 0, output)
|
||||
(status, output) = subprocess.getstatusoutput("groupmod -n%s %s" % (self.groupname, second_name))
|
||||
self.assertEqual(status, 0, output)
|
||||
|
||||
def testChangeGroupNameExisting(self):
|
||||
""" groupmod: Test changing a group's name to an existing one """
|
||||
existing = "bin"
|
||||
(status, output) = commands.getstatusoutput("groupmod -n%s %s" % (existing, self.groupname))
|
||||
(status, output) = subprocess.getstatusoutput("groupmod -n%s %s" % (existing, self.groupname))
|
||||
self.assertNotEqual(status, 0, output) # man groupmod -> 9: group name already in use
|
||||
|
||||
def testChangeNonExistingGroup(self):
|
||||
""" groupmod: Test properties of a non-existing group """
|
||||
nonexistent = "foobar"
|
||||
(status, output) = commands.getstatusoutput("groupmod -nspameggs %s" % (nonexistent))
|
||||
(status, output) = subprocess.getstatusoutput("groupmod -nspameggs %s" % (nonexistent))
|
||||
self.assertNotEqual(status, 0, status) # man groupmod -> 6: specified group doesn't exist
|
||||
|
||||
class TestGroupdel(unittest.TestCase, ShadowUtilsTestBase):
|
||||
def testCorrectGroupdel(self):
|
||||
""" groupdel: Basic usage of groupdel """
|
||||
self.groupname = "test-shadow-utils-groups"
|
||||
(status, output) = commands.getstatusoutput("groupadd %s" % (self.groupname))
|
||||
self.failUnlessEqual(status, 0, output)
|
||||
(status, output) = commands.getstatusoutput("groupdel %s" % (self.groupname))
|
||||
(status, output) = subprocess.getstatusoutput("groupadd %s" % (self.groupname))
|
||||
self.assertEqual(status, 0, output)
|
||||
(status, output) = subprocess.getstatusoutput("groupdel %s" % (self.groupname))
|
||||
self.assertEqual(status, 0, output)
|
||||
|
||||
def testGroupdelNoSuchGroup(self):
|
||||
""" groupdel: Remove non-existing group """
|
||||
(status, output) = commands.getstatusoutput("groupdel foobar")
|
||||
(status, output) = subprocess.getstatusoutput("groupdel foobar")
|
||||
self.assertNotEqual(status, 0, output)
|
||||
|
||||
def testRemovePrimaryGroup(self):
|
||||
""" groupdel: Remove a primary group of an user """
|
||||
username = "test-groupdel-primary"
|
||||
(status, output) = commands.getstatusoutput("useradd %s" % (username))
|
||||
self.failUnlessEqual(status, 0, output)
|
||||
(status, output) = subprocess.getstatusoutput("useradd %s" % (username))
|
||||
self.assertEqual(status, 0, output)
|
||||
|
||||
(status, output) = commands.getstatusoutput("groupdel %s" % (username))
|
||||
(status, output) = subprocess.getstatusoutput("groupdel %s" % (username))
|
||||
self.assertNotEqual(status, 0, output)
|
||||
|
||||
# clean up
|
||||
(status, output) = commands.getstatusoutput("userdel -r %s" % (username))
|
||||
self.failUnlessEqual(status, 0, output)
|
||||
(status, output) = subprocess.getstatusoutput("userdel -r %s" % (username))
|
||||
self.assertEqual(status, 0, output)
|
||||
|
||||
class TestPwckGrpck(unittest.TestCase):
|
||||
def setUp(self):
|
||||
@ -932,7 +937,7 @@ class TestPwckGrpck(unittest.TestCase):
|
||||
self.group_file.flush()
|
||||
|
||||
command = "pwck -r %s %s" % (self.passwd_path, self.group_path)
|
||||
return commands.getstatusoutput(command)
|
||||
return subprocess.getstatusoutput(command)
|
||||
|
||||
def runGrpCheck(self, group, gshadow):
|
||||
self.group_file.truncate()
|
||||
@ -945,19 +950,19 @@ class TestPwckGrpck(unittest.TestCase):
|
||||
self.group_file.flush()
|
||||
|
||||
command = "grpck -r %s %s" % (self.group_path, self.gshadow_path)
|
||||
return commands.getstatusoutput(command)
|
||||
return subprocess.getstatusoutput(command)
|
||||
|
||||
|
||||
def testValidEntries(self):
|
||||
""" pwck: a valid entry """
|
||||
status, output = self.runPwckCheck("foo:x:685:0::/dev/null:/bin/bash", "")
|
||||
rhv = RedHatVersion()
|
||||
runs = rhv.get_info()
|
||||
if rhv.is_rhel():
|
||||
if runs[1] < 6:
|
||||
self.assertEqual(status, 0, output)
|
||||
else:
|
||||
self.assertNotEqual(status, 0, output)
|
||||
rhv = RedHatVersion()
|
||||
runs = rhv.get_info()
|
||||
if rhv.is_rhel():
|
||||
if runs[1] < 6:
|
||||
self.assertEqual(status, 0, output)
|
||||
else:
|
||||
self.assertNotEqual(status, 0, output)
|
||||
|
||||
def testNumberOfFields(self):
|
||||
""" pwck: invalid number of fields in the record """
|
||||
@ -1006,7 +1011,7 @@ if __name__ == "__main__":
|
||||
broken_on_rhel4 = { "TestUseradd" : [ "testCustomUID", "testCustomGID" ] }
|
||||
|
||||
if os.getuid() != 0:
|
||||
print "This test must be run as root"
|
||||
print("This test must be run as root")
|
||||
sys.exit(1)
|
||||
|
||||
unittest.main()
|
||||
|
@ -10,4 +10,4 @@
|
||||
- sanity
|
||||
required_packages:
|
||||
- shadow-utils # sanity test needs shadow-utils
|
||||
- python # sanity test needs python
|
||||
- python3-devel # sanity test needs python3
|
||||
|
Loading…
Reference in New Issue
Block a user