chiark / gitweb /
40d6a5728a1182b53469f07d7b8cb2c823130733
[cgi-auth-flexible.git] / tests / autotest
1 #!/usr/bin/expect -f
2
3 set tt tests/tmp
4
5 exec rm -rf $tt
6 exec mkdir $tt
7
8 set pwd [pwd]
9
10 set env(HOME) $tt
11 set env(CAFTEST_CAF) $pwd
12 set env(TERM) vt100
13
14 log_user 0
15 log_file -a $tt/expect.log
16
17 spawn -nottycopy \
18 w3m -config /dev/null -o cgi_bin=$pwd/tests file:///cgi-bin/wrap/Tsuffix
19
20 proc timeout-abort {} {
21      send_log "\r\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"
22      error "aborting due to timeout"
23 }
24 set timeout 5
25
26 expect_after timeout timeout-abort
27
28 proc elog {args} {
29      set m "[list expect [lindex $args end]]"
30      puts stderr $m
31 #     send_log "\n$m\n"
32      eval expect $args
33 }
34
35 proc etxt {str} {
36      regsub -all { } $str {\W{0,3}\w?} str
37      elog -re $str
38 }
39
40 proc epage {str} {
41     etxt $str
42 }
43
44 epage {You need to log in}
45
46 proc fillformfield {value} {
47     send "\t\r$value\r"
48 }
49
50 proc submitform-expect {wanttxt} {
51     send "\r"
52     etxt "loading file"
53     epage $wanttxt
54 }
55
56 proc loginas {user {password sesame} {wanttxt ACCESSGRANTED}} {
57      fillformfield $user
58      fillformfield $password
59      send "\t"
60      submitform-expect $wanttxt
61 }
62
63 loginas alice bogus "wrong password"
64
65 loginas alice
66
67 etxt {path = '/Tsuffix'}
68
69 send "/Make worms\r"
70 submitform-expect "MAKING-worms"
71
72 send "/Logout\r"
73 submitform-expect "You have been logged out"
74
75 send "B\x10/Make sponges\r"
76 submitform-expect "You need to log in"
77
78 loginas bob
79
80 send "/Logout\r"
81 submitform-expect "You have been logged out"
82
83 send "/Log in again\r"
84 submitform-expect "need to log in"
85
86 loginas bob
87
88 send "BBB\x10/Make sponges\r"
89 submitform-expect "Login session interrupted"
90
91 puts ok