Add tests from the old svn tree
We're losing the svn history (which we could probably keep if we tried hard enough) but don't consider that worthwhile. Note these tests are destructive, so run them only in a throwaway environment like a chroot, container, or vm. The tests/run.all script should be the one which launches all the tests. Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
This commit is contained in:
		
							
								
								
									
										41
									
								
								tests/cktools/01/data/group
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										41
									
								
								tests/cktools/01/data/group
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,41 @@
 | 
			
		||||
root:x:0:
 | 
			
		||||
daemon:x:1:
 | 
			
		||||
bin:x:2:
 | 
			
		||||
sys:x:3:
 | 
			
		||||
adm:x:4:
 | 
			
		||||
tty:x:5:
 | 
			
		||||
disk:x:6:
 | 
			
		||||
lp:x:7:
 | 
			
		||||
mail:x:8:
 | 
			
		||||
news:x:9:
 | 
			
		||||
uucp:x:10:
 | 
			
		||||
man:x:12:
 | 
			
		||||
proxy:x:13:
 | 
			
		||||
kmem:x:15:
 | 
			
		||||
dialout:x:20:
 | 
			
		||||
fax:x:21:
 | 
			
		||||
voice:x:22:
 | 
			
		||||
cdrom:x:24:
 | 
			
		||||
floppy:x:25:
 | 
			
		||||
tape:x:26:
 | 
			
		||||
sudo:x:27:
 | 
			
		||||
audio:x:29:
 | 
			
		||||
dip:x:30:
 | 
			
		||||
www-data:x:33:
 | 
			
		||||
backup:x:34:
 | 
			
		||||
operator:x:37:
 | 
			
		||||
list:x:38:
 | 
			
		||||
irc:x:39:
 | 
			
		||||
src:x:40:
 | 
			
		||||
gnats:x:41:
 | 
			
		||||
shadow:x:42:
 | 
			
		||||
utmp:x:43:
 | 
			
		||||
video:x:44:
 | 
			
		||||
sasl:x:45:
 | 
			
		||||
plugdev:x:46:
 | 
			
		||||
staff:x:50:
 | 
			
		||||
games:x:60:
 | 
			
		||||
users:x:100:
 | 
			
		||||
nogroup:x:65534:
 | 
			
		||||
crontab:x:101:
 | 
			
		||||
Debian-exim:x:102:
 | 
			
		||||
							
								
								
									
										41
									
								
								tests/cktools/01/data/gshadow
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										41
									
								
								tests/cktools/01/data/gshadow
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,41 @@
 | 
			
		||||
root:*::
 | 
			
		||||
daemon:*::
 | 
			
		||||
bin:*::
 | 
			
		||||
sys:*::
 | 
			
		||||
adm:*::
 | 
			
		||||
tty:*::
 | 
			
		||||
disk:*::
 | 
			
		||||
lp:*::
 | 
			
		||||
mail:*::
 | 
			
		||||
news:*::
 | 
			
		||||
uucp:*::
 | 
			
		||||
man:*::
 | 
			
		||||
proxy:*::
 | 
			
		||||
kmem:*::
 | 
			
		||||
dialout:*::
 | 
			
		||||
fax:*::
 | 
			
		||||
voice:*::
 | 
			
		||||
cdrom:*::
 | 
			
		||||
floppy:*::
 | 
			
		||||
tape:*::
 | 
			
		||||
sudo:*::
 | 
			
		||||
audio:*::
 | 
			
		||||
dip:*::
 | 
			
		||||
www-data:*::
 | 
			
		||||
backup:*::
 | 
			
		||||
operator:*::
 | 
			
		||||
list:*::
 | 
			
		||||
irc:*::
 | 
			
		||||
src:*::
 | 
			
		||||
gnats:*::
 | 
			
		||||
shadow:*::
 | 
			
		||||
utmp:*::
 | 
			
		||||
video:*::
 | 
			
		||||
sasl:*::
 | 
			
		||||
plugdev:*::
 | 
			
		||||
staff:*::
 | 
			
		||||
games:*::
 | 
			
		||||
users:*::
 | 
			
		||||
nogroup:*::
 | 
			
		||||
crontab:x::
 | 
			
		||||
Debian-exim:x::
 | 
			
		||||
							
								
								
									
										19
									
								
								tests/cktools/01/data/passwd
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								tests/cktools/01/data/passwd
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,19 @@
 | 
			
		||||
root:x:0:0:root:/root:/bin/bash
 | 
			
		||||
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
 | 
			
		||||
bin:x:2:2:bin:/bin:/bin/sh
 | 
			
		||||
sys:x:3:3:sys:/dev:/bin/sh
 | 
			
		||||
sync:x:4:65534:sync:/bin:/bin/sync
 | 
			
		||||
games:x:5:60:games:/usr/games:/bin/sh
 | 
			
		||||
