chiark / gitweb /
525d1fdedc6de6feb2f1941fc4eb9d952b11bbb7
[cgi-auth-flexible.git] / tests / autotest
1 #!/usr/bin/expect -f
2
3 # This is part of CGI::Auth::Flexible, a perl CGI authentication module.
4 #
5 # Copyright 2012,2013,2015 Ian Jackson.
6 # Copyright 2012,2013,2015 Citrix.
7 #
8 # This program is free software: you can redistribute it and/or modify
9 # it under the terms of the GNU Affero General Public License as published by
10 # the Free Software Foundation, either version 3 of the License, or
11 # (at your option) any later version, with the "CAF Login Exception"
12 # as published by Ian Jackson (version 1, or at your option any 
13 # later version) as an Additional Permission.
14 #
15 # This program is distributed in the hope that it will be useful,
16 # but WITHOUT ANY WARRANTY; without even the implied warranty of
17 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18 # GNU Affero General Public License for more details.
19
20 set testfile [lindex $argv 0]
21
22 switch -glob -- $testfile {
23     tests/*.at {
24         regsub {^tests/} $testfile {} id
25         regsub {\.at$} $id {} id
26         set tt "tests/tmp/$id"
27     }
28     * {
29         set id "\[[info pid]\]"
30         set tt tests/tmp/[info pid]
31     }
32 }
33
34 exec rm -rf $tt
35 file mkdir tests/tmp $tt
36
37 set pwd [pwd]
38
39 set env(HOME) $tt
40 set env(CAFTEST_CAF) $pwd
41 set env(CAFTEST_TMP) $pwd/$tt
42 set env(TERM) vt100
43 set env(CAFTEST_NOSRCDUMP) 1
44 set env(LC_ALL) en_GB.utf-8
45
46 log_user 0
47 log_file -a $tt/expect.log
48
49 proc timeout-abort {} {
50     global id
51      send_log "\r\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"
52      error "$id: aborting due to timeout"
53 }
54 set timeout 10
55
56 proc elog {args} {
57     global id
58      set m "[list expect [lindex $args end]]"
59      puts stderr "$id: $m"
60 #     send_log "\n$m\n"
61      eval expect $args
62 }
63
64 proc etxt {str} {
65      regsub -all { } $str {\W{0,3}\w?} str
66      elog -re $str
67 }
68
69 proc epage {str} {
70     etxt $str
71 }
72
73 proc dospawn {} {
74      global pwd spawn_id
75
76      spawn -nottycopy \
77      w3m -config /dev/null -o cgi_bin=$pwd/tests file:///cgi-bin/wrap/Tsuffix
78
79      expect_after timeout timeout-abort
80
81      epage {You need to log in}
82 }
83
84 proc fillformfield {value} {
85     send "\t\r$value\r"
86 }
87
88 proc submitform-expect {wanttxt} {
89     send "\r"
90     etxt "loading file"
91     epage $wanttxt
92 }
93
94 proc loginas {user {password sesame} {wanttxt ACCESSGRANTED}} {
95      fillformfield $user
96      fillformfield $password
97      send "\t"
98      submitform-expect $wanttxt
99 }
100
101 source $testfile
102
103 puts "$id: ok"