#!/bin/bash
# Copyright 2013 Divya Kothari <divya.s.kothari@gmail.com>
# Copyright 2013 Robin Mittal <robinmittal.it@gmail.com>

[ -f testing.sh ] && . testing.sh

# 70 characters long string; hereafter, we will use it as per our need.
_s70="abcdefghijklmnopqrstuvwxyz123456789abcdefghijklmnopqrstuvwxyz123456789"

echo "# usage: addgroup [-g GID] [USER] GROUP
# Add a group or add a user to a group."

# Redirecting all output to /dev/null for grep and delgroup
arg="&>/dev/null"

#testing "name" "command" "result" "infile" "stdin"

testing "groupadd group_name (text)" "groupadd toyTestGroup &&
   grep '^toyTestGroup:' /etc/group $arg && groupdel toyTestGroup $arg &&
   echo 'yes'" "yes\n" "" ""
testing "groupadd group_name (alphanumeric)" "groupadd toy1Test2Group3 &&
   grep '^toy1Test2Group3:' /etc/group $arg && groupdel toy1Test2Group3 $arg &&
   echo 'yes'" "yes\n" "" ""
testing "groupadd group_name (numeric)" "groupadd 987654321 &&
   grep '^987654321:' /etc/group $arg && groupdel 987654321 $arg &&
   echo 'yes'" "yes\n" "" ""
testing "groupadd group_name (with ./-)" "groupadd toy.1Test-2Group.3 &&
   grep '^toy.1Test-2Group.3:' /etc/group $arg &&
   groupdel toy.1Test-2Group.3 $arg && echo 'yes'" "yes\n" "" ""

_s210=`echo $_s70$_s70$_s70`
testing "groupadd group_name (long string)" "groupadd $_s210 &&
   grep '^$_s210:' /etc/group $arg && groupdel $_s210 $arg && echo 'yes'" \
  "yes\n" "" ""
testing "groupadd group_name with group_id" "groupadd -g 49999 toyTestGroup &&
   grep '^toyTestGroup:' /etc/group $arg && groupdel toyTestGroup $arg &&
   echo 'yes'" "yes\n" "" ""
testing "groupadd group_name with group_id (system_group)" \
  "groupadd -g 49999 -S toyTestGroup && grep '^toyTestGroup:' /etc/group $arg &&
   groupdel toyTestGroup $arg && echo 'yes'" "yes\n" "" ""
testing "groupadd group_name (system_group)" "groupadd -S toyTestGroup &&
   grep '^toyTestGroup:' /etc/group $arg && groupdel toyTestGroup $arg &&
   echo 'yes'" "yes\n" "" ""
testing "groupadd group_name (add/del user)" "groupadd toyTestGroup &&
   grep '^toyTestGroup:' /etc/group $arg && groupadd $USER toyTestGroup &&
   grep '^toyTestGroup:.*:.*:.*$USER.*' /etc/group $arg &&
   groupdel $USER toyTestGroup $arg || groupdel toyTestGroup &&
   grep '^toyTestGroup:' /etc/group $arg || echo 'yes'" "yes\n" "" ""

 echo "Testing to add single group multiple times after removing it..."
 for each in {01..20}
 do
   testing "groupadd group_name ($each)" "groupadd toyTestGroup &&
      grep '^toyTestGroup:' /etc/group $arg && groupdel toyTestGroup $arg &&
      echo 'yes'" "yes\n" "" ""
 done
