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