1ef0ed68d5ba5794c1352e64273d4c5039e62476bDivya Kothari#!/bin/bash
2ef0ed68d5ba5794c1352e64273d4c5039e62476bDivya Kothari
3ef0ed68d5ba5794c1352e64273d4c5039e62476bDivya Kothari# Copyright 2013 Divya Kothari <divya.s.kothari@gmail.com>
4ef0ed68d5ba5794c1352e64273d4c5039e62476bDivya Kothari# Copyright 2013 Robin Mittal <robinmittal.it@gmail.com>
5ef0ed68d5ba5794c1352e64273d4c5039e62476bDivya Kothari
6ef0ed68d5ba5794c1352e64273d4c5039e62476bDivya Kothari[ -f testing.sh ] && . testing.sh
7ef0ed68d5ba5794c1352e64273d4c5039e62476bDivya Kothari
8268330739fd7ab6313b9d7096b9bc0aa9a25f321Yeongdeok Suhif [ "$(id -u)" -ne 0 ]
9268330739fd7ab6313b9d7096b9bc0aa9a25f321Yeongdeok Suhthen
103f3049c2f1b225f244fe3c1205935c48c542a055Rob Landley  echo "$SHOWSKIP: useradd (not root)"
11268330739fd7ab6313b9d7096b9bc0aa9a25f321Yeongdeok Suh  continue 2>/dev/null
12268330739fd7ab6313b9d7096b9bc0aa9a25f321Yeongdeok Suh  exit
13268330739fd7ab6313b9d7096b9bc0aa9a25f321Yeongdeok Suhfi
14ef0ed68d5ba5794c1352e64273d4c5039e62476bDivya Kothari
15ef0ed68d5ba5794c1352e64273d4c5039e62476bDivya Kothari# Redirecting all output to /dev/null for grep, adduser and deluser
16ef0ed68d5ba5794c1352e64273d4c5039e62476bDivya Kothariarg="&>/dev/null"
17ef0ed68d5ba5794c1352e64273d4c5039e62476bDivya Kothari
18ef0ed68d5ba5794c1352e64273d4c5039e62476bDivya Kothari#testing "name" "command" "result" "infile" "stdin"
19ef0ed68d5ba5794c1352e64273d4c5039e62476bDivya Kothari
20ef0ed68d5ba5794c1352e64273d4c5039e62476bDivya Kothari# Default password for adding user is: 'password'
21ef0ed68d5ba5794c1352e64273d4c5039e62476bDivya Kotharipass=`echo -ne 'password\npassword\n'`
22ef0ed68d5ba5794c1352e64273d4c5039e62476bDivya Kothari
23268330739fd7ab6313b9d7096b9bc0aa9a25f321Yeongdeok Suhuser="toyTestUser"
24336c44adca1768ada1e1e2f4d7dbbc33e994e582Rob Landleytesting "(text)" "useradd $user $arg || 
25268330739fd7ab6313b9d7096b9bc0aa9a25f321Yeongdeok Suh   grep '^$user:' /etc/passwd $arg && [ -d /home/$user ] &&
26268330739fd7ab6313b9d7096b9bc0aa9a25f321Yeongdeok Suh   echo 'yes'" "yes\n" "" "$pass"
27268330739fd7ab6313b9d7096b9bc0aa9a25f321Yeongdeok Suhuserdel -r $user $arg
28268330739fd7ab6313b9d7096b9bc0aa9a25f321Yeongdeok Suh
29268330739fd7ab6313b9d7096b9bc0aa9a25f321Yeongdeok Suhuser="toy1Test2User3"
30336c44adca1768ada1e1e2f4d7dbbc33e994e582Rob Landleytesting "(alphanumeric)" "useradd $user $arg ||
31268330739fd7ab6313b9d7096b9bc0aa9a25f321Yeongdeok Suh   grep '^$user:' /etc/passwd $arg && [ -d /home/$user ] &&
32268330739fd7ab6313b9d7096b9bc0aa9a25f321Yeongdeok Suh   echo 'yes'" "yes\n" "" "$pass"
33268330739fd7ab6313b9d7096b9bc0aa9a25f321Yeongdeok Suhuserdel -r $user $arg
34268330739fd7ab6313b9d7096b9bc0aa9a25f321Yeongdeok Suh
35268330739fd7ab6313b9d7096b9bc0aa9a25f321Yeongdeok Suhuser="987654321"
36336c44adca1768ada1e1e2f4d7dbbc33e994e582Rob Landleytesting "(numeric)" "useradd $user $arg ||
37268330739fd7ab6313b9d7096b9bc0aa9a25f321Yeongdeok Suh   grep '^$user:' /etc/passwd $arg && [ -d /home/$user ] &&
38268330739fd7ab6313b9d7096b9bc0aa9a25f321Yeongdeok Suh   echo 'yes'" "yes\n" "" "$pass"
39268330739fd7ab6313b9d7096b9bc0aa9a25f321Yeongdeok Suhuserdel -r $user $arg
40268330739fd7ab6313b9d7096b9bc0aa9a25f321Yeongdeok Suh
41268330739fd7ab6313b9d7096b9bc0aa9a25f321Yeongdeok Suhuser="toy.1Test-2User_3"
42336c44adca1768ada1e1e2f4d7dbbc33e994e582Rob Landleytesting "(with ./-/_)" "useradd $user $arg ||
43268330739fd7ab6313b9d7096b9bc0aa9a25f321Yeongdeok Suh   grep '^$user:' /etc/passwd $arg && [ -d /home/$user ] && 
44268330739fd7ab6313b9d7096b9bc0aa9a25f321Yeongdeok Suh   echo 'yes'" "yes\n" "" "$pass"
45268330739fd7ab6313b9d7096b9bc0aa9a25f321Yeongdeok Suhuserdel -r $user $arg
46ef0ed68d5ba5794c1352e64273d4c5039e62476bDivya Kothari
47268330739fd7ab6313b9d7096b9bc0aa9a25f321Yeongdeok Suh# 70 characters long string; hereafter, we will use it as per our need.
48268330739fd7ab6313b9d7096b9bc0aa9a25f321Yeongdeok Suhuser="abcdefghijklmnopqrstuvwxyz123456789abcdefghijklmnopqrstuvwxyz123456789"
49336c44adca1768ada1e1e2f4d7dbbc33e994e582Rob Landleytesting "(long string)" "useradd $user $arg ||
50268330739fd7ab6313b9d7096b9bc0aa9a25f321Yeongdeok Suh   grep '^$user:' /etc/passwd $arg && [ -d /home/$user ] &&
51268330739fd7ab6313b9d7096b9bc0aa9a25f321Yeongdeok Suh   echo 'yes'" "yes\n" "" "$pass"
52268330739fd7ab6313b9d7096b9bc0aa9a25f321Yeongdeok Suhuserdel -r $user $arg
53268330739fd7ab6313b9d7096b9bc0aa9a25f321Yeongdeok Suh
54268330739fd7ab6313b9d7096b9bc0aa9a25f321Yeongdeok Suhuser="toyTestUser"
55336c44adca1768ada1e1e2f4d7dbbc33e994e582Rob Landleytesting "dir" "useradd -h $PWD/dir $user $arg ||
56268330739fd7ab6313b9d7096b9bc0aa9a25f321Yeongdeok Suh   grep '^$user:.*dir' /etc/passwd $arg && [ -d $PWD/dir ] &&
57268330739fd7ab6313b9d7096b9bc0aa9a25f321Yeongdeok Suh   echo 'yes'" "yes\n" "" "$pass"
58268330739fd7ab6313b9d7096b9bc0aa9a25f321Yeongdeok Suhuserdel -r $user $arg
59268330739fd7ab6313b9d7096b9bc0aa9a25f321Yeongdeok Suhrm -rf $PWD/dir
60ef0ed68d5ba5794c1352e64273d4c5039e62476bDivya Kothari
61ef0ed68d5ba5794c1352e64273d4c5039e62476bDivya Kotharigecos="aaa,bbb,ccc,ddd,eee"
62336c44adca1768ada1e1e2f4d7dbbc33e994e582Rob Landleytesting "gecos" "useradd -g '$gecos' $user $arg ||
63268330739fd7ab6313b9d7096b9bc0aa9a25f321Yeongdeok Suh   grep '^$user:.*$gecos' /etc/passwd $arg && [ -d /home/$user ] &&
64268330739fd7ab6313b9d7096b9bc0aa9a25f321Yeongdeok Suh   echo 'yes'" "yes\n" "" "$pass"
65268330739fd7ab6313b9d7096b9bc0aa9a25f321Yeongdeok Suhuserdel -r $user $arg
66ef0ed68d5ba5794c1352e64273d4c5039e62476bDivya Kothari
67ef0ed68d5ba5794c1352e64273d4c5039e62476bDivya Kotharishl="/bin/sh"
68336c44adca1768ada1e1e2f4d7dbbc33e994e582Rob Landleytesting "shell" "useradd -s $shl $user $arg ||
69268330739fd7ab6313b9d7096b9bc0aa9a25f321Yeongdeok Suh   grep '^$user:.*$shl$' /etc/passwd $arg && [ -d /home/$user ] &&
70268330739fd7ab6313b9d7096b9bc0aa9a25f321Yeongdeok Suh   echo 'yes'" "yes\n" "" "$pass"
71268330739fd7ab6313b9d7096b9bc0aa9a25f321Yeongdeok Suhuserdel -r $user $arg
72ef0ed68d5ba5794c1352e64273d4c5039e62476bDivya Kothari
73ef0ed68d5ba5794c1352e64273d4c5039e62476bDivya Kotharig_name="root"
74268330739fd7ab6313b9d7096b9bc0aa9a25f321Yeongdeok Suhg_id=`grep $g_name':.*:.*' /etc/group | cut -d : -f 3`
75336c44adca1768ada1e1e2f4d7dbbc33e994e582Rob Landleytesting "group" "useradd -G $g_name $user $arg ||
76268330739fd7ab6313b9d7096b9bc0aa9a25f321Yeongdeok Suh   grep '^$user:.*:.*:$g_id:.*' /etc/passwd $arg && [ -d /home/$user ] &&
77268330739fd7ab6313b9d7096b9bc0aa9a25f321Yeongdeok Suh   echo 'yes'" "yes\n" "" "$pass"
78268330739fd7ab6313b9d7096b9bc0aa9a25f321Yeongdeok Suhuserdel -r $user $arg
79268330739fd7ab6313b9d7096b9bc0aa9a25f321Yeongdeok Suh
80336c44adca1768ada1e1e2f4d7dbbc33e994e582Rob Landleytesting "(system user)" "useradd -S $user $arg ||
81268330739fd7ab6313b9d7096b9bc0aa9a25f321Yeongdeok Suh   grep '^$user:.*:.*:.*' /etc/passwd $arg && [ ! -e /home/$user ] && 
82268330739fd7ab6313b9d7096b9bc0aa9a25f321Yeongdeok Suh   echo 'yes'" "yes\n" "" "$pass"   
83268330739fd7ab6313b9d7096b9bc0aa9a25f321Yeongdeok Suhuserdel -r $user $arg
84268330739fd7ab6313b9d7096b9bc0aa9a25f321Yeongdeok Suh
85336c44adca1768ada1e1e2f4d7dbbc33e994e582Rob Landleytesting "-D" "useradd -D $user $arg ||
86268330739fd7ab6313b9d7096b9bc0aa9a25f321Yeongdeok Suh   grep '^$user:.*:.*:.*' /etc/passwd $arg && [ -d /home/$user ] &&
87268330739fd7ab6313b9d7096b9bc0aa9a25f321Yeongdeok Suh   echo 'yes'" "yes\n" "" "$pass"
88268330739fd7ab6313b9d7096b9bc0aa9a25f321Yeongdeok Suhuserdel -r $user $arg
89268330739fd7ab6313b9d7096b9bc0aa9a25f321Yeongdeok Suh
90336c44adca1768ada1e1e2f4d7dbbc33e994e582Rob Landleytesting "-H" "useradd -H $user $arg ||
91268330739fd7ab6313b9d7096b9bc0aa9a25f321Yeongdeok Suh   grep '^$user:.*:.*:.*' /etc/passwd $arg && [ ! -e /home/$user ] &&
92268330739fd7ab6313b9d7096b9bc0aa9a25f321Yeongdeok Suh   echo 'yes'" "yes\n" "" "$pass"
93268330739fd7ab6313b9d7096b9bc0aa9a25f321Yeongdeok Suhuserdel -r $user $arg
94268330739fd7ab6313b9d7096b9bc0aa9a25f321Yeongdeok Suh
95336c44adca1768ada1e1e2f4d7dbbc33e994e582Rob Landleytesting "dir and -H" "useradd -H -h $PWD/dir $user $arg ||
96268330739fd7ab6313b9d7096b9bc0aa9a25f321Yeongdeok Suh   grep '^$user:.*dir' /etc/passwd $arg && [ ! -e $PWD/dir ] &&
97268330739fd7ab6313b9d7096b9bc0aa9a25f321Yeongdeok Suh   echo 'yes'" "yes\n" "" "$pass"
98268330739fd7ab6313b9d7096b9bc0aa9a25f321Yeongdeok Suhuserdel -r $user $arg
99268330739fd7ab6313b9d7096b9bc0aa9a25f321Yeongdeok Suh
100336c44adca1768ada1e1e2f4d7dbbc33e994e582Rob Landleytesting "-u" "useradd -u 49999 $user $arg ||
101268330739fd7ab6313b9d7096b9bc0aa9a25f321Yeongdeok Suh   grep '^$user:x:49999:.*' /etc/passwd $arg && [ -d /home/$user ] && 
102268330739fd7ab6313b9d7096b9bc0aa9a25f321Yeongdeok Suh   echo 'yes'" "yes\n" "" "$pass"
103268330739fd7ab6313b9d7096b9bc0aa9a25f321Yeongdeok Suhuserdel -r $user $arg
104ef0ed68d5ba5794c1352e64273d4c5039e62476bDivya Kothari
105