1# -*- tcl -*- 2# ldapx.test: tests for the ldapx module. 3# 4# Sourcing this file into Tcl runs the tests and generates output for errors. 5# No output means no errors were found. 6# 7# Copyright (c) 2006 by Pierre David <pdav@users.sourceforge.net> 8# All rights reserved. 9# 10# $Id: ldapx.test,v 1.6 2007/08/19 20:20:43 pdav Exp $ 11 12# ------------------------------------------------------------------------- 13 14 15source [file join \ 16 [file dirname [file dirname [file join [pwd] [info script]]]] \ 17 devtools testutilities.tcl] 18 19testsNeedTcl 8.4 20testsNeedTcltest 1.0 21 22testing { 23 useLocal ldapx.tcl ldapx 24} 25 26# ------------------------------------------------------------------------- 27 28set rdn1 "uid=test" 29set rdn2 "uid=test2" 30set sup1 "ou=mydept,o=myorg" 31set sup2 "ou=x,$sup1" 32 33set entry {a1 {v11 v12} a2 {v21} a3 {v31 v32 v33}} 34 35# ------------------------------------------------------------------------- 36 37test ldapx-1.0 {ldapx::entry - creation} { 38 ::ldapx::entry create t1 39} {::t1} 40 41test ldapx-1.1 {ldapx::entry - reset} { 42 t1 reset 43 t1 format 44} {uninitialized} 45 46test ldapx-1.2 {ldapx::entry - dn} { 47 t1 dn "$rdn1,$sup1" 48 t1 dn 49} "$rdn1,$sup1" 50 51test ldapx-1.3 {ldapx::entry - superior} { 52 t1 dn "$rdn1,$sup1" 53 t1 superior 54} $sup1 55 56test ldapx-1.4 {ldapx::entry - rdn} { 57 t1 rdn 58} $rdn1 59 60test ldapx-1.5 {ldapx::entry - print uninitialized} { 61 t1 print 62} "dn: $rdn1,$sup1" 63 64test ldapx-2.1 {ldapx::entry - standard} { 65 t1 reset 66 t1 dn "$rdn1,$sup1" 67 t1 setall $entry 68 lsort [t1 getall] 69} [lsort $entry] 70 71test ldapx-2.2 {ldapx::entry - isempty} { 72 t1 reset 73 t1 dn "$rdn1,$sup1" 74 t1 setall $entry 75 set e1 [t1 isempty] 76 ::ldapx::entry create t2 77 set e2 [t2 isempty] 78 t2 destroy 79 list $e1 $e2 80} {0 1} 81 82test ldapx-2.3 {ldapx::entry - set1/get1} { 83 t1 set1 A4 v41 84 t1 get1 A4 85} {v41} 86 87test ldapx-2.4 {ldapx::entry - add1} { 88 t1 add1 a4 {v 42} 89 t1 get A4 90} {v41 {v 42}} 91 92test ldapx-2.5 {ldapx::entry - set/add/get} { 93 t1 set a5 {v51} 94 t1 add a5 {{v 52} {v 53}} 95 t1 get a5 96} {v51 {v 52} {v 53}} 97 98test ldapx-2.6 {ldapx::entry - del1/del} { 99 t1 del1 A5 {v 52} 100 t1 del a5 {{v 53}} 101 t1 get a5 102} {v51} 103 104test ldapx-2.7 {ldapx::entry - del} { 105 t1 del A5 106 t1 get a5 107} {} 108 109test ldapx-2.8 {ldapx::entry - getattr} { 110 lsort [t1 getattr] 111} {a1 a2 a3 a4} 112 113 114test ldapx-3.1 {ldapx::entry - backup toanother} { 115 ::ldapx::entry create t2 116 ::ldapx::entry create t3 117 t1 reset 118 t1 dn "$rdn1,$sup1" 119 t1 setall $entry 120 t1 backup t2 121 t3 diff t1 t2 122 t3 change 123} {} 124 125test ldapx-3.2 {ldapx::entry - diff toanother modrdn uid deleteoldrdn} { 126 t1 reset 127 t1 dn "$rdn1,$sup1" 128 t1 setall $entry 129 t1 set1 "uid" "test" 130 t1 backup t2 131 t1 dn "$rdn2,$sup1" 132 t1 set1 "uid" "test2" 133 t3 diff t1 t2 134 t3 change 135} [list [list modrdn $rdn2 1]] 136 137test ldapx-3.3 {ldapx::entry - diff toanother modrdn uid keepoldrdn} { 138 t1 reset 139 t1 dn "$rdn1,$sup1" 140 t1 setall $entry 141 t1 set1 "uid" "test" 142 t1 backup t2 143 t1 dn "$rdn2,$sup1" 144 t1 add1 "uid" "test2" 145 t3 diff t1 t2 146 t3 change 147} [list [list modrdn $rdn2 0]] 148 149test ldapx-3.4 {ldapx::entry - diff toanother modrdn superior} { 150 t1 reset 151 t1 dn "$rdn1,$sup1" 152 t1 setall $entry 153 t1 backup t2 154 t1 dn "$rdn1,$sup2" 155 t3 diff t1 t2 156 t3 change 157} [list [list modrdn $rdn1 0 $sup2]] 158 159test ldapx-3.5 {ldapx::entry - diff toanother add attr} { 160 t1 reset 161 t1 setall $entry 162 t1 backup t2 163 t1 set anotherAttribute {v1 v2} 164 t3 diff t1 t2 165 t3 change 166} {{mod {{modadd anotherattribute {v1 v2}}}}} 167 168test ldapx-3.6 {ldapx::entry - diff toanother repl attr} { 169 t1 reset 170 t1 setall $entry 171 t1 backup t2 172 t1 del1 a3 v32 173 t3 diff t1 t2 174 t3 change 175} {{mod {{modrepl a3 {v31 v33}}}}} 176 177test ldapx-3.7 {ldapx::entry - diff toanother add value} { 178 t1 reset 179 t1 setall $entry 180 t1 backup t2 181 t1 add1 a3 v34 182 t3 diff t1 t2 183 t3 change 184} {{mod {{modrepl a3 {v31 v32 v33 v34}}}}} 185 186test ldapx-3.8 {ldapx::entry - diff toanother del attr} { 187 t1 reset 188 t1 setall $entry 189 t1 backup t2 190 t1 del A3 191 t3 diff t1 t2 192 t3 change 193} {{mod {{moddel a3}}}} 194 195test ldapx-3.9 {ldapx::entry - diff toanother del entry 1} { 196 t1 reset 197 t1 dn "$rdn1,$sup1" 198 t1 setall $entry 199 t1 backup t2 200 t1 setall {} 201 t3 diff t1 t2 202 list [t3 dn] [lindex [t3 change] 0 0] 203} [list "$rdn1,$sup1" del] 204 205test ldapx-3.10 {ldapx::entry - diff toanother del entry 2} { 206 t1 reset 207 t1 dn "$rdn1,$sup1" 208 t1 setall $entry 209 t1 backup t2 210 t1 dn "" 211 t1 setall {} 212 t3 diff t1 t2 213 list [t3 dn] [lindex [t3 change] 0 0] 214} [list "$rdn1,$sup1" del] 215 216test ldapx-3.11 {ldapx::entry - diff toanother add entry} { 217 t1 reset 218 t1 setall {} 219 t1 backup t2 220 t1 setall $entry 221 t3 diff t1 t2 222 lsort [list [lindex [t3 change] 0 0] \ 223 [lsort [lindex [t3 change] 0 1]]] 224} [lsort [list add [lsort [string tolower $entry]]]] 225 226test ldapx-3.12 {ldapx::entry - diff toanother add entry dn 1} { 227 t1 reset 228 t1 backup t2 229 t1 dn "$rdn1,$sup1" 230 t1 setall $entry 231 t3 diff t1 t2 232 list [t3 dn] [lindex [t3 change] 0 0] 233} [list "$rdn1,$sup1" add] 234 235test ldapx-3.13 {ldapx::entry - diff toanother add entry dn 2} { 236 t1 reset 237 t1 dn "$rdn1,$sup1" 238 t1 backup t2 239 t1 setall $entry 240 t3 diff t1 t2 241 list [t3 dn] [lindex [t3 change] 0 0] 242} [list "$rdn1,$sup1" add] 243 244 245test ldapx-3.14 {ldapx::entry - diff tothesame} { 246 t1 reset 247 t1 setall $entry 248 t1 backup 249 t1 set1 A3 v34 250 t3 diff t1 251 t3 change 252} {{mod {{modrepl a3 v34}}}} 253 254test ldapx-3.15 {ldapx::entry - restore toanother} { 255 t1 reset 256 t1 setall {a v} 257 t1 backup 258 t1 restore t2 259 t2 getall 260} {a v} 261 262test ldapx-3.16 {ldapx::entry - restore tothesame} { 263 t1 reset 264 t1 setall {a v} 265 t1 backup 266 t1 setall $entry 267 t1 restore 268 t1 getall 269} {a v} 270 271test ldapx-3.17 {ldapx::entry - swap} { 272 t1 reset 273 t1 setall {a v} 274 t1 dn d1 275 t1 backup 276 t1 setall {b w} 277 t1 dn d2 278 t1 swap 279 set l1 [list [t1 dn] [t1 getall]] 280 t1 swap 281 set l2 [list [t1 dn] [t1 getall]] 282 list $l1 $l2 283} {{d1 {a v}} {d2 {b w}}} 284 285test ldapx-3.18 {ldapx::entry - apply modrdn rdn} { 286 t1 reset 287 t1 dn "$rdn1,$sup1" 288 t2 reset 289 t2 dn "$rdn1,$sup1" 290 t2 change [list [list modrdn $rdn2 0]] 291 t1 apply t2 292 t1 dn 293} "$rdn2,$sup1" 294 295test ldapx-3.19 {ldapx::entry - apply modrdn superior} { 296 t1 reset 297 t1 dn "$rdn1,$sup1" 298 t2 reset 299 t2 dn "$rdn1,$sup1" 300 t2 change [list [list modrdn $rdn1 0 $sup2]] 301 t1 apply t2 302 t1 dn 303} "$rdn1,$sup2" 304 305test ldapx-3.20 {ldapx::entry - apply modrdn rdn+superior} { 306 t1 reset 307 t1 dn "$rdn1,$sup1" 308 t2 reset 309 t2 dn "$rdn1,$sup1" 310 t2 change [list [list modrdn $rdn2 0 $sup2]] 311 t1 apply t2 312 t1 dn 313} "$rdn2,$sup2" 314 315test ldapx-3.21 {ldapx::entry - apply add} { 316 t1 reset 317 t2 reset 318 t2 dn "$rdn1,$sup1" 319 t2 change [list [list add $entry]] 320 t1 apply t2 321 lsort [t1 getall] 322} [lsort $entry] 323 324test ldapx-3.22 {ldapx::entry - apply del} { 325 t1 reset 326 t1 dn "$rdn1,$sup1" 327 t1 setall $entry 328 t2 reset 329 t2 dn "$rdn1,$sup1" 330 t2 change {{del}} 331 t1 apply t2 332 lsort [t1 getall] 333} {} 334 335test ldapx-3.23 {ldapx::entry - apply mod add} { 336 t1 reset 337 t1 dn "$rdn1,$sup1" 338 t1 setall $entry 339 t2 reset 340 t2 dn "$rdn1,$sup1" 341 t2 change {{mod {{modadd A4 {v41 v42}}}}} 342 t1 apply t2 343 t1 get a4 344} {v41 v42} 345 346test ldapx-3.24 {ldapx::entry - apply mod del} { 347 t1 reset 348 t1 dn "$rdn1,$sup1" 349 t1 setall $entry 350 t2 reset 351 t2 dn "$rdn1,$sup1" 352 t2 change {{mod {{moddel A3}}}} 353 t1 apply t2 354 t1 get a3 355} {} 356 357test ldapx-3.25 {ldapx::entry - apply mod repl} { 358 t1 reset 359 t1 dn "$rdn1,$sup1" 360 t1 setall $entry 361 t2 reset 362 t2 dn "$rdn1,$sup1" 363 t2 change {{mod {{modrepl A3 {v34 v35}}}}} 364 t1 apply t2 365 t1 get a3 366} {v34 v35} 367 368test ldapx-4.1 {ldapx::entry - deletion} { 369 t1 destroy 370 t2 destroy 371 t3 destroy 372} {} 373 374 375testsuiteCleanup 376