xref: /aosp_15_r20/external/toybox/tests/groupadd.test (revision cf5a6c84e2b8763fc1a7db14496fd4742913b199)
1*cf5a6c84SAndroid Build Coastguard Worker#!/bin/bash
2*cf5a6c84SAndroid Build Coastguard Worker# Copyright 2013 Divya Kothari <[email protected]>
3*cf5a6c84SAndroid Build Coastguard Worker# Copyright 2013 Robin Mittal <[email protected]>
4*cf5a6c84SAndroid Build Coastguard Worker
5*cf5a6c84SAndroid Build Coastguard Worker[ -f testing.sh ] && . testing.sh
6*cf5a6c84SAndroid Build Coastguard Worker
7*cf5a6c84SAndroid Build Coastguard Workerif [ "$(id -u)" -ne 0 ]
8*cf5a6c84SAndroid Build Coastguard Workerthen
9*cf5a6c84SAndroid Build Coastguard Worker  echo "$SHOWSKIP: groupadd (not root)"
10*cf5a6c84SAndroid Build Coastguard Worker  return 2>/dev/null
11*cf5a6c84SAndroid Build Coastguard Worker  exit
12*cf5a6c84SAndroid Build Coastguard Workerfi
13*cf5a6c84SAndroid Build Coastguard Worker
14*cf5a6c84SAndroid Build Coastguard Worker# 70 characters long string; hereafter, we will use it as per our need.
15*cf5a6c84SAndroid Build Coastguard Worker_s70="abcdefghijklmnopqrstuvwxyz123456789abcdefghijklmnopqrstuvwxyz123456789"
16*cf5a6c84SAndroid Build Coastguard Worker
17*cf5a6c84SAndroid Build Coastguard Workerecho "# usage: addgroup [-g GID] [USER] GROUP
18*cf5a6c84SAndroid Build Coastguard Worker# Add a group or add a user to a group."
19*cf5a6c84SAndroid Build Coastguard Worker
20*cf5a6c84SAndroid Build Coastguard Worker# Redirecting all output to /dev/null for grep and delgroup
21*cf5a6c84SAndroid Build Coastguard Workerarg="&>/dev/null"
22*cf5a6c84SAndroid Build Coastguard Worker
23*cf5a6c84SAndroid Build Coastguard Worker#testing "name" "command" "result" "infile" "stdin"
24*cf5a6c84SAndroid Build Coastguard Worker
25*cf5a6c84SAndroid Build Coastguard Workertesting "group_name (text)" "groupadd toyTestGroup &&
26*cf5a6c84SAndroid Build Coastguard Worker   grep '^toyTestGroup:' /etc/group $arg && groupdel toyTestGroup $arg &&
27*cf5a6c84SAndroid Build Coastguard Worker   echo 'yes'" "yes\n" "" ""
28*cf5a6c84SAndroid Build Coastguard Workertesting "group_name (alphanumeric)" "groupadd toy1Test2Group3 &&
29*cf5a6c84SAndroid Build Coastguard Worker   grep '^toy1Test2Group3:' /etc/group $arg && groupdel toy1Test2Group3 $arg &&
30*cf5a6c84SAndroid Build Coastguard Worker   echo 'yes'" "yes\n" "" ""
31*cf5a6c84SAndroid Build Coastguard Workertesting "group_name (numeric)" "groupadd 987654321 &&
32*cf5a6c84SAndroid Build Coastguard Worker   grep '^987654321:' /etc/group $arg && groupdel 987654321 $arg &&
33*cf5a6c84SAndroid Build Coastguard Worker   echo 'yes'" "yes\n" "" ""
34*cf5a6c84SAndroid Build Coastguard Workertesting "group_name (with ./-)" "groupadd toy.1Test-2Group.3 &&
35*cf5a6c84SAndroid Build Coastguard Worker   grep '^toy.1Test-2Group.3:' /etc/group $arg &&
36*cf5a6c84SAndroid Build Coastguard Worker   groupdel toy.1Test-2Group.3 $arg && echo 'yes'" "yes\n" "" ""
37*cf5a6c84SAndroid Build Coastguard Worker
38*cf5a6c84SAndroid Build Coastguard Worker_s210=`echo $_s70$_s70$_s70`
39*cf5a6c84SAndroid Build Coastguard Workertesting "group_name (long string)" "groupadd $_s210 &&
40*cf5a6c84SAndroid Build Coastguard Worker   grep '^$_s210:' /etc/group $arg && groupdel $_s210 $arg && echo 'yes'" \
41*cf5a6c84SAndroid Build Coastguard Worker  "yes\n" "" ""
42*cf5a6c84SAndroid Build Coastguard Workertesting "group_name with group_id" "groupadd -g 49999 toyTestGroup &&
43*cf5a6c84SAndroid Build Coastguard Worker   grep '^toyTestGroup:' /etc/group $arg && groupdel toyTestGroup $arg &&
44*cf5a6c84SAndroid Build Coastguard Worker   echo 'yes'" "yes\n" "" ""
45*cf5a6c84SAndroid Build Coastguard Workertesting "group_name with group_id (system_group)" \
46*cf5a6c84SAndroid Build Coastguard Worker  "groupadd -g 49999 -S toyTestGroup && grep '^toyTestGroup:' /etc/group $arg &&
47*cf5a6c84SAndroid Build Coastguard Worker   groupdel toyTestGroup $arg && echo 'yes'" "yes\n" "" ""
48*cf5a6c84SAndroid Build Coastguard Workertesting "group_name (system_group)" "groupadd -S toyTestGroup &&
49*cf5a6c84SAndroid Build Coastguard Worker   grep '^toyTestGroup:' /etc/group $arg && groupdel toyTestGroup $arg &&
50*cf5a6c84SAndroid Build Coastguard Worker   echo 'yes'" "yes\n" "" ""
51*cf5a6c84SAndroid Build Coastguard Workertesting "group_name (add/del user)" "groupadd toyTestGroup &&
52*cf5a6c84SAndroid Build Coastguard Worker   grep '^toyTestGroup:' /etc/group $arg && groupadd $USER toyTestGroup &&
53*cf5a6c84SAndroid Build Coastguard Worker   grep '^toyTestGroup:.*:.*:.*$USER.*' /etc/group $arg &&
54*cf5a6c84SAndroid Build Coastguard Worker   groupdel $USER toyTestGroup $arg || groupdel toyTestGroup &&
55*cf5a6c84SAndroid Build Coastguard Worker   grep '^toyTestGroup:' /etc/group $arg || echo 'yes'" "yes\n" "" ""
56*cf5a6c84SAndroid Build Coastguard Worker
57*cf5a6c84SAndroid Build Coastguard Worker echo "Testing to add single group multiple times after removing it..."
58*cf5a6c84SAndroid Build Coastguard Worker for each in {01..20}
59*cf5a6c84SAndroid Build Coastguard Worker do
60*cf5a6c84SAndroid Build Coastguard Worker   testing "group_name ($each)" "groupadd toyTestGroup &&
61*cf5a6c84SAndroid Build Coastguard Worker      grep '^toyTestGroup:' /etc/group $arg && groupdel toyTestGroup $arg &&
62*cf5a6c84SAndroid Build Coastguard Worker      echo 'yes'" "yes\n" "" ""
63*cf5a6c84SAndroid Build Coastguard Worker done
64