diff options
Diffstat (limited to 'testsuite/test8.pl')
-rw-r--r-- | testsuite/test8.pl | 109 |
1 files changed, 109 insertions, 0 deletions
diff --git a/testsuite/test8.pl b/testsuite/test8.pl new file mode 100644 index 0000000..75bda87 --- /dev/null +++ b/testsuite/test8.pl @@ -0,0 +1,109 @@ +#!/usr/bin/perl -w + +# expect: +# - a new system user $USER +# - Added to all groups in extra_groups +# - a new group +# - $USER added to new group +# - Removal of $USER works +# - removal of new group works +# - system users do not get added to extra_groups + +use strict; +use lib_test; + +my $username = find_unused_name(); +my $cmd = "adduser --gecos test --disabled-password --add_extra_groups $username"; + +my %config; + +preseed_config(("/etc/adduser.conf"),\%config); + +if (!defined (getpwnam($username))) { + print "Testing $cmd... "; + `$cmd`; + my $error = ($?>>8); + if ($error) { + print "failed\n adduser returned an errorcode != 0 ($error)\n"; + exit $error; + } + assert(check_user_exist ($username)); + + foreach my $group (split ' ', $config{"extra_groups"}) { + assert(check_user_in_group($username,$group)); + } + print "ok\n"; +} + +my $newgroup = find_unused_name(); + +$cmd = "addgroup $newgroup"; +unless (defined getgrnam($newgroup)) { + print "Testing $cmd... "; + `$cmd`; + my $error = ($?>>8); + if ($error) { + print "failed\n addgroup returned an errorcode != 0 ($error)\n"; + exit $error; + } + assert(check_group_exist ($newgroup)); + print "ok\n"; +} + +$cmd = "adduser $username $newgroup"; +if (defined (getpwnam($username))) { + print "Testing $cmd... "; + `$cmd`; + my $error = ($?>>8); + if ($error) { + print "failed\n adduser returned an errorcode != 0 ($error)\n"; + exit $error; + } + assert(check_user_in_group ($username,$newgroup)); + print "ok\n"; +} + +$cmd = "deluser --remove-home $username"; +if (defined (getpwnam($username))) { + print "Testing $cmd... "; + `$cmd`; + my $error = ($?>>8); + if ($error) { + print "failed\n adduser returned an errorcode != 0 ($error)\n"; + exit $error; + } + assert(check_user_not_exist ($username)); + print "ok\n"; +} + +$cmd = "delgroup $newgroup"; +unless (!defined getgrnam($newgroup)) { + print "Testing $cmd... "; + `$cmd`; + my $error = ($?>>8); + if ($error) { + print "failed\n delgroup returned an errorcode != 0 ($error)\n"; + exit $error; + } + assert(!check_group_exist ($newgroup)); + print "ok\n"; +} + +my $sysusername = find_unused_name(); +$cmd = "adduser --system --gecos test --disabled-password --add_extra_groups $sysusername"; + +if (!defined (getpwnam($sysusername))) { + print "Testing $cmd... "; + `$cmd`; + my $error = ($?>>8); + if ($error) { + print "failed\n adduser returned an errorcode != 0 ($error)\n"; + exit $error; + } + assert(check_user_exist ($sysusername)); + + foreach my $group (split ' ', $config{"extra_groups"}) { + assert(!check_user_in_group($username,$group)); + } + print "ok\n"; +} |