Files
s390-tools/iucvterm/test/test_chiucvallow.sh
Michael Holzheu b627b8d8e1 Initial s390-tools-2.0.0 import
This commit is based on the s390-tools-1.39.0 version.

Changes on top of s390-tools-1.39.0:

 - Add MIT license to all source files
 - Add LICENSE file
 - Transform REAMDE to README.md (markdown)
 - Add AUTHORS.md file
 - Add CONTRIBUTING.md file
 - Move changelog from README to CHANGELOG.md file

Reviewed-by: Stefan Haberland <sth@linux.vnet.ibm.com>
Signed-off-by: Michael Holzheu <holzheu@linux.vnet.ibm.com>
2017-08-21 10:55:40 +02:00

136 lines
3.7 KiB
Bash
Executable File

#!/bin/sh
#
# Test program for chiucvallow
#
#
# Copyright IBM Corp. 2009, 2017
#
# s390-tools is free software; you can redistribute it and/or modify
# it under the terms of the MIT license. See LICENSE for details.
#
# set -x
# test data file
test_data=`mktemp /tmp/chiucvallow.testdata.XXXXXX`
LOG_FILE=/dev/null
TEST_PROG=${1:-../bin/chiucvallow.in}
# run test program (we can savely use the .in version here)
tprg() {
test -x $TEST_PROG || chmod +x $TEST_PROG
$TEST_PROG $@ >$LOG_FILE 2>&1
return $?
}
failed() {
echo $1
exit 3
}
# Init
test -r "$test_data" || failed "Failed to create temporary file"
trap "rm -f $test_data" EXIT TERM INT
# 1: Test special characters
cat > $test_data <<'EoData'
# user ID filter with some exotic user ID names
#
# z/VM user ID consists mainly of alphanumeric characters.
# Additional characters like @#_-$ are also allowed. However, @ and # are not
# recommended. Additional characters can be configured.
#
# To use a common set of all the values possible, the iucv terminal tools
# uses alphnumeric and underscore. The chiucvallow program also allows to use
# the dollar sign ($).
#
# All other characters must not be used.
#
#
NORMAL
# underscores are allowed
WITH_
# dollar sign is allowed for chiucvallow only
WITH$
$VAR
$ALLOC$
$$$$$$$$
12345678
EoData
tprg -V $test_data || failed "1: Failed: verify special z/VM user ID chars"
# 2: Test special characters
cat > $test_data <<'EoData'
# the following entry fails
-HYPHEN
EoData
tprg -V $test_data && failed "2: Failed: verify special z/VM user ID chars"
# 3: Test maximum number of filter entries
for i in `seq 1 500`; do printf "ID%05d\n" $i ; done > $test_data
tprg -V $test_data || failed "3: Failed: verify correct numbers of filter entries"
# 4: Test verification fails because of too many filter entries
for i in `seq 1 501`; do printf "ID%05d\n" $i ; done > $test_data
tprg -V $test_data && failed "4: Failed: verify correct numbers of filter entries"
# 5: Test verification fails because of too many filter entries
for i in `seq 1 510`; do printf "ID%05d\n" $i ; done > $test_data
tprg -V $test_data && failed "5: Failed: verify correct numbers of filter entries"
# 6: Test filter size (final size of filter entries, not file size)
cat > $test_data <<'EoData'
# z/VM user ID filter file for testing chiucvallow
#
# This file defines 500 user IDs with few comments to
# increase the file size.
#
# The comments must not be ignored for file size calculation, because
# comments are not part of the hvc_iucv_allow sysfs attribute.
#
# The size of the z/VM user ID filer that is reported by chiucvallow
# must be: 4000 bytes = 7 * 500 + 500
# (500 user IDs a 7 bytes (in length) + 500 carriage returns)
EoData
for i in `seq 1 500`; do printf "ID%05d\n" $i ; done >> $test_data
echo '# End of z/VM user ID filter file ' >> $test_data
test `stat -c%s $filename 2>/dev/null || echo 0` -ge 4095 \
&& failed "6: Failed to create test pre-req"
tprg -V $test_data || failed "6: Failed: verify filter with correct filter size"
# 7: Test filter size that exceed 4K (500 * 8 + 500 = 4500)
for i in `seq 1 500`; do printf "ID%06d\n" $i ; done > $test_data
tprg -V $test_data && failed "7: Failed: verify filter with incorred filter size"
# 8: Test valid wildcard filter entries
cat > $test_data <<'EoData'
# z/VM user ID filter for testing chiucvallow
#
# This file contains wildcard filter entries that must be considered as
# valid.
#
ID100*
A*
AB*
ABC*
ABCD*
ABCDE*
ABCDEF*
ABCDEFG*
12345678
EoData
tprg -V $test_data || failed "8: Failed: verify filter with valid wildcards"
# 9: Test wildcard filter entries that are not valid
for ent in "*" "*A" "ABC*A" "A2345678*"; do
echo "$ent" > $test_data
tprg -V $test_data && failed "9: Failed: verified invalid wildcard: '$ent'"
done
exit 0