man:x:6:12:man:/var/cache/man:/bin/sh
 | 
			
		||||
lp:x:7:7:lp:/var/spool/lpd:/bin/sh
 | 
			
		||||
mail:x:8:8:mail:/var/mail:/bin/sh
 | 
			
		||||
news:x:9:9:news:/var/spool/news:/bin/sh
 | 
			
		||||
uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh
 | 
			
		||||
proxy:x:13:13:proxy:/bin:/bin/sh
 | 
			
		||||
www-data:x:33:33:www-data:/var/www:/bin/sh
 | 
			
		||||
backup:x:34:34:backup:/var/backups:/bin/sh
 | 
			
		||||
list:x:38:38:Mailing List Manager:/var/list:/bin/sh
 | 
			
		||||
irc:x:39:39:ircd:/var/run/ircd:/bin/sh
 | 
			
		||||
gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh
 | 
			
		||||
nobody:x:65534:65534:nobody:/nonexistent:/bin/sh
 | 
			
		||||
Debian-exim:x:102:102::/var/spool/exim4:/bin/false
 | 
			
		||||
							
								
								
									
										0
									
								
								tests/cktools/01/data/run2.err
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								tests/cktools/01/data/run2.err
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										13
									
								
								tests/cktools/01/data/run2.out
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								tests/cktools/01/data/run2.out
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,13 @@
 | 
			
		||||
user 'lp': directory '/var/spool/lpd' does not exist
 | 
			
		||||
user 'news': directory '/var/spool/news' does not exist
 | 
			
		||||
user 'uucp': directory '/var/spool/uucp' does not exist
 | 
			
		||||
user 'www-data': directory '/var/www' does not exist
 | 
			
		||||
user 'list': directory '/var/list' does not exist
 | 
			
		||||
user 'irc': directory '/var/run/ircd' does not exist
 | 
			
		||||
user 'gnats': directory '/var/lib/gnats' does not exist
 | 
			
		||||
user 'nobody': directory '/nonexistent' does not exist
 | 
			
		||||
user 'Debian-exim': directory '/var/spool/exim4' does not exist
 | 
			
		||||
user 'test': no group 10002
 | 
			
		||||
no matching password file entry in /etc/shadow
 | 
			
		||||
add user 'test' in /etc/shadow? No
 | 
			
		||||
pwck: no changes
 | 
			
		||||
							
								
								
									
										19
									
								
								tests/cktools/01/data/shadow
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								tests/cktools/01/data/shadow
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,19 @@
 | 
			
		||||
root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7:::
 | 
			
		||||
daemon:*:12977:0:99999:7:::
 | 
			
		||||
bin:*:12977:0:99999:7:::
 | 
			
		||||
sys:*:12977:0:99999:7:::
 | 
			
		||||
sync:*:12977:0:99999:7:::
 | 
			
		||||
games:*:12977:0:99999:7:::
 | 
			
		||||
man:*:12977:0:99999:7:::
 | 
			
		||||
lp:*:12977:0:99999:7:::
 | 
			
		||||
mail:*:12977:0:99999:7:::
 | 
			
		||||
news:*:12977:0:99999:7:::
 | 
			
		||||
uucp:*:12977:0:99999:7:::
 | 
			
		||||
proxy:*:12977:0:99999:7:::
 | 
			
		||||
www-data:*:12977:0:99999:7:::
 | 
			
		||||
backup:*:12977:0:99999:7:::
 | 
			
		||||
list:*:12977:0:99999:7:::
 | 
			
		||||
irc:*:12977:0:99999:7:::
 | 
			
		||||
gnats:*:12977:0:99999:7:::
 | 
			
		||||
nobody:*:12977:0:99999:7:::
 | 
			
		||||
Debian-exim:!:12977:0:99999:7:::
 | 
			
		||||
							
								
								
									
										54
									
								
								tests/cktools/01/run1
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										54
									
								
								tests/cktools/01/run1
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,54 @@
 | 
			
		||||
#!/bin/sh
 | 
			
		||||
 | 
			
		||||
set -e
 | 
			
		||||
 | 
			
		||||
cd $(dirname $0)
 | 
			
		||||
 | 
			
		||||
# Rational:
 | 
			
		||||
# Test that useradd can add an user and userdel removes it.
 | 
			
		||||
 | 
			
		||||
