diff options
author | Divya Kothari <divya.s.kothari@gmail.com> | 2014-07-04 21:20:02 -0500 |
---|---|---|
committer | Divya Kothari <divya.s.kothari@gmail.com> | 2014-07-04 21:20:02 -0500 |
commit | ef0ed68d5ba5794c1352e64273d4c5039e62476b (patch) | |
tree | ce65d458c8f5e0b51eaf8f0be4caa07c07792d7d /scripts | |
parent | 4a855d6cf62cebe40fa9fe97c7e6b9ca49f79b5b (diff) | |
download | toybox-ef0ed68d5ba5794c1352e64273d4c5039e62476b.tar.gz |
I have developed few testsuites for toybox commands -
1. lsattr/chattr
2. mount
3. chmod
4. pgrep/pkill
5. groupadd
6. groupdel
7. useradd
Diffstat (limited to 'scripts')
-rw-r--r-- | scripts/test/chmod.test | 250 | ||||
-rw-r--r-- | scripts/test/groupadd.test | 56 | ||||
-rw-r--r-- | scripts/test/groupdel.test | 27 | ||||
-rw-r--r-- | scripts/test/lsattr.test | 159 | ||||
-rw-r--r-- | scripts/test/mount.test | 87 | ||||
-rw-r--r-- | scripts/test/pgrep.test | 122 | ||||
-rw-r--r-- | scripts/test/useradd.test | 90 |
7 files changed, 791 insertions, 0 deletions
diff --git a/scripts/test/chmod.test b/scripts/test/chmod.test new file mode 100644 index 00000000..71a9580b --- /dev/null +++ b/scripts/test/chmod.test @@ -0,0 +1,250 @@ +#!/bin/bash + +# Copyright 2013 Divya Kothari <divya.s.kothari@gmail.com> +# Copyright 2013 Robin Mittal <robinmittal.it@gmail.com> + +#testing "name" "command" "result" "infile" "stdin" + +declare -a StrForMod=('---' '--x' '-w-' '-wx' 'r--' 'r-x' 'rw-' 'rwx') +#StrForMod[0]='---' +#StrForMod[1]='--x' +#StrForMod[2]='-w-' +#StrForMod[3]='-wx' +#StrForMod[4]='r--' +#StrForMod[5]='r-x' +#StrForMod[6]='rw-' +#StrForMod[7]='rwx' + +# Creating test files to test chmod command +mkdir dir +touch file + +for u in {0..7} +do + for g in {0..7} + do + for o in {0..7} + do + rm -rf dir && mkdir dir + uu=${StrForMod[$u]} + gg=${StrForMod[$g]} + oo=${StrForMod[$o]} + testing "chmod $u$g$o dir" "chmod $u$g$o dir && + ls -ld dir | cut -d' ' -f 1" "d$uu$gg$oo\n" "" "" + done + done +done + +for u in {0..7} +do + for g in {0..7} + do + for o in {0..7} + do + rm -rf file && touch file + uu=${StrForMod[$u]} + gg=${StrForMod[$g]} + oo=${StrForMod[$o]} + testing "chmod $u$g$o file" "chmod $u$g$o file && + ls -ld file | cut -d' ' -f 1" "-$uu$gg$oo\n" "" "" + done + done +done + +rm -rf dir file && mkdir dir && touch file +testing "chmod 750 dir 640 file" \ + "chmod 750 dir 640 file 2>/dev/null || + ls -ld dir file | cut -d' ' -f 1" "drwxr-x---\n-rwxr-x---\n" "" "" + +rm -rf dir file && mkdir dir && touch file +testing "chmod 666 dir file" \ + "chmod 666 dir file && + ls -ld dir file | cut -d' ' -f 1" "drw-rw-rw-\n-rw-rw-rw-\n" "" "" + +rm -rf dir file && mkdir dir && touch file +testing "chmod 765 *" "chmod 765 * && + ls -ld dir file | cut -d' ' -f 1" "drwxrw-r-x\n-rwxrw-r-x\n" "" "" + +##### u,g,o,a=r,w,x +rm -rf dir file && mkdir dir && touch file +testing "chmod u=r dir file" "chmod u=r dir file && + ls -ld dir file | cut -d' ' -f 1" "dr--r-xr-x\n-r--r--r--\n" "" "" + +rm -rf dir file && mkdir dir && touch file +testing "chmod u=w dir file" "chmod u=w dir file && + ls -ld dir file | cut -d' ' -f 1" "d-w-r-xr-x\n--w-r--r--\n" "" "" + +rm -rf dir file && mkdir dir && touch file +testing "chmod u=x dir file" "chmod u=x dir file && + ls -ld dir file | cut -d' ' -f 1" "d--xr-xr-x\n---xr--r--\n" "" "" + +rm -rf dir file && mkdir dir && touch file +testing "chmod u+r dir file" "chmod u+r dir file && + ls -ld dir file | cut -d' ' -f 1" "drwxr-xr-x\n-rw-r--r--\n" "" "" + +rm -rf dir file && mkdir dir && touch file +testing "chmod u+w dir file" "chmod u+w dir file && + ls -ld dir file | cut -d' ' -f 1" "drwxr-xr-x\n-rw-r--r--\n" "" "" + +rm -rf dir file && mkdir dir && touch file +testing "chmod u+x dir file" "chmod u+x dir file && + ls -ld dir file | cut -d' ' -f 1" "drwxr-xr-x\n-rwxr--r--\n" "" "" + +rm -rf dir file && mkdir dir && touch file +testing "chmod u-r dir file" "chmod u-r dir file && + ls -ld dir file | cut -d' ' -f 1" "d-wxr-xr-x\n--w-r--r--\n" "" "" + +rm -rf dir file && mkdir dir && touch file +testing "chmod u-w dir file" "chmod u-w dir file && + ls -ld dir file | cut -d' ' -f 1" "dr-xr-xr-x\n-r--r--r--\n" "" "" + +rm -rf dir file && mkdir dir && touch file +testing "chmod u-x dir file" "chmod u-x dir file && + ls -ld dir file | cut -d' ' -f 1" "drw-r-xr-x\n-rw-r--r--\n" "" "" + +rm -rf dir file && mkdir dir && touch file +testing "chmod g=r dir file" "chmod g=r dir file && + ls -ld dir file | cut -d' ' -f 1" "drwxr--r-x\n-rw-r--r--\n" "" "" + +rm -rf dir file && mkdir dir && touch file +testing "chmod g=w dir file" "chmod g=w dir file && + ls -ld dir file | cut -d' ' -f 1" "drwx-w-r-x\n-rw--w-r--\n" "" "" + +rm -rf dir file && mkdir dir && touch file +testing "chmod g=x dir file" "chmod g=x dir file && + ls -ld dir file | cut -d' ' -f 1" "drwx--xr-x\n-rw---xr--\n" "" "" + +rm -rf dir file && mkdir dir && touch file +testing "chmod g+r dir file" "chmod g+r dir file && + ls -ld dir file | cut -d' ' -f 1" "drwxr-xr-x\n-rw-r--r--\n" "" "" + +rm -rf dir file && mkdir dir && touch file +testing "chmod g+w dir file" "chmod g+w dir file && + ls -ld dir file | cut -d' ' -f 1" "drwxrwxr-x\n-rw-rw-r--\n" "" "" + +rm -rf dir file && mkdir dir && touch file +testing "chmod g+x dir file" "chmod g+x dir file && + ls -ld dir file | cut -d' ' -f 1" "drwxr-xr-x\n-rw-r-xr--\n" "" "" + +rm -rf dir file && mkdir dir && touch file +testing "chmod g-r dir file" "chmod g-r dir file && + ls -ld dir file | cut -d' ' -f 1" "drwx--xr-x\n-rw----r--\n" "" "" + +rm -rf dir file && mkdir dir && touch file +testing "chmod g-w dir file" "chmod g-w dir file && + ls -ld dir file | cut -d' ' -f 1" "drwxr-xr-x\n-rw-r--r--\n" "" "" + +rm -rf dir file && mkdir dir && touch file +testing "chmod g-x dir file" "chmod g-x dir file && + ls -ld dir file | cut -d' ' -f 1" "drwxr--r-x\n-rw-r--r--\n" "" "" + +rm -rf dir file && mkdir dir && touch file +testing "chmod o=r dir file" "chmod o=r dir file && + ls -ld dir file | cut -d' ' -f 1" "drwxr-xr--\n-rw-r--r--\n" "" "" + +rm -rf dir file && mkdir dir && touch file +testing "chmod o=w dir file" "chmod o=w dir file && + ls -ld dir file | cut -d' ' -f 1" "drwxr-x-w-\n-rw-r---w-\n" "" "" + +rm -rf dir file && mkdir dir && touch file +testing "chmod o=x dir file" "chmod o=x dir file && + ls -ld dir file | cut -d' ' -f 1" "drwxr-x--x\n-rw-r----x\n" "" "" + +rm -rf dir file && mkdir dir && touch file +testing "chmod o+r dir file" "chmod o+r dir file && + ls -ld dir file | cut -d' ' -f 1" "drwxr-xr-x\n-rw-r--r--\n" "" "" + +rm -rf dir file && mkdir dir && touch file +testing "chmod o+w dir file" "chmod o+w dir file && + ls -ld dir file | cut -d' ' -f 1" "drwxr-xrwx\n-rw-r--rw-\n" "" "" + +rm -rf dir file && mkdir dir && touch file +testing "chmod o+x dir file" "chmod o+x dir file && + ls -ld dir file | cut -d' ' -f 1" "drwxr-xr-x\n-rw-r--r-x\n" "" "" + +rm -rf dir file && mkdir dir && touch file +testing "chmod o-r dir file" "chmod o-r dir file && + ls -ld dir file | cut -d' ' -f 1" "drwxr-x--x\n-rw-r-----\n" "" "" + +rm -rf dir file && mkdir dir && touch file +testing "chmod o-w dir file" "chmod o-w dir file && + ls -ld dir file | cut -d' ' -f 1" "drwxr-xr-x\n-rw-r--r--\n" "" "" + +rm -rf dir file && mkdir dir && touch file +testing "chmod o-x dir file" "chmod o-x dir file && + ls -ld dir file | cut -d' ' -f 1" "drwxr-xr--\n-rw-r--r--\n" "" "" + +rm -rf dir file && mkdir dir && touch file +testing "chmod a=r dir file" "chmod a=r dir file && + ls -ld dir file | cut -d' ' -f 1" "dr--r--r--\n-r--r--r--\n" "" "" + +rm -rf dir file && mkdir dir && touch file +testing "chmod a=w dir file" "chmod a=w dir file && + ls -ld dir file | cut -d' ' -f 1" "d-w--w--w-\n--w--w--w-\n" "" "" + +rm -rf dir file && mkdir dir && touch file +testing "chmod a=x dir file" "chmod a=x dir file && + ls -ld dir file | cut -d' ' -f 1" "d--x--x--x\n---x--x--x\n" "" "" + +rm -rf dir file && mkdir dir && touch file +testing "chmod a+r dir file" "chmod a+r dir file && + ls -ld dir file | cut -d' ' -f 1" "drwxr-xr-x\n-rw-r--r--\n" "" "" + +rm -rf dir file && mkdir dir && touch file +testing "chmod a+w dir file" "chmod a+w dir file && + ls -ld dir file | cut -d' ' -f 1" "drwxrwxrwx\n-rw-rw-rw-\n" "" "" + +rm -rf dir file && mkdir dir && touch file +testing "chmod a+x dir file" "chmod a+x dir file && + ls -ld dir file | cut -d' ' -f 1" "drwxr-xr-x\n-rwxr-xr-x\n" "" "" + +rm -rf dir file && mkdir dir && touch file +testing "chmod a-r dir file" "chmod a-r dir file && + ls -ld dir file | cut -d' ' -f 1" "d-wx--x--x\n--w-------\n" "" "" + +rm -rf dir file && mkdir dir && touch file +testing "chmod a-w dir file" "chmod a-w dir file && + ls -ld dir file | cut -d' ' -f 1" "dr-xr-xr-x\n-r--r--r--\n" "" "" + +rm -rf dir file && mkdir dir && touch file +testing "chmod a-x dir file" "chmod a-x dir file && + ls -ld dir file | cut -d' ' -f 1" "drw-r--r--\n-rw-r--r--\n" "" "" + +rm -rf dir file && mkdir dir && touch file +testing "chmod =r dir file" "chmod =r dir file && + ls -ld dir file | cut -d' ' -f 1" "dr--r--r--\n-r--r--r--\n" "" "" + +rm -rf dir file && mkdir dir && touch file +testing "chmod =w dir file" "chmod =w dir file && + ls -ld dir file | cut -d' ' -f 1" "d-w-------\n--w-------\n" "" "" + +rm -rf dir file && mkdir dir && touch file +testing "chmod =x dir file" "chmod =x dir file && + ls -ld dir file | cut -d' ' -f 1" "d--x--x--x\n---x--x--x\n" "" "" + +rm -rf dir file && mkdir dir && touch file +testing "chmod +r dir file" "chmod +r dir file && + ls -ld dir file | cut -d' ' -f 1" "drwxr-xr-x\n-rw-r--r--\n" "" "" + +rm -rf dir file && mkdir dir && touch file +testing "chmod +w dir file" "chmod +w dir file && + ls -ld dir file | cut -d' ' -f 1" "drwxr-xr-x\n-rw-r--r--\n" "" "" + +rm -rf dir file && mkdir dir && touch file +testing "chmod +x dir file" "chmod +x dir file && + ls -ld dir file | cut -d' ' -f 1" "drwxr-xr-x\n-rwxr-xr-x\n" "" "" + +rm -rf dir file && mkdir dir && touch file +testing "chmod -r dir file" "chmod -r dir file && + ls -ld dir file | cut -d' ' -f 1" "d-wx--x--x\n--w-------\n" "" "" + +rm -rf dir file && mkdir dir && touch file +testing "chmod -w dir file" "chmod -w dir file && + ls -ld dir file | cut -d' ' -f 1" "dr-xr-xr-x\n-r--r--r--\n" "" "" + +rm -rf dir file && mkdir dir && touch file +testing "chmod -x dir file" "chmod -x dir file && + ls -ld dir file | cut -d' ' -f 1" "drw-r--r--\n-rw-r--r--\n" "" "" + +# Removing test files for cleanup purpose +rm -rf dir file diff --git a/scripts/test/groupadd.test b/scripts/test/groupadd.test new file mode 100644 index 00000000..0395e01a --- /dev/null +++ b/scripts/test/groupadd.test @@ -0,0 +1,56 @@ +#!/bin/bash +# Copyright 2013 Divya Kothari <divya.s.kothari@gmail.com> +# Copyright 2013 Robin Mittal <robinmittal.it@gmail.com> + +[ -f testing.sh ] && . testing.sh + +# 70 characters long string; hereafter, we will use it as per our need. +_s70="abcdefghijklmnopqrstuvwxyz123456789abcdefghijklmnopqrstuvwxyz123456789" + +echo "# usage: addgroup [-g GID] [USER] GROUP +# Add a group or add a user to a group." + +# Redirecting all output to /dev/null for grep and delgroup +arg="&>/dev/null" + +#testing "name" "command" "result" "infile" "stdin" + +testing "groupadd group_name (text)" "groupadd toyTestGroup && + grep '^toyTestGroup:' /etc/group $arg && groupdel toyTestGroup $arg && + echo 'yes'" "yes\n" "" "" +testing "groupadd group_name (alphanumeric)" "groupadd toy1Test2Group3 && + grep '^toy1Test2Group3:' /etc/group $arg && groupdel toy1Test2Group3 $arg && + echo 'yes'" "yes\n" "" "" +testing "groupadd group_name (numeric)" "groupadd 987654321 && + grep '^987654321:' /etc/group $arg && groupdel 987654321 $arg && + echo 'yes'" "yes\n" "" "" +testing "groupadd group_name (with ./-)" "groupadd toy.1Test-2Group.3 && + grep '^toy.1Test-2Group.3:' /etc/group $arg && + groupdel toy.1Test-2Group.3 $arg && echo 'yes'" "yes\n" "" "" + +_s210=`echo $_s70$_s70$_s70` +testing "groupadd group_name (long string)" "groupadd $_s210 && + grep '^$_s210:' /etc/group $arg && groupdel $_s210 $arg && echo 'yes'" \ + "yes\n" "" "" +testing "groupadd group_name with group_id" "groupadd -g 49999 toyTestGroup && + grep '^toyTestGroup:' /etc/group $arg && groupdel toyTestGroup $arg && + echo 'yes'" "yes\n" "" "" +testing "groupadd group_name with group_id (system_group)" \ + "groupadd -g 49999 -S toyTestGroup && grep '^toyTestGroup:' /etc/group $arg && + groupdel toyTestGroup $arg && echo 'yes'" "yes\n" "" "" +testing "groupadd group_name (system_group)" "groupadd -S toyTestGroup && + grep '^toyTestGroup:' /etc/group $arg && groupdel toyTestGroup $arg && + echo 'yes'" "yes\n" "" "" +testing "groupadd group_name (add/del user)" "groupadd toyTestGroup && + grep '^toyTestGroup:' /etc/group $arg && groupadd $USER toyTestGroup && + grep '^toyTestGroup:.*:.*:.*$USER.*' /etc/group $arg && + groupdel $USER toyTestGroup $arg || groupdel toyTestGroup && + grep '^toyTestGroup:' /etc/group $arg || echo 'yes'" "yes\n" "" "" + + echo "Testing to add single group multiple times after removing it..." + for each in {01..20} + do + testing "groupadd group_name ($each)" "groupadd toyTestGroup && + grep '^toyTestGroup:' /etc/group $arg && groupdel toyTestGroup $arg && + echo 'yes'" "yes\n" "" "" + done diff --git a/scripts/test/groupdel.test b/scripts/test/groupdel.test new file mode 100644 index 00000000..d46db53c --- /dev/null +++ b/scripts/test/groupdel.test @@ -0,0 +1,27 @@ +#!/bin/bash + +# Copyright 2013 Divya Kothari <divya.s.kothari@gmail.com> +# Copyright 2013 Robin Mittal <robinmittal.it@gmail.com> + +[ -f testing.sh ] && . testing.sh + +# Redirecting all output to /dev/null for grep and delgroup +arg="&>/dev/null" + +#testing "name" "command" "result" "infile" "stdin" + +testing "groupadd group_name (text)" "groupadd toyTestGroup && + grep '^toyTestGroup:' /etc/group $arg && groupdel toyTestGroup $arg && + echo 'yes'" "yes\n" "" "" +testing "groupadd group_name (alphanumeric)" "groupadd toy1Test2Group3 && + grep '^toy1Test2Group3:' /etc/group $arg && groupdel toy1Test2Group3 $arg && + echo 'yes'" "yes\n" "" "" +testing "groupadd group_name (numeric)" "groupadd 987654321 && + grep '^987654321:' /etc/group $arg && groupdel 987654321 $arg && + echo 'yes'" "yes\n" "" "" +testing "groupadd group_name (with ./-)" "groupadd toy.1Test-2Group.3 && + grep '^toy.1Test-2Group.3:' /etc/group $arg && + groupdel toy.1Test-2Group.3 $arg && echo 'yes'" "yes\n" "" "" +testing "groupadd group_name with group_id" "groupadd -g 49999 toyTestGroup && + grep '^toyTestGroup:' /etc/group $arg && groupdel toyTestGroup $arg && + echo 'yes'" "yes\n" "" "" diff --git a/scripts/test/lsattr.test b/scripts/test/lsattr.test new file mode 100644 index 00000000..870b3f66 --- /dev/null +++ b/scripts/test/lsattr.test @@ -0,0 +1,159 @@ +#!/bin/bash + +[ -f testing.sh ] && . testing.sh + +#testing "name" "command" "result" "infile" "stdin" + +# chattr - Testcases + +mkdir testattr +IN="cd testattr" +OUT="cd .." +_t="abcdefghijklmnopqrstuvwxyz" + +testing "chattr [-/+]i FILE[write]" "$IN && echo "$_t" > testFile && + chattr +i testFile && lsattr testFile && echo "$_t" > testFile; + chattr -i testFile; rm -rf testFile; $OUT " "----i-------- testFile\n" "" "" +testing "chattr [-/+]i FILE[re-write]" "$IN && echo "$_t" > testFile && + chattr +i testFile && echo \"$_t\" > testFile || chattr -i testFile && + echo \"$_t\" > testFile && lsattr testFile; rm -rf testFile; $OUT" \ + "------------- testFile\n" "" "" +testing "chattr [-/+]i FILE[append]" "$IN && echo "$_t" > testFile && + chattr +i testFile && echo \"$_t\" >> testFile || lsattr testFile && + chattr -i testFile; rm -rf testFile; $OUT" "----i-------- testFile\n" "" "" +testing "chattr [-/+]i FILE[move]" "$IN && echo "$_t" > testFile && + chattr +i testFile && mv testFile testFile1 || lsattr testFile && + chattr -i testFile; rm -rf testFile; $OUT" "----i-------- testFile\n" "" "" +testing "chattr [-/+]i FILE[delete]" "$IN && echo "$_t" > testFile && + chattr +i testFile && rm -f testFile || lsattr testFile && + chattr -i testFile; rm -rf testFile; $OUT" "----i-------- testFile\n" "" "" +testing "chattr [-/+]i FILE[read]" "$IN && echo "$_t" > testFile && + chattr +i testFile && cat testFile && lsattr testFile && + chattr -i testFile; rm -rf testFile; $OUT" "$_t\n----i-------- testFile\n" "" "" +testing "chattr [-/+]a FILE[write]" "$IN && echo "$_t" > testFile && + chattr +a testFile && echo $_t > testFile || lsattr testFile && + chattr -a testFile; rm -rf testFile; $OUT" "-----a------- testFile\n" "" "" +testing "chattr [-/+]a FILE[re-write]" "$IN && echo "$_t" > testFile && + chattr +a testFile && echo $_t > testFile || lsattr testFile && + chattr -a testFile && echo $_t > testFile && cat testFile && + lsattr testFile; rm -rf testFile; + $OUT" "-----a------- testFile\n$_t\n------------- testFile\n" "" "" +testing "chattr [-/+]a FILE[append]" "$IN && echo "$_t" > testFile && + chattr +a testFile && echo $_t >> testFile && cat testFile && + lsattr testFile && chattr -a testFile; rm -rf testFile; $OUT" \ + "$_t\n$_t\n-----a------- testFile\n" "" "" +testing "chattr [-/+]a FILE[move]" "$IN && echo "$_t" > testFile && + chattr +a testFile && mv testFile testFile1 || lsattr testFile && + chattr -a testFile; rm -rf testFile; $OUT" "-----a------- testFile\n" "" "" +testing "chattr [-/+]a FILE[delete]" "$IN && echo "$_t" > testFile && + chattr +a testFile && rm -f testFile || lsattr testFile && + chattr -a testFile; rm -rf testFile; $OUT" "-----a------- testFile\n" "" "" +testing "chattr [-/+]a FILE[read]" "$IN && echo "$_t" > testFile && + chattr +a testFile && cat testFile && lsattr testFile && chattr -a testFile; + rm -rf testFile; $OUT" "$_t\n-----a------- testFile\n" "" "" + +for attr in "A" "a" "c" "D" "d" "i" "j" "s" "S" "t" "T" "u" +do + testing "chattr [-/+]$attr FILE" "$IN && echo "$_t" > testFile && + chattr +$attr testFile && cat testFile && chattr -$attr testFile && + lsattr testFile; rm -rf testFile; $OUT" "$_t\n------------- testFile\n" "" "" +done + +for attr in "A" "a" "c" "D" "d" "i" "j" "s" "S" "t" "T" "u" +do + testing "chattr -$attr FILE" "$IN && echo "$_t" > testFile && chattr -$attr testFile && + cat testFile && lsattr testFile; rm -rf testFile; $OUT" "$_t\n------------- testFile\n" "" "" +done + +testing "chattr [-/+]AacDdijsStTu FILE" "$IN && echo "$_t" > testFile && + chattr +AacDdijsStTu testFile && cat testFile && chattr -AacDdijsStTu testFile && + lsattr testFile; rm -rf testFile; $OUT" "$_t\n------------- testFile\n" "" "" +testing "chattr [-/+]AacDdijsStTu(random) FILE" \ + "$IN && echo "$_t" > testFile && + chattr +AacDdijsStTu testFile && cat testFile && chattr -A testFile && + chattr -a testFile && chattr -c testFile && chattr -D testFile && + chattr -d testFile && chattr -i testFile && chattr -j testFile && + chattr -s testFile && chattr -S testFile && chattr -t testFile && + chattr -T testFile && chattr -u testFile && lsattr testFile && + chattr -AacDdijsStTu testFile; rm -rf testFile; $OUT" \ + "$_t\n------------- testFile\n" "" "" +testing "chattr [-/+]AacDdijsStTu FILE*" "$IN && + echo "$_t" > testFile && echo "$_t" > testFile1 && + echo "$_t" > testFile2 && echo "$_t" > testFile3 && + echo "$_t" > testFile4 && echo "$_t" > testFile5 && + echo "$_t" > testFile6 && echo "$_t" > testFile7 && + echo "$_t" > testFile8 && echo "$_t" > testFile9 && + echo "$_t" > testFile10 && echo "$_t" > testFile11 && + chattr +AacDdijsStTu testFile* && + cat testFile9 && chattr -AacDdijsStTu testFile* && lsattr testFile*; rm -rf testFile*; $OUT" \ + "$_t\n------------- testFile\n------------- testFile1\n------------- testFile10\n------------- testFile11\n------------- testFile2\n------------- testFile3\n------------- testFile4\n------------- testFile5\n------------- testFile6\n------------- testFile7\n------------- testFile8\n------------- testFile9\n" "" "" +testing "chattr [-/+]AacDdijsStTu(random) FILE*" \ + "$IN && echo "$_t" > testFile && + chattr +AacDdijsStTu testFile* && cat testFile && chattr -A testFile* && + chattr -a testFile* && chattr -c testFile* && chattr -D testFile* && + chattr -d testFile* && chattr -i testFile* && chattr -j testFile* && + chattr -s testFile* && chattr -S testFile* && chattr -t testFile* && + chattr -T testFile* && chattr -u testFile* && lsattr testFile; + rm -rf testFile; $OUT" \ + "$_t\n------------- testFile\n" "" "" +testing "chattr [-/+]i FILE[write]" \ + "$IN && echo "$_t" > testFile && + chattr +i testFile && + echo \"$_t\" > testFile || lsattr testFile && chattr -i testFile; + rm -rf testFile; $OUT" "----i-------- testFile\n" "" "" +testing "chattr [-/+]A FILE[write]" \ + "$IN && echo "$_t" > testFile && chattr +A testFile && + echo \"$_t\" > testFile && lsattr testFile && chattr -A testFile; + rm -rf testFile; $OUT" "-------A----- testFile\n" "" "" +testing "chattr [-/+]s FILE[write]" \ + "$IN && echo "$_t" > testFile && chattr +s testFile && + echo \"$_t\" > testFile && lsattr testFile && chattr -s testFile + rm -rf testFile; $OUT" "s------------ testFile\n" "" "" +testing "chattr -v version FILE[write]" \ + "$IN && echo "$_t" > testFile && + chattr -v 1234 testFile && echo \"$_t\" > testFile && + lsattr -v testFile; rm -rf testFile" \ + " 1234 ------------- testFile\n" "" "" + +_a="-------A-----" +testing "chattr -R [-/+]a FILE" "$IN && touch aa && chattr -R +A aa && lsattr aa && + chattr -R -A aa; rm -rf aa; $OUT" "$_a aa\n" "" "" +testing "chattr -R [-/+]a FILE.." "$IN && touch aa bb && + chattr -R +A aa bb && lsattr aa bb && + chattr -R -A aa bb; rm -rf aa bb; $OUT" "$_a aa\n$_a bb\n" "" "" + +# Clean up +rm -rf testattr + +# lsattr - Testcases +mkdir dir && cd dir && touch file +chattr +A file &>/dev/null + +_p=$PWD +_b="-------------" +_A="-------A-----" + +testing "lsattr file" "lsattr file" "$_A file\n" "" "" +testing "lsattr file_path" "lsattr $_p/file" "$_A $_p/file\n" "" "" +testing "lsattr -R file" "lsattr -R file" "$_A file\n" "" "" +testing "lsattr -R file_path" "lsattr -R $_p/file" "$_A $_p/file\n" "" "" +testing "lsattr -a file" "lsattr -a file" "$_A file\n" "" "" +testing "lsattr -a file_path" "lsattr -a $_p/file" "$_A $_p/file\n" "" "" +testing "lsattr -d ." "lsattr -d ." "$_b .\n" "" "" +testing "lsattr -d dir_path" "lsattr -d $_p" "$_b $_p\n" "" "" +testing "lsattr -d file" "lsattr -d file" "$_A file\n" "" "" +testing "lsattr -d file_path" "lsattr -d $_p/file" "$_A $_p/file\n" "" "" +sp_44=" " +testing "lsattr -l file" "lsattr -l file" "file $sp_44 No_Atime\n" "" "" +_v="12345" +testing "lsattr -v file" "chattr -v $_v * && lsattr -v file" \ + "$_v $_A file\n" "" "" +testing "lsattr -v file_path" "chattr -v $_v * && lsattr -v $_p/file" \ + "$_v $_A $_p/file\n" "" "" +testing "lsattr -Radlv file1 file2" "chattr -v $_v * && + lsattr -Radlv file input" \ + "$_v file $sp_44 No_Atime\n$_v input $sp_44 ---\n" "" "" + +# Cleanup +chattr -AacDdijsStTu file && cd .. +rm -rf dir diff --git a/scripts/test/mount.test b/scripts/test/mount.test new file mode 100644 index 00000000..1fdc00f7 --- /dev/null +++ b/scripts/test/mount.test @@ -0,0 +1,87 @@ +#!/bin/bash + +# Copyright 2013 Divya Kothari <divya.s.kothari@gmail.com> +# Copyright 2013 Robin Mittal <robinmittal.it@gmail.com> + +[ -f testing.sh ] && . testing.sh + +#testing "name" "command" "result" "infile" "stdin" + +root_fs=`df | grep "\/$" | awk '{print $1}'` +root_fs_type=`file -sL $root_fs | awk '{print $5}'` + +tmp_b_fs="tmp_b_fs" +tmp_b_fs_type="ext3" + +reCreateTmpFs() { + rm -rf $tmp_b_fs + mknod $tmp_b_fs b 1 0 + mkfs.ext3 $tmp_b_fs >/dev/null 2>&1 +} +reCreateTmpFs + +testing "mount $root_fs /mnt" \ + "mount $root_fs /mnt >/dev/null 2>&1 && mkdir /mnt/testDir && + sleep 1 && umount /mnt && test -e /testDir && rmdir /testDir" "" "" "" +testing "mount $tmp_b_fs /mnt" \ + "mount $tmp_b_fs /mnt >/dev/null 2>&1 && mkdir /mnt/testDir && + sleep 1 && umount /mnt && ! test -e /mnt/testDir" "" "" "" +reCreateTmpFs + +chmod 444 /mnt +testing "mount $root_fs /mnt (read_only dir)" \ + "mount $root_fs /mnt >/dev/null 2>&1 && mkdir /mnt/testDir && + sleep 1 && umount /mnt && test -e /testDir && rmdir /testDir" "" "" "" +testing "mount $tmp_b_fs /mnt (read_only dir)" \ + "mount $tmp_b_fs /mnt >/dev/null 2>&1 && mkdir /mnt/testDir && + sleep 1 && umount /mnt && ! test -e /mnt/testDir" "" "" "" +reCreateTmpFs +chmod 755 /mnt +testing "mount -w $root_fs /mnt (write_only mode)" \ + "mount -w $root_fs /mnt >/dev/null 2>&1 && mkdir /mnt/testDir && + sleep 1 && umount /mnt && test -e /testDir && rmdir /testDir" "" "" "" +testing "mount -w $tmp_b_fs /mnt (write_only mode)" \ + "mount -w $tmp_b_fs /mnt >/dev/null 2>&1 && mkdir /mnt/testDir && + sleep 1 && umount /mnt && ! test -e /mnt/testDir" "" "" "" +reCreateTmpFs +testing "mount -rw $tmp_b_fs /mnt (read_write mode)" \ + 'mount -rw $tmp_b_fs /mnt >/dev/null && mkdir /mnt/testDir && \ + sleep 1 && ! test -e /mnt/testDir && umount /mnt' "" "" "" +reCreateTmpFs +testing "mount $tmp_b_fs /mnt -t fs_type" \ + "mount $tmp_b_fs /mnt -t $tmp_b_fs_type >/dev/null 2>&1 && + mkdir /mnt/testDir && sleep 1 && umount /mnt && + ! test -e /mnt/testDir" "" "" "" +reCreateTmpFs +mkdir -p testDir1/testDir2 testDir +echo "abcdefghijklmnopqrstuvwxyz" > testDir1/testDir2/testFile +testing "mount -o bind dir1 dir2" \ + 'mount -o bind testDir1 testDir >/dev/null 2>&1 && \ + cat testDir/testDir2/testFile && sleep 1 && umount testDir' \ + "abcdefghijklmnopqrstuvwxyz\n" "" "" +testing "mount -o rbind dir1 dir2" \ + 'mount -o rbind testDir1 testDir >/dev/null 2>&1 && \ + cat testDir/testDir2/testFile && sleep 1 && umount testDir' \ + "abcdefghijklmnopqrstuvwxyz\n" "" "" +testing "mount -o loop $tmp_b_fs /mnt" \ + "mount -o loop $tmp_b_fs /mnt >/dev/null 2>&1 && mkdir /mnt/testDirp && + sleep 1 && umount -d /mnt && ! test -e /mnt/testDirp" "" "" "" +reCreateTmpFs + +mkdir testDir2 +testing "mount -o move mount_1 mount_2" \ + "mount $tmp_b_fs testDir1 && mkdir testDir1/testDirr && + mount -o move testDir1 testDir2 && test -r testDir2/testDirr && + sleep 1 && umount testDir2" "" "" "" +reCreateTmpFs +testing "mount -o rw $tmp_b_fs /mnt" \ + "mount -o rw $tmp_b_fs /mnt >/dev/null 2>&1 && mkdir /mnt/testDir && + sleep 1 && umount /mnt && ! test -e /mnt/testDir" "" "" "" +reCreateTmpFs +testing "mount -o ro $tmp_b_fs /mnt" \ + "mount -o ro $tmp_b_fs /mnt >/dev/null 2>&1 && + mkdir /mnt/testDir 2>/dev/null || sleep 1 && umount /mnt" "" "" "" +reCreateTmpFs + +umount testDir1 +rm -f $tmp_b_fs diff --git a/scripts/test/pgrep.test b/scripts/test/pgrep.test new file mode 100644 index 00000000..36df573a --- /dev/null +++ b/scripts/test/pgrep.test @@ -0,0 +1,122 @@ +#!/bin/bash + +# Copyright 2013 Divya Kothari <divya.s.kothari@gmail.com> +# Copyright 2013 Robin Mittal <robinmittal.it@gmail.com> + +#cleaning 'yes' processes +killall yes >/dev/null 2>&1 + +[ -f testing.sh ] && . testing.sh + +#testing "name" "command" "result" "infile" "stdin" + +# Starting processes to test pgrep command +yes >/dev/null & +proc=$! +echo "# Process created with id: $proc" +sleep 1 +session_id=0 +proc_parent=`cat /proc/${proc}/stat | awk '{ print $4 }'` +echo "# Parent Process id of $proc is $proc_parent" + +# Testcases for pgrep command +testing "pgrep pattern" "pgrep yes" "$proc\n" "" "" +testing "pgrep wildCardPattern" "pgrep ^y.*s$" "$proc\n" "" "" +testing "pgrep -l pattern" "pgrep -l yes" "$proc yes\n" "" "" +testing "pgrep -f pattern" "pgrep -f yes" "$proc\n" "" "" +testing "pgrep -n pattern" "pgrep -n yes" "$proc\n" "" "" +testing "pgrep -o pattern" "pgrep -o yes" "$proc\n" "" "" +testing "pgrep -s" "pgrep -s $session_id yes" "$proc\n" "" "" +testing "pgrep -P" "pgrep -P $proc_parent yes" "$proc\n" "" "" + +#Clean-up +killall yes >/dev/null 2>&1 + +# Testcases for pkill command + +yes >/dev/null & +sleep 1 +testing "pkill pattern" "pkill yes && sleep 1 && (pgrep yes || echo 'yes')" \ + "yes\n" "" "" +killall yes >/dev/null 2>&1 + +yes >/dev/null & +yes print1 >/dev/null & +yes print2 >/dev/null & +sleep 1 +testing "pkill pattern (multiple)" "pkill yes && sleep 1 && + (pgrep yes || echo 'yes')" "yes\n" "" "" +killall yes >/dev/null 2>&1 + +yes >/dev/null & +sleep 1 +testing "pkill -f pattern (one)" "pkill -f yes && sleep 1 && + (pgrep yes || echo 'yes')" "yes\n" "" "" +killall yes >/dev/null 2>&1 + +yes print1 >/dev/null & +sleep 1 +testing "pkill -f pattern args" "pkill -f \"yes print1\" && sleep 1 && + (pgrep yes || echo 'yes')" "yes\n" "" "" +killall yes >/dev/null 2>&1 + +yes >/dev/null & +yes print1 >/dev/null & +yes print2 >/dev/null & +sleep 1 +testing "pkill -f pattern (multiple)" "pkill -f yes && sleep 1 && + (pgrep yes || echo 'yes')" "yes\n" "" "" +killall yes >/dev/null 2>&1 + +yes >/dev/null & +sleep 1 +testing "pkill -s 0 -f pattern (regexp)" "pkill -s 0 -f ye* && sleep 1 && + (pgrep yes || echo 'yes')" "yes\n" "" "" +killall yes >/dev/null 2>&1 + +yes >/dev/null & +proc1=$! +yes >/dev/null & +proc2=$! +sleep 1 +testing "pkill -n pattern" "pkill -n yes && sleep 1 && pgrep yes" \ + "$proc1\n" "" "" +killall yes >/dev/null 2>&1 + +yes >/dev/null & +proc1=$! +yes >/dev/null & +proc2=$! +sleep 1 +testing "pkill -o pattern" "pkill -o yes && sleep 1 && pgrep yes" \ + "$proc2\n" "" "" +killall yes >/dev/null 2>&1 + +yes >/dev/null & +sleep 1 +testing "pkill -s (blank) pattern" "pkill -s '' yes && sleep 1 && + (pgrep yes || echo 'yes')" "yes\n" "" "" +killall yes >/dev/null 2>&1 + +yes >/dev/null & +sleep 1 +testing "pkill -s 0 pattern" "pkill -s 0 yes && sleep 1 && + (pgrep yes || echo 'yes')" "yes\n" "" "" +killall yes >/dev/null 2>&1 + +yes >/dev/null & +proc=$! +proc_p=`cat /proc/${proc}/stat | awk '{ print $4 }'` +sleep 1 +testing "pkill -P parent_prodId pattern" "pkill -P $proc_p yes && sleep 1 && + (pgrep yes || echo 'yes')" "yes\n" "" "" +killall yes >/dev/null 2>&1 + +yes >/dev/null & +proc=$! +proc_parent=`cat /proc/${proc}/stat | awk '{ print $4 }'` +sleep 1 +testing "pkill -9 pattern" "pkill -9 yes && sleep 1 && + (pgrep yes || echo 'yes')" "yes\n" "" "" +killall yes >/dev/null 2>&1 + diff --git a/scripts/test/useradd.test b/scripts/test/useradd.test new file mode 100644 index 00000000..a87da070 --- /dev/null +++ b/scripts/test/useradd.test @@ -0,0 +1,90 @@ +#!/bin/bash + +# Copyright 2013 Divya Kothari <divya.s.kothari@gmail.com> +# Copyright 2013 Robin Mittal <robinmittal.it@gmail.com> + +[ -f testing.sh ] && . testing.sh + +# 70 characters long string; hereafter, we will use it as per our need. +_s70="abcdefghijklmnopqrstuvwxyz123456789abcdefghijklmnopqrstuvwxyz123456789" + +# Redirecting all output to /dev/null for grep, adduser and deluser +arg="&>/dev/null" + +#testing "name" "command" "result" "infile" "stdin" + +# Default password for adding user is: 'password' +pass=`echo -ne 'password\npassword\n'` + +testing "adduser user_name (text)" "useradd toyTestUser $arg || + grep '^toyTestUser:' /etc/passwd $arg && test -d /home/toyTestUser && + userdel toyTestUser $arg && rm -rf /home/toyTestUser && echo 'yes'" \ + "yes\n" "" "$pass" + +testing "adduser user_name (alphanumeric)" "useradd toy1Test2User3 $arg || + grep '^toy1Test2User3:' /etc/passwd $arg && test -d /home/toy1Test2User3 && + userdel toy1Test2User3 $arg && rm -rf /home/toy1Test2User3 && echo 'yes'" \ + "yes\n" "" "$pass" + +testing "adduser user_name (numeric)" "useradd 987654321 $arg || + grep '^987654321:' /etc/passwd $arg && test -d /home/987654321 && + userdel 987654321 $arg && rm -rf /home/987654321 && echo 'yes'" \ + "yes\n" "" "$pass" + +testing "adduser user_name (with ./-/_)" "useradd toy.1Test-2User_3 $arg || + grep '^toy.1Test-2User_3:' /etc/passwd $arg && + test -d /home/toy.1Test-2User_3 && userdel toy.1Test-2User_3 $arg && + rm -rf /home/toy.1Test-2User_3 && echo 'yes'" "yes\n" "" "$pass" + +testing "adduser user_name (long string)" "useradd $_s70 $arg || + grep '^$_s70:' /etc/passwd $arg && test -d /home/$_s70 && + userdel $_s70 $arg && rm -rf /home/$_s70 && echo 'yes'" "yes\n" "" "$pass" + +testing "adduser user_name with dir" "useradd -h $PWD/dir toyTestUser $arg || + grep '^toyTestUser:.*dir' /etc/passwd $arg && test -d $PWD/dir && + userdel toyTestUser $arg && rm -rf $PWD/dir && echo 'yes'" "yes\n" "" "$pass" + +gecos="aaa,bbb,ccc,ddd,eee" +testing "adduser user_name with gecos" "useradd -g '$gecos' toyTestUser $arg || + grep '^toyTestUser:.*$gecos' /etc/passwd $arg && test -d /home/toyTestUser && + userdel toyTestUser $arg && rm -rf /home/toyTestUser && echo 'yes'" \ + "yes\n" "" "$pass" + +shl="/bin/sh" +testing "adduser user_name with shell" "useradd -s $shl toyTestUser $arg || + grep '^toyTestUser:.*$shl$' /etc/passwd $arg && test -d /home/toyTestUser && + userdel toyTestUser $arg && rm -rf /home/toyTestUser && echo 'yes'" \ + "yes\n" "" "$pass" + +g_name="root" +g_id=`grep $g_name /etc/group | cut -d : -f 3` +testing "adduser user_name with group" "useradd -G $g_name toyTestUser $arg || + grep '^toyTestUser:.*:.*:$g_id:.*' /etc/passwd $arg && + test -d /home/toyTestUser && userdel toyTestUser $arg && + rm -rf /home/toyTestUser && echo 'yes'" "yes\n" "" "$pass" + +testing "adduser user_name (system user)" "useradd -S toyTestUser $arg || + grep '^toyTestUser:.*:.*:.*' /etc/passwd $arg && + test ! -e /home/toyTestUser && userdel toyTestUser $arg && echo 'yes'" \ + "yes\n" "" "$pass" + +testing "adduser user_name with -D" "useradd -D toyTestUser $arg || + grep '^toyTestUser:.*:.*:.*' /etc/passwd $arg && test -d /home/toyTestUser && + userdel toyTestUser $arg && rm -rf /home/toyTestUser && echo 'yes'" \ + "yes\n" "" "$pass" + +testing "adduser user_name with -H" "useradd -H toyTestUser $arg || + grep '^toyTestUser:.*:.*:.*' /etc/passwd $arg && + test ! -e /home/toyTestUser && userdel toyTestUser $arg && echo 'yes'" \ + "yes\n" "" "$pass" + +testing "adduser user_name with dir and -H" \ + "useradd -H -h $PWD/dir toyTestUser $arg || + grep '^toyTestUser:.*dir' /etc/passwd $arg && test ! -e $PWD/dir && + userdel toyTestUser $arg && echo 'yes'" "yes\n" "" "$pass" + +testing "adduser user_name with user_id" "useradd -u 49999 toyTestUser $arg || + grep '^toyTestUser:x:49999:.*' /etc/passwd $arg && + test -d /home/toyTestUser && userdel toyTestUser $arg && + rm -rf /home/toyTestUser && echo 'yes'" "yes\n" "" "$pass" + |