chiark / gitweb /
fd3b73266f91f26f5a2894c69ad1cb3ca089aa77
[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 proc dospawn {} {
18      global pwd spawn_id
19
20      spawn -nottycopy \
21      w3m -config /dev/null -o cgi_bin=$pwd/tests file:///cgi-bin/wrap/Tsuffix
22 }
23
24 dospawn
25
26 proc timeout-abort {} {
27      send_log "\r\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"
28      error "aborting due to timeout"
29 }
30 set timeout 5
31
32 expect_after timeout timeout-abort
33
34 proc elog {args} {
35      set m "[list expect [lindex $args end]]"
36      puts stderr $m
37 #     send_log "\n$m\n"
38      eval expect $args
39 }
40
41 proc etxt {str} {
42      regsub -all { } $str {\W{0,3}\w?} str
43      elog -re $str
44 }
45
46 proc epage {str} {
47     etxt $str
48 }
49
50 epage {You need to log in}
51
52 proc fillformfield {value} {
53     send "\t\r$value\r"
54 }
55
56 proc submitform-expect {wanttxt} {
57     send "\r"
58     etxt "loading file"
59     epage $wanttxt
60 }
61
62 proc loginas {user {password sesame} {wanttxt ACCESSGRANTED}} {
63      fillformfield $user
64      fillformfield $password
65      send "\t"
66      submitform-expect $wanttxt
67 }
68
69 loginas alice bogus "wrong password"
70
71 loginas alice
72
73 etxt {path = '/Tsuffix'}
74
75 send "/Make worms\r"
76 submitform-expect "MAKING-worms"
77
78 send "/Logout\r"
79 submitform-expect "You have been logged out"
80
81 send "B\x10/Make sponges\r"
82 submitform-expect "You need to log in"
83
84 loginas bob
85
86 send "/Logout\r"
87 submitform-expect "You have been logged out"
88
89 send "/Log in again\r"
90 submitform-expect "need to log in"
91
92 loginas bob
93
94 send "BBB\x10/Make sponges\r"
95 submitform-expect "Login session interrupted"
96
97 puts ok