1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244
|
# -*- tcl -*-
# pop3_udb.test: tests for the simple pop3 user database.
#
# This file contains a collection of tests for one or more of the Tcl
# built-in commands. Sourcing this file into Tcl runs the tests and
# generates output for errors. No output means no errors were found.
#
# Copyright (c) 2002 by Andreas Kupries <andreas_kupries@users.sourceforge.net>
# All rights reserved.
#
# RCS: @(#) $Id: pop3d_udb.test,v 1.7 2006/10/09 21:41:41 andreas_kupries Exp $
# -------------------------------------------------------------------------
source [file join \
[file dirname [file dirname [file join [pwd] [info script]]]] \
devtools testutilities.tcl]
testsNeedTcl 8.2
testsNeedTcltest 1.0
testing {
useLocal pop3d_udb.tcl pop3d::udb
}
# ----------------------------------------------------------------------
test pop3-udb-1.0 {anon create/destroy} {
set udb [::pop3d::udb::new]
$udb destroy
regsub {[0-9]+$} $udb {} udb
set udb
} p3udb
test pop3-udb-1.1 {named create/destroy} {
set udb [::pop3d::udb::new foo]
$udb destroy
set udb
} foo
test pop3-udb-1.2 {multiple create} {
::pop3d::udb::new foo
catch {::pop3d::udb::new foo} msg
foo destroy
set msg
} {command "foo" already exists, unable to create user database}
test pop3-udb-1.3 {correct creation, destruction} {
::pop3d::udb::new foo
set res [list [info exists ::pop3d::udb::udb::foo::lastfile]]
foo destroy
lappend res [info exists ::pop3d::udb::udb::foo::lastfile]
} {1 0}
test pop3-udb-1.4 {unknown method} {
set udb [::pop3d::udb::new]
catch {$udb foo} res
$udb destroy
set res
} {bad option "foo": must be add, destroy, exists, lookup, read, remove, rename, save, or who}
test pop3-udb-2.0 {adding entries, created empty} {
set udb [::pop3d::udb::new]
set res [$udb who]
$udb destroy
set res
} {}
test pop3-udb-2.1 {adding entries} {
set udb [::pop3d::udb::new]
$udb add bar blurb ****
set res [$udb who]
$udb destroy
set res
} {bar}
test pop3-udb-2.2 {adding entries, missing user} {
set udb [::pop3d::udb::new]
catch {$udb add {} blurb ****} res
$udb destroy
set res
} {user specification missing}
test pop3-udb-2.3 {adding entries, missing passwd} {
set udb [::pop3d::udb::new]
catch {$udb add bar {} ****} res
$udb destroy
set res
} {password not specified}
test pop3-udb-2.4 {adding entries, missing storage} {
set udb [::pop3d::udb::new]
catch {$udb add bar blurb {}} res
$udb destroy
set res
} {storage location not defined}
test pop3-udb-3.0 {removing entries} {
set udb [::pop3d::udb::new]
$udb add bar blurb ****
set res [list [$udb who]]
$udb remove bar
lappend res [$udb who]
$udb destroy
set res
} {bar {}}
test pop3-udb-3.1 {removing entries} {
set udb [::pop3d::udb::new]
catch {$udb remove bar} res
$udb destroy
set res
} {user "bar" not known}
test pop3-udb-3.2 {removing entries} {
set udb [::pop3d::udb::new]
catch {$udb remove {}} res
$udb destroy
set res
} {user specification missing}
test pop3-udb-4.0 {renaming entries} {
set udb [::pop3d::udb::new]
$udb add bar blurb ****
set res [list [$udb who]]
$udb rename bar booze
lappend res [$udb who]
$udb destroy
set res
} {bar booze}
test pop3-udb-4.1 {renaming entries} {
set udb [::pop3d::udb::new]
catch {$udb rename {} {}} res
$udb destroy
set res
} {user specification missing}
test pop3-udb-4.2 {renaming entries} {
set udb [::pop3d::udb::new]
catch {$udb rename bar {}} res
$udb destroy
set res
} {user specification missing}
test pop3-udb-4.3 {renaming entries} {
set udb [::pop3d::udb::new]
catch {$udb rename bar floss} res
$udb destroy
set res
} {user "bar" not known}
test pop3-udb-4.4 {renaming entries} {
set udb [::pop3d::udb::new]
$udb add bar blurb ****
$udb add booze blurb ****
catch {$udb rename bar booze} res
$udb destroy
set res
} {user "booze" is known}
test pop3-udb-5.0 {searching for entries} {
set udb [::pop3d::udb::new]
$udb add bar blurb ****
set res [$udb lookup bar]
$udb destroy
set res
} {blurb ****}
test pop3-udb-5.1 {searching for entries} {
set udb [::pop3d::udb::new]
catch {$udb lookup bar} res
$udb destroy
set res
} {user "bar" not known}
test pop3-udb-6.0 {existence of entries} {
set udb [::pop3d::udb::new]
$udb add bar blurb ****
set res [$udb exists bar]
$udb destroy
set res
} 1
test pop3-udb-6.1 {existence of entries} {
set udb [::pop3d::udb::new]
set res [$udb exists bar]
$udb destroy
set res
} 0
# = who = already tested as part of add/remove
test pop3-udb-7.0 {save database} {
makeFile {} __UDB__
makeFile {} __UDB__.old
set udb [::pop3d::udb::new]
$udb add bar blurb ****
$udb add booze Xblurb ***X
$udb save __UDB__
$udb destroy
set res [viewFile __UDB__]
removeFile __UDB__
removeFile __UDB__.old
set res
} {# -*- tcl -*-
# ----------- user authentication database -
add bar blurb ****
add booze Xblurb ***X
}
test pop3-udb-7.1 {read database} {
makeFile {} __UDB__
makeFile {} __UDB__.old
set udb [::pop3d::udb::new]
$udb add bar blurb ****
$udb add booze Xblurb ***X
$udb save __UDB__
$udb destroy
set udb [::pop3d::udb::new]
$udb read __UDB__
set res [list [lsort [$udb who]]]
foreach u [lsort [$udb who]] {
lappend res [$udb lookup $u]
}
$udb destroy
removeFile __UDB__
removeFile __UDB__.old
set res
} {{bar booze} {blurb ****} {Xblurb ***X}}
# ----------------------------------------------------------------------
testsuiteCleanup
|