Home | History | Annotate | Download | only in tests
      1 #!/bin/bash
      2 
      3 # Copyright 2013 Divya Kothari <divya.s.kothari (at] gmail.com>
      4 # Copyright 2013 Robin Mittal <robinmittal.it (at] gmail.com>
      5 
      6 [ -f testing.sh ] && . testing.sh
      7 
      8 if [ "$(id -u)" -ne 0 ]
      9 then
     10   echo "$SHOWSKIP: useradd (not root)"
     11   continue 2>/dev/null
     12   exit
     13 fi
     14 
     15 # Redirecting all output to /dev/null for grep, adduser and deluser
     16 arg="&>/dev/null"
     17 
     18 #testing "name" "command" "result" "infile" "stdin"
     19 
     20 # Default password for adding user is: 'password'
     21 pass=`echo -ne 'password\npassword\n'`
     22 
     23 user="toyTestUser"
     24 testing "(text)" "useradd $user $arg || 
     25    grep '^$user:' /etc/passwd $arg && [ -d /home/$user ] &&
     26    echo 'yes'" "yes\n" "" "$pass"
     27 userdel -r $user $arg
     28 
     29 user="toy1Test2User3"
     30 testing "(alphanumeric)" "useradd $user $arg ||
     31    grep '^$user:' /etc/passwd $arg && [ -d /home/$user ] &&
     32    echo 'yes'" "yes\n" "" "$pass"
     33 userdel -r $user $arg
     34 
     35 user="987654321"
     36 testing "(numeric)" "useradd $user $arg ||
     37    grep '^$user:' /etc/passwd $arg && [ -d /home/$user ] &&
     38    echo 'yes'" "yes\n" "" "$pass"
     39 userdel -r $user $arg
     40 
     41 user="toy.1Test-2User_3"
     42 testing "(with ./-/_)" "useradd $user $arg ||
     43    grep '^$user:' /etc/passwd $arg && [ -d /home/$user ] && 
     44    echo 'yes'" "yes\n" "" "$pass"
     45 userdel -r $user $arg
     46 
     47 # 70 characters long string; hereafter, we will use it as per our need.
     48 user="abcdefghijklmnopqrstuvwxyz123456789abcdefghijklmnopqrstuvwxyz123456789"
     49 testing "(long string)" "useradd $user $arg ||
     50    grep '^$user:' /etc/passwd $arg && [ -d /home/$user ] &&
     51    echo 'yes'" "yes\n" "" "$pass"
     52 userdel -r $user $arg
     53 
     54 user="toyTestUser"
     55 testing "dir" "useradd -h $PWD/dir $user $arg ||
     56    grep '^$user:.*dir' /etc/passwd $arg && [ -d $PWD/dir ] &&
     57    echo 'yes'" "yes\n" "" "$pass"
     58 userdel -r $user $arg
     59 rm -rf $PWD/dir
     60 
     61 gecos="aaa,bbb,ccc,ddd,eee"
     62 testing "gecos" "useradd -g '$gecos' $user $arg ||
     63    grep '^$user:.*$gecos' /etc/passwd $arg && [ -d /home/$user ] &&
     64    echo 'yes'" "yes\n" "" "$pass"
     65 userdel -r $user $arg
     66 
     67 shl="/bin/sh"
     68 testing "shell" "useradd -s $shl $user $arg ||
     69    grep '^$user:.*$shl$' /etc/passwd $arg && [ -d /home/$user ] &&
     70    echo 'yes'" "yes\n" "" "$pass"
     71 userdel -r $user $arg
     72 
     73 g_name="root"
     74 g_id=`grep $g_name':.*:.*' /etc/group | cut -d : -f 3`
     75 testing "group" "useradd -G $g_name $user $arg ||
     76    grep '^$user:.*:.*:$g_id:.*' /etc/passwd $arg && [ -d /home/$user ] &&
     77    echo 'yes'" "yes\n" "" "$pass"
     78 userdel -r $user $arg
     79 
     80 testing "(system user)" "useradd -S $user $arg ||
     81    grep '^$user:.*:.*:.*' /etc/passwd $arg && [ ! -e /home/$user ] && 
     82    echo 'yes'" "yes\n" "" "$pass"   
     83 userdel -r $user $arg
     84 
     85 testing "-D" "useradd -D $user $arg ||
     86    grep '^$user:.*:.*:.*' /etc/passwd $arg && [ -d /home/$user ] &&
     87    echo 'yes'" "yes\n" "" "$pass"
     88 userdel -r $user $arg
     89 
     90 testing "-H" "useradd -H $user $arg ||
     91    grep '^$user:.*:.*:.*' /etc/passwd $arg && [ ! -e /home/$user ] &&
     92    echo 'yes'" "yes\n" "" "$pass"
     93 userdel -r $user $arg
     94 
     95 testing "dir and -H" "useradd -H -h $PWD/dir $user $arg ||
     96    grep '^$user:.*dir' /etc/passwd $arg && [ ! -e $PWD/dir ] &&
     97    echo 'yes'" "yes\n" "" "$pass"
     98 userdel -r $user $arg
     99 
    100 testing "-u" "useradd -u 49999 $user $arg ||
    101    grep '^$user:x:49999:.*' /etc/passwd $arg && [ -d /home/$user ] && 
    102    echo 'yes'" "yes\n" "" "$pass"
    103 userdel -r $user $arg
    104 
    105