save()
 | 
			
		||||
{
 | 
			
		||||
	[ ! -d tmp ] && mkdir tmp
 | 
			
		||||
	for i in passwd group shadow gshadow
 | 
			
		||||
	do
 | 
			
		||||
		[ -f /etc/$i  ] && cp /etc/$i  tmp/$i
 | 
			
		||||
	done
 | 
			
		||||
 | 
			
		||||
	true
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
restore()
 | 
			
		||||
{
 | 
			
		||||
	for i in passwd group shadow gshadow
 | 
			
		||||
	do
 | 
			
		||||
		[ -f tmp/$i  ] && cp tmp/$i  /etc/$i  && rm tmp/$i
 | 
			
		||||
	done
 | 
			
		||||
	rmdir tmp
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
save
 | 
			
		||||
 | 
			
		||||
# restore the files on exit
 | 
			
		||||
trap 'restore' 0
 | 
			
		||||
 | 
			
		||||
for i in passwd group shadow gshadow
 | 
			
		||||
do
 | 
			
		||||
	cp data/$i /etc
 | 
			
		||||
done
 | 
			
		||||
 | 
			
		||||
lines_passwd=$(wc -l /etc/passwd | cut -f1 -d" ")
 | 
			
		||||
lines_shadow=$(wc -l /etc/shadow | cut -f1 -d" ")
 | 
			
		||||
lines_group=$(wc -l /etc/group | cut -f1 -d" ")
 | 
			
		||||
lines_gshadow=$(wc -l /etc/gshadow | cut -f1 -d" ")
 | 
			
		||||
 | 
			
		||||
echo "pwck accepts valid password file "
 | 
			
		||||
msg=$(pwck -r | grep -v "^user .*: directory .* does not exist$")
 | 
			
		||||
echo msg: $msg
 | 
			
		||||
test "$msg" = "pwck: no changes"
 | 
			
		||||
echo "  OK"
 | 
			
		||||
echo "grpck accepts valid password file "
 | 
			
		||||
msg=$(grpck -r)
 | 
			
		||||
test "$msg" = ""
 | 
			
		||||
echo "  OK"
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										62
									
								
								tests/cktools/01/run2
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										62
									
								
								tests/cktools/01/run2
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,62 @@
 | 
			
		||||
#!/bin/sh
 | 
			
		||||
 | 
			
		||||
set -e
 | 
			
		||||
 | 
			
		||||
cd $(dirname $0)
 | 
			
		||||
 | 
			
		||||
# Rational:
 | 
			
		||||
# Test that useradd can add an user and userdel removes it.
 | 
			
		||||
 | 
			
		||||
save()
 | 
			
		||||
{
 | 
			
		||||
	[ ! -d tmp ] && mkdir tmp
 | 
			
		||||
	for i in passwd group shadow gshadow
 | 
			
		||||
	do
 | 
			
		||||
		[ -f /etc/$i  ] && cp /etc/$i  tmp/$i
 | 
			
		||||
	done
 | 
			
		||||
 | 
			
		||||
	true
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
restore()
 | 
			
		||||
{
 | 
			
		||||
	rm -f tmp/err tmp/out
 | 
			
		||||
	for i in passwd group shadow gshadow
 | 
			
		||||
	do
 | 
			
		||||
		[ -f tmp/$i  ] && cp tmp/$i  /etc/$i  && rm tmp/$i
 | 
			
		||||
	done
 | 
			
		||||
	rmdir tmp
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
save
 | 
			
		||||
 | 
			
		||||
# restore the files on exit
 | 
			
		||||
trap 'restore' 0
 | 
			
		||||
 | 
			
		||||
for i in passwd group shadow gshadow
 | 
			
		||||
do
 | 
			
		||||
	cp data/$i /etc
 | 
			
		||||
done
 | 
			
		||||
 | 
			
		||||
lines_passwd=$(wc -l /etc/passwd | cut -f1 -d" ")
 | 
			
		||||
lines_shadow=$(wc -l /etc/shadow | cut -f1 -d" ")
 | 
			
		||||
lines_group=$(wc -l /etc/group | cut -f1 -d" ")
 | 
			
		||||
lines_gshadow=$(wc -l /etc/gshadow | cut -f1 -d" ")
 | 
			
		||||
 | 
			
		||||
echo -n "Add an user without an entry in shadow "
 | 
			
		||||
echo "test:x:10002:10002::/tmp:/bin/false" >> /etc/passwd
 | 
			
		||||
echo "OK"
 | 
			
		||||
 | 
			
		||||
echo "Check that pwck detects it "
 | 
			
		||||
pwck -r > tmp/out 2> tmp/err || true
 | 
			
		||||
diff -au data/run2.out tmp/out
 | 
			
		||||
diff -au data/run2.err tmp/err
 | 
			
		||||
echo "  OK"
 | 
			
		||||
echo "grpck accepts valid password file "
 | 
			
		||||
msg=$(grpck -r)
 | 
			
		||||
test "$msg" = ""
 | 
			
		||||
echo "  OK"
 | 
			
		||||
 | 
			
		||||
#echo -n "Make sure pwck can fix it "
 | 
			
		||||
#pwcd
 | 
			
		||||
#echo "OK"
 | 
			
		||||
		Reference in New Issue
	
	Block a user