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