# -*- shell-script -*-
+prep_tmp () {
+ tmp="${AUTOPKGTEST_ARTIFACTS}"
+ if [ "x$tmp" = x ]; then
+ rm -rf tmp
+ mkdir tmp
+ tmp=tmp
+ fi
+}
+
expect_output () {
local e_status=$1; shift
local e_stdout=$1; shift
test "$g_status" = "$e_status"
test "$g_stdout" = "$e_stdout"
}
+
+prep_cuser () {
+ cuser=${1-bin}
+
+ cuser_uid=$(id -u $cuser)
+ cuser_gid=$(id -g $cuser)
+}
+
+prep_config_t_env () {
+ local suser="$1"
+ local cfgdir="$2"
+ mkdir -p "$cfgdir"/services.d
+ cat >$cfgdir/services.d/userv-t-env <<END
+if ( glob calling-user $cuser
+ & glob service-user $suser
+ )
+ execute printenv
+fi
+END
+}
+
+check_expected_env () {
+ local got_env="$1"
+
+ for expect in \
+ "USERV_SERVICE=userv-t-env" \
+ "USERV_USER=$cuser" \
+ "USERV_GROUP=$cuser $cuser" \
+ "USERV_UID=$cuser_uid" \
+ "USERV_GID=$cuser_gid $cuser_gid" \
+ ; do
+ egrep "^$expect\$" $got_env
+ done
+}
. tests/lib
-(
- cat >/etc/userv/services.d/userv-t-env <<END
-if ( glob calling-user bin
- & glob service-user games
- )
- execute printenv
-fi
-END
-)
-
-tmp="${AUTOPKGTEST_ARTIFACTS}"
-if [ "x$tmp" = x ]; then
- rm -rf tmp
- mkdir tmp
- tmp=tmp
-fi
-
-bin_uid=$(id -u bin)
-bin_gid=$(id -g bin)
+prep_tmp
+prep_cuser
+prep_config_t_env games /etc/userv
: '---------- test service invocation ----------'
-really -u bin \
+really -u $cuser \
userv games userv-t-env >"$tmp"/env
-for expect in \
- 'USERV_SERVICE=userv-t-env' \
- 'USERV_USER=bin' \
- 'USERV_GROUP=bin bin' \
- "USERV_UID=$bin_uid" \
- "USERV_GID=$bin_gid $bin_gid" \
-; do
- egrep "^$expect\$" "$tmp"/env
-done
+check_expected_env "$tmp"/env
: '---------- test rejection (wrong calling user) ----------'