xref: /aosp_15_r20/external/toybox/tests/useradd.test (revision cf5a6c84e2b8763fc1a7db14496fd4742913b199)
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