3
# Test suite for the CDB handling in the krb5-strength-wordlist utility.
5
# Written by Russ Allbery <eagle@eyrie.org>
7
# The Board of Trustees of the Leland Stanford Junior University
9
# See LICENSE for licensing terms.
11
. "$SOURCE/tap/libtap.sh"
14
# We can't run this test without the cdb utility.
15
if ! command -v cdb >/dev/null 2>&1 ; then
16
skip_all 'cdb utility required for test'
19
# Output the test plan.
22
# Create a temporary directory and wordlist and ensure it's writable.
24
wordlist=`test_file_path data/wordlist`
25
if [ -z "$wordlist" ] ; then
26
bail 'cannot find data/wordlist in test suite'
28
cp "$wordlist" "$tmpdir/wordlist"
29
chmod 644 "$tmpdir/wordlist"
31
# Add a non-ASCII word to the wordlist.
32
echo 'عربى' >> "$tmpdir/wordlist"
34
# Test generation of the basic cdb file.
35
makelist="$SOURCE/../tools/krb5-strength-wordlist"
36
ok_program 'Database generation' 0 '' \
37
"$makelist" -c "$tmpdir/wordlist.cdb" "$tmpdir/wordlist"
40
ok_program 'Database contains password' 0 '1' \
41
cdb -q "$tmpdir/wordlist.cdb" password
42
ok_program 'Database contains one' 0 '1' \
43
cdb -q "$tmpdir/wordlist.cdb" one
44
ok_program 'Database does not contain three' 100 '' \
45
cdb -q "$tmpdir/wordlist.cdb" three
46
ok_program 'Database contains non-ASCII password' 0 '1' \
47
cdb -q "$tmpdir/wordlist.cdb" 'عربى'
49
# Regenerate the database, filtering out short passwords.
50
rm "$tmpdir/wordlist.cdb"
51
ok_program 'Database generation with no short passwords' 0 '' \
52
"$makelist" -c "$tmpdir/wordlist.cdb" -l 8 "$tmpdir/wordlist"
53
ok_program 'Database still contains password' 0 '1' \
54
cdb -q "$tmpdir/wordlist.cdb" password
55
ok_program 'Database does not contain one' 100 '' \
56
cdb -q "$tmpdir/wordlist.cdb" one
58
# Regenerate the database, filtering out non-ASCII words.
59
rm "$tmpdir/wordlist.cdb"
60
ok_program 'Database generation with no non-ASCII' 0 '' \
61
"$makelist" -c "$tmpdir/wordlist.cdb" -a "$tmpdir/wordlist"
62
ok_program 'Database still contains password' 0 '1' \
63
cdb -q "$tmpdir/wordlist.cdb" password
64
ok_program 'Database does not contain non-ASCII password' 100 '' \
65
cdb -q "$tmpdir/wordlist.cdb" 'عربى'
67
# Regenerate the database, filtering out long passwords.
68
rm "$tmpdir/wordlist.cdb"
69
ok_program 'Database generation with no long passwords' 0 '' \
70
"$makelist" -c "$tmpdir/wordlist.cdb" -L 10 "$tmpdir/wordlist"
71
ok_program 'Database still contains bitterbane' 0 '1' \
72
cdb -q "$tmpdir/wordlist.cdb" bitterbane
73
ok_program 'Database does not contain happenstance' 100 '' \
74
cdb -q "$tmpdir/wordlist.cdb" happenstance
76
# Regenerate the database, filtering out words starting with b or ending in d.
77
rm "$tmpdir/wordlist.cdb"
78
ok_program 'Database generation with no b passwords' 0 '' \
79
"$makelist" -c "$tmpdir/wordlist.cdb" -x '\Ab' -x '.*d' "$tmpdir/wordlist"
80
ok_program 'Database does not contain bitterbane' 100 '' \
81
cdb -q "$tmpdir/wordlist.cdb" bitterbane
82
ok_program 'Database still contains happenstance' 0 '1' \
83
cdb -q "$tmpdir/wordlist.cdb" happenstance
84
ok_program 'Database does not contain password' 100 '' \
85
cdb -q "$tmpdir/wordlist.cdb" password
88
rm -f "$tmpdir/wordlist.cdb"
89
rm -f "$tmpdir/wordlist"
90
rmdir "$tmpdir" 2>/dev/null