ruby-web 1.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/ChangeLog +474 -0
- data/INSTALL.txt +9 -0
- data/InstalledFiles +180 -0
- data/LICENSE.txt +74 -0
- data/Rakefile +529 -0
- data/TODO +65 -0
- data/doc/additional.xml +149 -0
- data/doc/core.xml +652 -0
- data/doc/credits/index.xml +52 -0
- data/doc/credits/php.contributors.xml +118 -0
- data/doc/credits/php.language-snippets.ent +622 -0
- data/doc/install/index.xml +136 -0
- data/doc/install/mac/index.xml +21 -0
- data/doc/install/ruby-web.install.rb.instructions.xml +7 -0
- data/doc/install/unix/index.xml +46 -0
- data/doc/install/win/apache1.xml +166 -0
- data/doc/install/win/apache2.xml +141 -0
- data/doc/install/win/iis.xml +162 -0
- data/doc/install/win/index.xml +24 -0
- data/doc/install/win/installer.xml +31 -0
- data/doc/install/win/manual.xml +43 -0
- data/doc/manual.xml +69 -0
- data/doc/old/apache_cgi.txt +23 -0
- data/doc/old/fastcgi.txt +23 -0
- data/doc/old/mod_ruby.txt +21 -0
- data/doc/old/snippets.rdoc +183 -0
- data/doc/old/webrick.txt +23 -0
- data/doc/old/windows_cgi.txt +9 -0
- data/doc/tutorial.xml +14 -0
- data/doc/xsl/manual-multi.xsl +10 -0
- data/doc/xsl/manual-pdf.xsl +6 -0
- data/doc/xsl/manual-single.xsl +6 -0
- data/doc/xsl/manual.css +22 -0
- data/install.rb +1022 -0
- data/lib/formatter.rb +314 -0
- data/lib/html-parser.rb +429 -0
- data/lib/htmlrepair.rb +113 -0
- data/lib/htmlsplit.rb +842 -0
- data/lib/sgml-parser.rb +332 -0
- data/lib/web.rb +68 -0
- data/lib/web/assertinclude.rb +129 -0
- data/lib/web/config.rb +50 -0
- data/lib/web/connection.rb +1070 -0
- data/lib/web/convenience.rb +154 -0
- data/lib/web/formreader.rb +318 -0
- data/lib/web/htmlparser/html-parser.rb +429 -0
- data/lib/web/htmlparser/sgml-parser.rb +332 -0
- data/lib/web/htmltools/element.rb +296 -0
- data/lib/web/htmltools/stparser.rb +276 -0
- data/lib/web/htmltools/tags.rb +286 -0
- data/lib/web/htmltools/tree.rb +139 -0
- data/lib/web/htmltools/xmltree.rb +160 -0
- data/lib/web/htmltools/xpath.rb +71 -0
- data/lib/web/info.rb +63 -0
- data/lib/web/load.rb +210 -0
- data/lib/web/mime.rb +87 -0
- data/lib/web/phprb.rb +340 -0
- data/lib/web/resources/test/cookie.rb +33 -0
- data/lib/web/resources/test/counter.rb +20 -0
- data/lib/web/resources/test/multipart.rb +14 -0
- data/lib/web/resources/test/redirect.rb +8 -0
- data/lib/web/resources/test/stock.rb +33 -0
- data/lib/web/sapi/apache.rb +129 -0
- data/lib/web/sapi/fastcgi.rb +22 -0
- data/lib/web/sapi/install/apache.rb +180 -0
- data/lib/web/sapi/install/iis.rb +93 -0
- data/lib/web/sapi/install/macosx.rb +90 -0
- data/lib/web/sapi/webrick.rb +86 -0
- data/lib/web/session.rb +83 -0
- data/lib/web/shim/cgi.rb +129 -0
- data/lib/web/shim/rails.rb +175 -0
- data/lib/web/stringio.rb +78 -0
- data/lib/web/strscanparser.rb +24 -0
- data/lib/web/tagparser.rb +96 -0
- data/lib/web/testing.rb +666 -0
- data/lib/web/traceoutput.rb +75 -0
- data/lib/web/unit.rb +56 -0
- data/lib/web/upload.rb +59 -0
- data/lib/web/validate.rb +52 -0
- data/lib/web/wiki.rb +557 -0
- data/lib/web/wiki/linker.rb +72 -0
- data/lib/web/wiki/page.rb +201 -0
- data/lib/webunit.rb +27 -0
- data/lib/webunit/assert.rb +152 -0
- data/lib/webunit/converter.rb +154 -0
- data/lib/webunit/cookie.rb +118 -0
- data/lib/webunit/domwalker.rb +185 -0
- data/lib/webunit/exception.rb +14 -0
- data/lib/webunit/form.rb +116 -0
- data/lib/webunit/frame.rb +37 -0
- data/lib/webunit/htmlelem.rb +122 -0
- data/lib/webunit/image.rb +26 -0
- data/lib/webunit/jscript.rb +31 -0
- data/lib/webunit/link.rb +33 -0
- data/lib/webunit/params.rb +321 -0
- data/lib/webunit/parser.rb +229 -0
- data/lib/webunit/response.rb +464 -0
- data/lib/webunit/runtest.rb +41 -0
- data/lib/webunit/table.rb +148 -0
- data/lib/webunit/testcase.rb +45 -0
- data/lib/webunit/ui/cui/testrunner.rb +50 -0
- data/lib/webunit/utils.rb +68 -0
- data/lib/webunit/webunit.rb +28 -0
- data/test/dev/action.rb +83 -0
- data/test/dev/forms.rb +104 -0
- data/test/dev/forms2.rb +104 -0
- data/test/dev/parser.rb +17 -0
- data/test/dev/scripts/dump.rb +24 -0
- data/test/dev/scripts/makedist.rb +62 -0
- data/test/dev/scripts/uri.rb +41 -0
- data/test/dev/scripts/uri/common.rb +432 -0
- data/test/dev/scripts/uri/ftp.rb +149 -0
- data/test/dev/scripts/uri/generic.rb +1106 -0
- data/test/dev/scripts/uri/http.rb +76 -0
- data/test/dev/scripts/uri/https.rb +26 -0
- data/test/dev/scripts/uri/ldap.rb +238 -0
- data/test/dev/scripts/uri/mailto.rb +260 -0
- data/test/dev/scripts/urireg.rb +174 -0
- data/test/dev/simpledispatcher.rb +156 -0
- data/test/dev/test.action.rb +146 -0
- data/test/dev/test.formreader.rb +463 -0
- data/test/dev/test.simpledispatcher.rb +186 -0
- data/test/dev/webunit/conv/digit-0.rb +21 -0
- data/test/dev/webunit/conv/digit-1.rb +17 -0
- data/test/dev/webunit/conv/digit.rb +23 -0
- data/test/dev/webunit/conv/test_digit-0.rb +16 -0
- data/test/dev/webunit/conv/test_digit-1.rb +19 -0
- data/test/dev/webunit/conv/test_digit.rb +26 -0
- data/test/dev/webunit/conv/test_digit_view-0.rb +76 -0
- data/test/dev/webunit/conv/test_digit_view-1.rb +102 -0
- data/test/dev/webunit/conv/test_digit_view.rb +134 -0
- data/test/installation/htdocs/cgi_test.rb +296 -0
- data/test/installation/htdocs/test_install.rb +4 -0
- data/test/installation/runwebtest.rb +5 -0
- data/test/installation/test_cookie.rb +128 -0
- data/test/installation/test_form.rb +47 -0
- data/test/installation/test_multipart.rb +51 -0
- data/test/installation/test_request.rb +24 -0
- data/test/installation/test_response.rb +35 -0
- data/test/unit/htdocs/cookie.rb +32 -0
- data/test/unit/htdocs/multipart.rb +28 -0
- data/test/unit/htdocs/redirect.rb +12 -0
- data/test/unit/htdocs/simple.rb +13 -0
- data/test/unit/htdocs/stock.rb +33 -0
- data/test/unit/test_assert.rb +162 -0
- data/test/unit/test_cookie.rb +114 -0
- data/test/unit/test_domwalker.rb +77 -0
- data/test/unit/test_form.rb +42 -0
- data/test/unit/test_frame.rb +40 -0
- data/test/unit/test_htmlelem.rb +74 -0
- data/test/unit/test_image.rb +45 -0
- data/test/unit/test_jscript.rb +57 -0
- data/test/unit/test_link.rb +85 -0
- data/test/unit/test_multipart.rb +51 -0
- data/test/unit/test_params.rb +210 -0
- data/test/unit/test_parser.rb +53 -0
- data/test/unit/test_response.rb +150 -0
- data/test/unit/test_table.rb +70 -0
- data/test/unit/test_utils.rb +106 -0
- data/test/unit/test_webunit.rb +28 -0
- data/test/web/mod_ruby_stub.rb +39 -0
- data/test/web/test.assertinclude.rb +109 -0
- data/test/web/test.buffer.rb +182 -0
- data/test/web/test.code.loader.rb +78 -0
- data/test/web/test.config.rb +31 -0
- data/test/web/test.error.handling.rb +91 -0
- data/test/web/test.formreader-2.0.rb +352 -0
- data/test/web/test.load.rb +125 -0
- data/test/web/test.mime-type.rb +23 -0
- data/test/web/test.narf.cgi.rb +106 -0
- data/test/web/test.phprb.rb +239 -0
- data/test/web/test.request.rb +368 -0
- data/test/web/test.response.rb +637 -0
- data/test/web/test.ruby-web.rb +10 -0
- data/test/web/test.session.rb +50 -0
- data/test/web/test.shim.cgi.rb +96 -0
- data/test/web/test.tagparser.rb +65 -0
- data/test/web/test.template2.rb +297 -0
- data/test/web/test.testing2.rb +318 -0
- data/test/web/test.upload.rb +45 -0
- data/test/web/test.validate.rb +46 -0
- data/test/web/test.web.test.rb +495 -0
- data/test/wiki/test.history.rb +297 -0
- data/test/wiki/test.illustration_page.rb +287 -0
- data/test/wiki/test.linker.rb +197 -0
- data/test/wiki/test.tarpit.rb +56 -0
- data/test/wiki/test.wiki.rb +300 -0
- data/test/wikitestroot/admin.rb +7 -0
- data/test/wikitestroot/wiki.rb +6 -0
- metadata +234 -0
|
@@ -0,0 +1,318 @@
|
|
|
1
|
+
class TestWebTesting2 < Test::Unit::TestCase
|
|
2
|
+
include Web::Testing
|
|
3
|
+
|
|
4
|
+
def setup
|
|
5
|
+
@pwd = Dir.pwd
|
|
6
|
+
if File.exists?( temp_dir + "/test_dir/" )
|
|
7
|
+
rm_rf(temp_dir + "/test_dir")
|
|
8
|
+
end
|
|
9
|
+
Dir.mkdir(temp_dir + "/test_dir/")
|
|
10
|
+
Dir.chdir(temp_dir + "/test_dir/")
|
|
11
|
+
#@docroot = Web.get_docroot
|
|
12
|
+
#Web.set_docroot( temp_dir + "/test_dir/")
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def teardown
|
|
16
|
+
Dir.chdir(@pwd)
|
|
17
|
+
rm_rf(temp_dir + "/test_dir")
|
|
18
|
+
#Web.set_docroot( @docroot )
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def write_file file
|
|
22
|
+
File.open( temp_dir + "/test_dir/app.rb" , "w" ) { |f| f.write(file) }
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def test_web_cgi_asserts
|
|
26
|
+
write_file <<-EOF
|
|
27
|
+
Web.print "hello tom"
|
|
28
|
+
Web.set_cookie( "username", "someonespecial" )
|
|
29
|
+
Web.add_header( "Special-Person", "Oh Yes" )
|
|
30
|
+
EOF
|
|
31
|
+
|
|
32
|
+
do_request "app.rb"
|
|
33
|
+
|
|
34
|
+
assert_content "hello tom"
|
|
35
|
+
assert_header "Special-Person", "Oh Yes"
|
|
36
|
+
assert_cookie "username", "someonespecial"
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def test_path_info
|
|
40
|
+
write_file <<-EOF
|
|
41
|
+
Web::write Web::path_info
|
|
42
|
+
EOF
|
|
43
|
+
do_request "app.rb/path_info/"
|
|
44
|
+
assert_content( "/path_info/" )
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def test_do_submit
|
|
48
|
+
form = "<html><body><form name='the_form'><input type='text' name='thing'></form></body></html>"
|
|
49
|
+
|
|
50
|
+
write_file <<-EOF
|
|
51
|
+
if Web["thing"] == "foo"
|
|
52
|
+
Web << "this is a foo page"
|
|
53
|
+
elsif Web["thing"] == "bar"
|
|
54
|
+
Web << "that is the bar page"
|
|
55
|
+
end
|
|
56
|
+
Web << "#{form}"
|
|
57
|
+
EOF
|
|
58
|
+
|
|
59
|
+
do_request "app.rb"
|
|
60
|
+
assert_content( form )
|
|
61
|
+
|
|
62
|
+
do_submit( "the_form", "thing" => "foo" )
|
|
63
|
+
|
|
64
|
+
assert_content( "this is a foo page" + form )
|
|
65
|
+
|
|
66
|
+
do_submit( "the_form", "thing" => "bar" )
|
|
67
|
+
|
|
68
|
+
assert_content( "that is the bar page" + form )
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
def test_do_submit_submits_hidden
|
|
72
|
+
form = "<html><body><form name='the_form'><input type='hidden' name='thing' value='val'></form></body></html>"
|
|
73
|
+
|
|
74
|
+
write_file <<-EOF
|
|
75
|
+
Web << "displayed '"
|
|
76
|
+
Web << Web['thing']
|
|
77
|
+
Web << "'#{form}"
|
|
78
|
+
EOF
|
|
79
|
+
|
|
80
|
+
do_request "app.rb"
|
|
81
|
+
assert_content( "displayed ''" + form)
|
|
82
|
+
|
|
83
|
+
do_submit( "the_form" )
|
|
84
|
+
|
|
85
|
+
assert_content( "displayed 'val'" + form)
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
def test_do_redirect
|
|
89
|
+
write_file <<-EOF
|
|
90
|
+
if Web["action"] == "finish"
|
|
91
|
+
Web.puts "We redirected!"
|
|
92
|
+
else
|
|
93
|
+
Web.set_redirect "app.rb?action=finish"
|
|
94
|
+
Web.puts "here"
|
|
95
|
+
end
|
|
96
|
+
EOF
|
|
97
|
+
|
|
98
|
+
do_request "app.rb"
|
|
99
|
+
|
|
100
|
+
assert_content( "We redirected!\n" )
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
def test_do_redirect_with_session
|
|
104
|
+
write_file <<-EOF
|
|
105
|
+
if Web["action"] == "finish"
|
|
106
|
+
Web.puts Web.session["name"]
|
|
107
|
+
else
|
|
108
|
+
Web.set_redirect "app.rb?action=finish"
|
|
109
|
+
Web.session["name"] = "Tom"
|
|
110
|
+
end
|
|
111
|
+
EOF
|
|
112
|
+
|
|
113
|
+
do_request( "app.rb" )
|
|
114
|
+
|
|
115
|
+
assert_content( "Tom\n" )
|
|
116
|
+
end
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
def test_do_multiple_redirect
|
|
120
|
+
write_file <<-EOF
|
|
121
|
+
if Web["action"] == "second"
|
|
122
|
+
Web.set_redirect "app.rb?action=third"
|
|
123
|
+
elsif Web["action"] == "third"
|
|
124
|
+
Web.puts "We redirected!"
|
|
125
|
+
else
|
|
126
|
+
Web.set_redirect "app.rb?action=second"
|
|
127
|
+
end
|
|
128
|
+
EOF
|
|
129
|
+
|
|
130
|
+
do_request "app.rb"
|
|
131
|
+
|
|
132
|
+
assert_content( "We redirected!\n" )
|
|
133
|
+
end
|
|
134
|
+
|
|
135
|
+
def test_do_redirect_on_submit
|
|
136
|
+
write_file <<-EOF
|
|
137
|
+
if Web["submitted"] == "true"
|
|
138
|
+
Web.set_redirect "app.rb?isredirect=true"
|
|
139
|
+
elsif Web["isredirect"] == "true"
|
|
140
|
+
Web.puts "We redirected!"
|
|
141
|
+
else
|
|
142
|
+
Web.puts "<html><body><form name='form' action='app.rb'>"
|
|
143
|
+
Web.puts "<input type='hidden' name='submitted' value='true'>"
|
|
144
|
+
Web.puts "</form></body></html>"
|
|
145
|
+
end
|
|
146
|
+
EOF
|
|
147
|
+
|
|
148
|
+
do_request "app.rb"
|
|
149
|
+
do_submit "form"
|
|
150
|
+
|
|
151
|
+
assert_content( "We redirected!\n" )
|
|
152
|
+
end
|
|
153
|
+
|
|
154
|
+
def test_form_exists
|
|
155
|
+
write_file <<-EOF
|
|
156
|
+
Web.puts "<html><body><form name='form' action='app.rb'>"
|
|
157
|
+
Web.puts "<input type='hidden' name='submitted' value='true'>"
|
|
158
|
+
Web.puts "</form></body></html>"
|
|
159
|
+
EOF
|
|
160
|
+
|
|
161
|
+
do_request "app.rb"
|
|
162
|
+
assert_raises( FormNotFoundException ) do
|
|
163
|
+
do_submit "not_this_form"
|
|
164
|
+
end
|
|
165
|
+
end
|
|
166
|
+
|
|
167
|
+
def test_all_fields_on_form
|
|
168
|
+
write_file <<-EOF
|
|
169
|
+
Web.puts "<html><body><form name='form' action='app.rb'>"
|
|
170
|
+
Web.puts "</form></body></html>"
|
|
171
|
+
EOF
|
|
172
|
+
|
|
173
|
+
do_request "app.rb"
|
|
174
|
+
assert_raises( FieldNotFoundException ) do
|
|
175
|
+
do_submit "form", "not_on_form" => "value"
|
|
176
|
+
end
|
|
177
|
+
end
|
|
178
|
+
|
|
179
|
+
# check that sessions & cookies are propagated
|
|
180
|
+
|
|
181
|
+
def test_two_hidden_forms_are_array
|
|
182
|
+
form = "<html><body><form name=\"the_form\">"+
|
|
183
|
+
"<input type=\"hidden\" name=\"thing[]\" value=\"val1\">"+
|
|
184
|
+
"<input type=\"hidden\" name=\"thing[]\" value=\"val2\">"+
|
|
185
|
+
"</form></body></html>"
|
|
186
|
+
|
|
187
|
+
write_file <<-EOF
|
|
188
|
+
Web << "submitted '"
|
|
189
|
+
Web << Web['thing[]'].sort.join(',')
|
|
190
|
+
Web << "'"
|
|
191
|
+
Web << '#{form}'
|
|
192
|
+
EOF
|
|
193
|
+
|
|
194
|
+
do_request "app.rb"
|
|
195
|
+
assert_content( "submitted ''" + form)
|
|
196
|
+
|
|
197
|
+
do_submit( "the_form" )
|
|
198
|
+
|
|
199
|
+
assert_content( "submitted 'val1,val2'" + form)
|
|
200
|
+
end
|
|
201
|
+
|
|
202
|
+
|
|
203
|
+
def test_cgi_optional
|
|
204
|
+
write_file <<-EOF
|
|
205
|
+
if Web["name"] == "patrick"
|
|
206
|
+
Web.write( "temp_patrick" )
|
|
207
|
+
elsif Web["name"] == "tom"
|
|
208
|
+
Web << "My name is "
|
|
209
|
+
Web << Web['name']
|
|
210
|
+
Web::puts " and also TOM"
|
|
211
|
+
end
|
|
212
|
+
EOF
|
|
213
|
+
|
|
214
|
+
do_request( "app.rb" , "name" => "patrick" )
|
|
215
|
+
assert_content "temp_patrick"
|
|
216
|
+
|
|
217
|
+
do_request( "app.rb", "name" => "tom" )
|
|
218
|
+
assert_content "My name is tom and also TOM\n"
|
|
219
|
+
end
|
|
220
|
+
|
|
221
|
+
def test_assert_form_includes_input_box
|
|
222
|
+
write_file <<-EOF
|
|
223
|
+
Web.puts "<html><body><form name='form'>"+
|
|
224
|
+
"<input type='text' name='test1' value='1'>"+
|
|
225
|
+
"<input type='text' name='test2' value='2'>"+
|
|
226
|
+
"</form></body></html>"
|
|
227
|
+
EOF
|
|
228
|
+
do_request "app.rb"
|
|
229
|
+
|
|
230
|
+
assert_form_includes("form" , { "test1" => "1", "test2" => "2" } )
|
|
231
|
+
assert_form_includes("form" , { "test1" => "1" } )
|
|
232
|
+
|
|
233
|
+
assert_raises( Test::Unit::AssertionFailedError ) {
|
|
234
|
+
assert_form_includes("form" , { "test1" => "1", "test2" => "2", "test3" => "3" } )
|
|
235
|
+
}
|
|
236
|
+
assert_raises( Test::Unit::AssertionFailedError ) {
|
|
237
|
+
assert_form_includes("form" , { "test1" => "1", "test2" => "1" } )
|
|
238
|
+
}
|
|
239
|
+
end
|
|
240
|
+
|
|
241
|
+
def test_assert_form_includes_checkbox
|
|
242
|
+
write_file <<-EOF
|
|
243
|
+
Web.puts "<html><body><form name='form'>
|
|
244
|
+
<input type='checkbox' name='test1' checked>
|
|
245
|
+
<input type='checkbox' name='test2'>
|
|
246
|
+
</form></body></html>"
|
|
247
|
+
EOF
|
|
248
|
+
|
|
249
|
+
do_request "app.rb"
|
|
250
|
+
|
|
251
|
+
assert_form_includes("form" , { "test1" => true, "test2" => false } )
|
|
252
|
+
end
|
|
253
|
+
|
|
254
|
+
def todo_test_assert_form_includes_checkbox_array
|
|
255
|
+
write_file <<-EOF
|
|
256
|
+
Web.puts "<html><body><form name='form'>"+
|
|
257
|
+
"<input type='checkbox' name='test22[]' value='2' checked>"+
|
|
258
|
+
"<input type='checkbox' name='test22[]' value='3' checked>"+
|
|
259
|
+
"</form></body></html>"
|
|
260
|
+
EOF
|
|
261
|
+
do_request "app.rb"
|
|
262
|
+
|
|
263
|
+
assert_form_includes("form" , { "test22[]" => ["2","3"] } )
|
|
264
|
+
end
|
|
265
|
+
|
|
266
|
+
def todo_test_submit_checkbox
|
|
267
|
+
write_file <<-EOF
|
|
268
|
+
Web.puts "<html><body><form name='form'>"+
|
|
269
|
+
"<input type='hidden' name='action' value='submit'>"+
|
|
270
|
+
"<input type='checkbox' name='test1' value='1'>"+
|
|
271
|
+
"<input type='checkbox' name='test2' value='2'>"+
|
|
272
|
+
"<input type='checkbox' name='test3' value='3' checked>"+
|
|
273
|
+
"<input type='checkbox' name='test4[]' value='4'>"+
|
|
274
|
+
"<input type='checkbox' name='test4[]' value='5'>"+
|
|
275
|
+
"<input type='checkbox' name='test4[]' value='6' checked>"+
|
|
276
|
+
"</form></body></html>"
|
|
277
|
+
EOF
|
|
278
|
+
|
|
279
|
+
do_request "app.rb"
|
|
280
|
+
|
|
281
|
+
actionPerformed = false
|
|
282
|
+
write_file <<-EOF
|
|
283
|
+
assert_equal "", Web["test1"]
|
|
284
|
+
assert_equal "2", Web["test2"]
|
|
285
|
+
assert_equal "3", Web["test3"]
|
|
286
|
+
assert_equal ["5","6"], Web["test4[]"].sort
|
|
287
|
+
actionPerformed=true
|
|
288
|
+
EOF
|
|
289
|
+
|
|
290
|
+
do_submit( "form", "test2" => "2", "test4[]" => "5" )
|
|
291
|
+
|
|
292
|
+
assert actionPerformed
|
|
293
|
+
end
|
|
294
|
+
|
|
295
|
+
def test_assert_form_includes_input_textarea1
|
|
296
|
+
write_file <<-EOF
|
|
297
|
+
Web.puts "<html><body><form name='form'>"+
|
|
298
|
+
"<textarea name='test1'>contents of text area</textarea>"+
|
|
299
|
+
"</form></body></html>"
|
|
300
|
+
EOF
|
|
301
|
+
|
|
302
|
+
do_request "app.rb"
|
|
303
|
+
|
|
304
|
+
assert_form_includes "form" , "test1" => "contents of text area"
|
|
305
|
+
end
|
|
306
|
+
|
|
307
|
+
def test_assert_form_includes_input_textarea2
|
|
308
|
+
write_file <<-EOF
|
|
309
|
+
Web::puts "<html><body><form name='form'>"+
|
|
310
|
+
"<textarea name='test1'>contents of text area</textarea>"+
|
|
311
|
+
"</form></body></html>"
|
|
312
|
+
EOF
|
|
313
|
+
|
|
314
|
+
do_request "app.rb"
|
|
315
|
+
|
|
316
|
+
assert_form_includes "form", "test1" => "contents of text area"
|
|
317
|
+
end
|
|
318
|
+
end
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
class TestUpload < Test::Unit::TestCase
|
|
2
|
+
attr_reader :original_filename, :content_type, :test_file, :move_to
|
|
3
|
+
def setup
|
|
4
|
+
@test_file = "test/web/testfiles/fallow_keep.png.450x450.2005-07-24.jpg"
|
|
5
|
+
@original_filename = "c:\\workspace\\fallow_keep.png.450x450.2005-07-24.jpg"
|
|
6
|
+
@content_type = "image/png"
|
|
7
|
+
@move_to = "test/web/testfiles/moved_fallow_keep.jpg"
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def test_initialize
|
|
11
|
+
File.open( test_file ) { |file|
|
|
12
|
+
upload = Web::Upload.new( file, content_type, original_filename )
|
|
13
|
+
|
|
14
|
+
assert_equal( content_type, upload.content_type )
|
|
15
|
+
assert_equal( original_filename, upload.original_filename )
|
|
16
|
+
}
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def test_initialize_with_filename
|
|
20
|
+
upload = Web::Upload.new( test_file, content_type, original_filename )
|
|
21
|
+
|
|
22
|
+
assert_equal( File.open( test_file, "r" ) { |f| f.read }, upload.read )
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def test_read_open_and_write_file
|
|
26
|
+
expected_contents = File.open( test_file, "r" ) { |f| f.read }
|
|
27
|
+
|
|
28
|
+
upload = Web::Upload.new( test_file, content_type, original_filename )
|
|
29
|
+
|
|
30
|
+
assert_equal( expected_contents, upload.read )
|
|
31
|
+
|
|
32
|
+
upload.open{ |io|
|
|
33
|
+
assert_equal( expected_contents, io.read )
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
begin
|
|
37
|
+
upload.save( move_to )
|
|
38
|
+
File.open( move_to, "r" ) { |io|
|
|
39
|
+
assert_equal( expected_contents, io.read )
|
|
40
|
+
}
|
|
41
|
+
ensure
|
|
42
|
+
File.delete( move_to )
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
end
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
require 'web/validate'
|
|
2
|
+
|
|
3
|
+
class TestValidation < Test::Unit::TestCase
|
|
4
|
+
def setup
|
|
5
|
+
Web::setup
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
def teardown
|
|
9
|
+
Web::teardown
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
# need to setup validation rules
|
|
13
|
+
def test_validate
|
|
14
|
+
Web::open(:out=>'') do
|
|
15
|
+
Web::rule( :message => 'Invalid Username',
|
|
16
|
+
:field => :username,
|
|
17
|
+
:regexp => /\w{1,8} / )
|
|
18
|
+
|
|
19
|
+
errors = Web::validate
|
|
20
|
+
assert_equal(1, errors.length )
|
|
21
|
+
assert( errors.first.kind_of?(Web::Rule) )
|
|
22
|
+
assert_equal( 'Invalid Username', errors.first.message )
|
|
23
|
+
assert_equal( 'username', errors.first.field )
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
def test_fatal
|
|
29
|
+
assert_raises( Web::FatalValidationError ) do
|
|
30
|
+
Web::open(:out=>'', :request => {:username => '123'} ) do
|
|
31
|
+
Web::rule( :message => 'Invalid Username',
|
|
32
|
+
:field => :username,
|
|
33
|
+
:regexp => /\w{1,8} /,
|
|
34
|
+
:malformed =>:fatal )
|
|
35
|
+
|
|
36
|
+
errors = Web::validate
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
def todo_test_javascript
|
|
42
|
+
#Web::get_javascript_validation
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
end
|
|
@@ -0,0 +1,495 @@
|
|
|
1
|
+
require 'web/testing'
|
|
2
|
+
|
|
3
|
+
class TestWebTest < Test::Unit::TestCase
|
|
4
|
+
include Web::Testing
|
|
5
|
+
|
|
6
|
+
def setup
|
|
7
|
+
if File.exists?( temp_dir + "/test_dir/" )
|
|
8
|
+
rm_rf(temp_dir + "/test_dir")
|
|
9
|
+
end
|
|
10
|
+
Dir.mkdir(temp_dir + "/test_dir/")
|
|
11
|
+
Dir.mkdir(temp_dir + "/test_dir/templates")
|
|
12
|
+
Web::docroot = temp_dir + "/test_dir/"
|
|
13
|
+
Web::setup
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def teardown
|
|
17
|
+
rm_rf(temp_dir + "/test_dir")
|
|
18
|
+
Web::teardown
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def write_file file
|
|
22
|
+
File.open( temp_dir + "/test_dir/app.rb" , "w" ) { |f| f.write(file) }
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def test_error_handling_while_testing
|
|
26
|
+
# make sure Web::Testing#do_request throws exceptions
|
|
27
|
+
write_file <<-EOF
|
|
28
|
+
raise TestWebTest::FlaggedException
|
|
29
|
+
EOF
|
|
30
|
+
|
|
31
|
+
assert_raises( FlaggedException ) do
|
|
32
|
+
do_request "app.rb"
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def test_path_info
|
|
37
|
+
write_file <<-EOF
|
|
38
|
+
Web::write Web::path_info
|
|
39
|
+
EOF
|
|
40
|
+
|
|
41
|
+
do_request "app.rb/test_path_info"
|
|
42
|
+
Web::assert_content("/test_path_info")
|
|
43
|
+
assert_equal( "/test_path_info", Web::env['PATH_INFO'] )
|
|
44
|
+
|
|
45
|
+
do_request "/app.rb/test_path_info"
|
|
46
|
+
Web::assert_content("/test_path_info")
|
|
47
|
+
assert_equal( "/test_path_info", Web::env['PATH_INFO'] )
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
# this is a tell tale exception
|
|
51
|
+
class FlaggedException < Exception
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
def test_passing_env
|
|
55
|
+
write_file <<-EOF
|
|
56
|
+
Web::write Web::env['test'].to_s
|
|
57
|
+
EOF
|
|
58
|
+
|
|
59
|
+
do_request "app.rb", :env => {"test" => "patrick"}
|
|
60
|
+
Web::assert_content( "patrick" )
|
|
61
|
+
|
|
62
|
+
ENV["test"] = "jenny"
|
|
63
|
+
do_request "app.rb", :env => { "ignore" => "this" }
|
|
64
|
+
Web::assert_content( "jenny" )
|
|
65
|
+
ENV.delete "test"
|
|
66
|
+
|
|
67
|
+
# test case sensitivity
|
|
68
|
+
write_file <<-EOF
|
|
69
|
+
Web::write Web::env['TeSt'].to_s
|
|
70
|
+
EOF
|
|
71
|
+
|
|
72
|
+
do_request "app.rb", :env => {"tEsT" => "patrick"}
|
|
73
|
+
Web::assert_content( "patrick" )
|
|
74
|
+
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
def test_must_have_docroot_for_absolute_paths
|
|
80
|
+
write_file <<-EOF
|
|
81
|
+
Web.puts "will never reach here"
|
|
82
|
+
EOF
|
|
83
|
+
Web::docroot = nil
|
|
84
|
+
assert_raises( Web::Testing::MustSetDocrootForAbsolutePathException ) do
|
|
85
|
+
do_request "/app.rb"
|
|
86
|
+
end
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
def test_web_cgi_asserts
|
|
90
|
+
write_file <<-EOF
|
|
91
|
+
Web.print "hello tom"
|
|
92
|
+
Web.set_cookie( "username", "someonespecial" )
|
|
93
|
+
Web.add_header( "Special-Person", "Oh Yes" )
|
|
94
|
+
EOF
|
|
95
|
+
|
|
96
|
+
do_request "/app.rb"
|
|
97
|
+
|
|
98
|
+
assert_content "hello tom"
|
|
99
|
+
assert_header "Special-Person", "Oh Yes"
|
|
100
|
+
assert_cookie "username", "someonespecial"
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
def test_do_submit
|
|
104
|
+
form = "<html><body><form name='the_form'><input type='text' name='thing'></form></body></html>"
|
|
105
|
+
|
|
106
|
+
write_file <<-EOF
|
|
107
|
+
if Web["thing"] == "foo"
|
|
108
|
+
Web << "this is a foo page"
|
|
109
|
+
elsif Web["thing"] == "bar"
|
|
110
|
+
Web << "that is the bar page"
|
|
111
|
+
end
|
|
112
|
+
Web << "#{form}"
|
|
113
|
+
EOF
|
|
114
|
+
|
|
115
|
+
do_request "/app.rb"
|
|
116
|
+
assert_content( form )
|
|
117
|
+
|
|
118
|
+
do_submit( "the_form", "thing" => "foo" )
|
|
119
|
+
|
|
120
|
+
assert_content( "this is a foo page" + form )
|
|
121
|
+
|
|
122
|
+
do_submit( "the_form", "thing" => "bar" )
|
|
123
|
+
|
|
124
|
+
assert_content( "that is the bar page" + form )
|
|
125
|
+
end
|
|
126
|
+
|
|
127
|
+
def test_do_submit_submits_hidden
|
|
128
|
+
form = "<html><body><form name='the_form'><input type='hidden' name='thing' value='val'></form></body></html>"
|
|
129
|
+
|
|
130
|
+
write_file <<-EOF
|
|
131
|
+
Web << "displayed '"
|
|
132
|
+
Web << Web['thing']
|
|
133
|
+
Web << "'#{form}"
|
|
134
|
+
EOF
|
|
135
|
+
|
|
136
|
+
do_request "/app.rb"
|
|
137
|
+
assert_content( "displayed ''" + form)
|
|
138
|
+
|
|
139
|
+
do_submit( "the_form" )
|
|
140
|
+
|
|
141
|
+
assert_content( "displayed 'val'" + form)
|
|
142
|
+
end
|
|
143
|
+
|
|
144
|
+
def test_do_redirect
|
|
145
|
+
write_file <<-EOF
|
|
146
|
+
if Web["action"] == "finish"
|
|
147
|
+
Web.puts "We redirected!"
|
|
148
|
+
else
|
|
149
|
+
Web.set_redirect "/app.rb?action=finish"
|
|
150
|
+
Web.puts "here"
|
|
151
|
+
end
|
|
152
|
+
EOF
|
|
153
|
+
|
|
154
|
+
do_request "/app.rb"
|
|
155
|
+
|
|
156
|
+
assert_content( "We redirected!\n" )
|
|
157
|
+
end
|
|
158
|
+
|
|
159
|
+
def test_do_redirect_with_session
|
|
160
|
+
write_file <<-EOF
|
|
161
|
+
if Web["action"] == "finish"
|
|
162
|
+
Web.puts Web.session["name"]
|
|
163
|
+
else
|
|
164
|
+
Web.set_redirect "/app.rb?action=finish"
|
|
165
|
+
Web.session["name"] = "Tom"
|
|
166
|
+
end
|
|
167
|
+
EOF
|
|
168
|
+
|
|
169
|
+
do_request( "/app.rb" )
|
|
170
|
+
|
|
171
|
+
assert_content( "Tom\n" )
|
|
172
|
+
end
|
|
173
|
+
|
|
174
|
+
|
|
175
|
+
def test_do_multiple_redirect
|
|
176
|
+
write_file <<-EOF
|
|
177
|
+
if Web["action"] == "second"
|
|
178
|
+
Web.set_redirect "/app.rb?action=third"
|
|
179
|
+
elsif Web["action"] == "third"
|
|
180
|
+
Web.puts "We redirected!"
|
|
181
|
+
else
|
|
182
|
+
Web.set_redirect "/app.rb?action=second"
|
|
183
|
+
end
|
|
184
|
+
EOF
|
|
185
|
+
|
|
186
|
+
do_request "/app.rb"
|
|
187
|
+
|
|
188
|
+
assert_content( "We redirected!\n" )
|
|
189
|
+
end
|
|
190
|
+
|
|
191
|
+
def test_do_redirect_on_submit
|
|
192
|
+
write_file <<-EOF
|
|
193
|
+
if Web["submitted"] == "true"
|
|
194
|
+
Web.set_redirect "/app.rb?isredirect=true"
|
|
195
|
+
elsif Web["isredirect"] == "true"
|
|
196
|
+
Web.puts "We redirected!"
|
|
197
|
+
else
|
|
198
|
+
Web.puts "<html><body><form name='form' action='/app.rb'>"
|
|
199
|
+
Web.puts "<input type='hidden' name='submitted' value='true'>"
|
|
200
|
+
Web.puts "</form></body></html>"
|
|
201
|
+
end
|
|
202
|
+
EOF
|
|
203
|
+
|
|
204
|
+
do_request "/app.rb"
|
|
205
|
+
do_submit "form"
|
|
206
|
+
|
|
207
|
+
assert_content( "We redirected!\n" )
|
|
208
|
+
end
|
|
209
|
+
|
|
210
|
+
def test_form_exists
|
|
211
|
+
write_file <<-EOF
|
|
212
|
+
Web.puts "<html><body><form name='form' action='/app.rb'>"
|
|
213
|
+
Web.puts "<input type='hidden' name='submitted' value='true'>"
|
|
214
|
+
Web.puts "</form></body></html>"
|
|
215
|
+
EOF
|
|
216
|
+
|
|
217
|
+
do_request "/app.rb"
|
|
218
|
+
assert_raises( Web::Testing::FormNotFoundException ) do
|
|
219
|
+
do_submit "not_this_form"
|
|
220
|
+
end
|
|
221
|
+
end
|
|
222
|
+
|
|
223
|
+
def test_all_fields_on_form
|
|
224
|
+
write_file <<-EOF
|
|
225
|
+
Web.puts "<html><body><form name='form' action='/app.rb'>"
|
|
226
|
+
Web.puts "</form></body></html>"
|
|
227
|
+
EOF
|
|
228
|
+
|
|
229
|
+
do_request "/app.rb"
|
|
230
|
+
assert_raises( Web::Testing::FieldNotFoundException ) do
|
|
231
|
+
do_submit( "form", "not_on_form" => "value" )
|
|
232
|
+
end
|
|
233
|
+
end
|
|
234
|
+
|
|
235
|
+
def test_select
|
|
236
|
+
write_file <<-EOF
|
|
237
|
+
Web.puts <<-FORM
|
|
238
|
+
<html>
|
|
239
|
+
<body>
|
|
240
|
+
<form name='form' action='/app.rb'>
|
|
241
|
+
<select name='aselect'>
|
|
242
|
+
<option selected>avalue</option>
|
|
243
|
+
<option value='another'>Another Value</option>
|
|
244
|
+
</select>
|
|
245
|
+
</form>
|
|
246
|
+
</body>
|
|
247
|
+
</html>
|
|
248
|
+
FORM
|
|
249
|
+
EOF
|
|
250
|
+
|
|
251
|
+
do_request "/app.rb"
|
|
252
|
+
|
|
253
|
+
assert_options( 'form', 'aselect' => ['another', 'avalue'] )
|
|
254
|
+
assert_form_includes( "form", 'aselect' => 'avalue' )
|
|
255
|
+
end
|
|
256
|
+
|
|
257
|
+
def test_radio
|
|
258
|
+
write_file <<-EOF
|
|
259
|
+
Web.puts <<-FORM
|
|
260
|
+
<html>
|
|
261
|
+
<body>
|
|
262
|
+
<form name='form' action='/app.rb'>
|
|
263
|
+
<input type="radio" name='aradio' value="avalue" checked>
|
|
264
|
+
<input type="radio" name='aradio' value="another">
|
|
265
|
+
</form>
|
|
266
|
+
</body>
|
|
267
|
+
</html>
|
|
268
|
+
FORM
|
|
269
|
+
EOF
|
|
270
|
+
|
|
271
|
+
do_request "/app.rb"
|
|
272
|
+
|
|
273
|
+
assert_options( 'form', 'aradio' => ['another', 'avalue'] )
|
|
274
|
+
assert_form_includes( 'form', 'aradio' => 'avalue' )
|
|
275
|
+
end
|
|
276
|
+
|
|
277
|
+
def test_multi_select
|
|
278
|
+
write_file <<-EOF
|
|
279
|
+
Web.puts <<-FORM
|
|
280
|
+
<html>
|
|
281
|
+
<body>
|
|
282
|
+
<form name='form' action='/app.rb'>
|
|
283
|
+
<select name='aselect[]' multiple>
|
|
284
|
+
<option>first</option>
|
|
285
|
+
<option selected>avalue</option>
|
|
286
|
+
<option value='another' selected>Another Value</option>
|
|
287
|
+
</select>
|
|
288
|
+
</form>
|
|
289
|
+
</body>
|
|
290
|
+
</html>
|
|
291
|
+
FORM
|
|
292
|
+
EOF
|
|
293
|
+
|
|
294
|
+
do_request "/app.rb"
|
|
295
|
+
|
|
296
|
+
assert_options( 'form', 'aselect[]' => ['first',
|
|
297
|
+
'avalue',
|
|
298
|
+
'another'] )
|
|
299
|
+
assert_form_includes( "form", 'aselect[]' => ['another','avalue'] )
|
|
300
|
+
end
|
|
301
|
+
|
|
302
|
+
def test_checkbox_group
|
|
303
|
+
write_file <<-EOF
|
|
304
|
+
Web.puts <<-FORM
|
|
305
|
+
<html>
|
|
306
|
+
<body>
|
|
307
|
+
<form name='form' action='/app.rb'>
|
|
308
|
+
<input type="checkbox" name='check[]' value="first">
|
|
309
|
+
<input type="checkbox" name='check[]' value="avalue" checked>
|
|
310
|
+
<input type="checkbox" name='check[]' value="another" checked>
|
|
311
|
+
</form>
|
|
312
|
+
</body>
|
|
313
|
+
</html>
|
|
314
|
+
FORM
|
|
315
|
+
EOF
|
|
316
|
+
|
|
317
|
+
do_request "/app.rb"
|
|
318
|
+
assert_options( 'form', 'check[]' => [ 'first', 'avalue', 'another' ] )
|
|
319
|
+
assert_form_includes( "form", 'check[]' => ['another', 'avalue'] )
|
|
320
|
+
end
|
|
321
|
+
|
|
322
|
+
# check that sessions & cookies are propagated
|
|
323
|
+
|
|
324
|
+
def test_two_hidden_forms_are_array
|
|
325
|
+
form = "<html><body><form name=\"the_form\">"+
|
|
326
|
+
"<input type=\"hidden\" name=\"thing[]\" value=\"val1\">"+
|
|
327
|
+
"<input type=\"hidden\" name=\"thing[]\" value=\"val2\">"+
|
|
328
|
+
"</form></body></html>"
|
|
329
|
+
|
|
330
|
+
write_file <<-EOF
|
|
331
|
+
Web << "submitted '"
|
|
332
|
+
Web << Web['thing[]'].sort.join(',')
|
|
333
|
+
Web << "'"
|
|
334
|
+
Web << '#{form}'
|
|
335
|
+
EOF
|
|
336
|
+
|
|
337
|
+
do_request "/app.rb"
|
|
338
|
+
assert_content( "submitted ''" + form)
|
|
339
|
+
|
|
340
|
+
do_submit( "the_form" )
|
|
341
|
+
|
|
342
|
+
assert_content( "submitted 'val1,val2'" + form)
|
|
343
|
+
end
|
|
344
|
+
|
|
345
|
+
|
|
346
|
+
def test_cgi_optional
|
|
347
|
+
write_file <<-EOF
|
|
348
|
+
if Web["name"] == "patrick"
|
|
349
|
+
Web.write( "temp_patrick" )
|
|
350
|
+
elsif Web["name"] == "tom"
|
|
351
|
+
Web << "My name is "
|
|
352
|
+
Web << Web['name']
|
|
353
|
+
Web::puts " and also TOM"
|
|
354
|
+
end
|
|
355
|
+
EOF
|
|
356
|
+
|
|
357
|
+
do_request( "/app.rb" , "name" => "patrick" )
|
|
358
|
+
|
|
359
|
+
assert_content "temp_patrick"
|
|
360
|
+
|
|
361
|
+
do_request( "/app.rb", "name" => "tom" )
|
|
362
|
+
assert_content "My name is tom and also TOM\n"
|
|
363
|
+
end
|
|
364
|
+
|
|
365
|
+
def test_assert_form_includes_input_box
|
|
366
|
+
write_file <<-EOF
|
|
367
|
+
Web.puts "<html><body><form name='form'>"+
|
|
368
|
+
"<input type='text' name='test1' value='1'>"+
|
|
369
|
+
"<input type='text' name='test2' value='2'>"+
|
|
370
|
+
"</form></body></html>"
|
|
371
|
+
EOF
|
|
372
|
+
do_request "/app.rb"
|
|
373
|
+
|
|
374
|
+
assert_form_includes("form" , { "test1" => "1", "test2" => "2" } )
|
|
375
|
+
assert_form_includes("form" , { "test1" => "1" } )
|
|
376
|
+
|
|
377
|
+
assert_raises( Test::Unit::AssertionFailedError ) {
|
|
378
|
+
assert_form_includes("form" , { "test1" => "1", "test2" => "2", "test3" => "3" } )
|
|
379
|
+
}
|
|
380
|
+
assert_raises( Test::Unit::AssertionFailedError ) {
|
|
381
|
+
assert_form_includes("form" , { "test1" => "1", "test2" => "1" } )
|
|
382
|
+
}
|
|
383
|
+
end
|
|
384
|
+
|
|
385
|
+
def test_assert_form_includes_checkbox
|
|
386
|
+
write_file <<-EOF
|
|
387
|
+
Web.puts "<html><body><form name='form'>"+
|
|
388
|
+
"<input type='checkbox' name='test1' checked>"+
|
|
389
|
+
"<input type='checkbox' name='test2'>"+
|
|
390
|
+
"</form></body></html>"
|
|
391
|
+
EOF
|
|
392
|
+
|
|
393
|
+
do_request "/app.rb"
|
|
394
|
+
|
|
395
|
+
assert_form_includes("form" , { "test1" => true, "test2" => false } )
|
|
396
|
+
end
|
|
397
|
+
|
|
398
|
+
# hahahhahaha tom. you crack me up. It always takes a while
|
|
399
|
+
# for me to catch up to you :-)
|
|
400
|
+
# I'm not sure how I would want to do this either. ~ patrick
|
|
401
|
+
#
|
|
402
|
+
# that's why I wrote formreader.rb. I'm merging it into the narf
|
|
403
|
+
# api now. all the select tests change, hopefully for the
|
|
404
|
+
# better. ~ patrick
|
|
405
|
+
def test_assert_form_includes_checkbox_array
|
|
406
|
+
write_file <<-EOF
|
|
407
|
+
Web.puts "<html><body><form name='form'>"+
|
|
408
|
+
"<input type='checkbox' name='test22[]' value='2' checked>"+
|
|
409
|
+
"<input type='checkbox' name='test22[]' value='3' checked>"+
|
|
410
|
+
"</form></body></html>"
|
|
411
|
+
EOF
|
|
412
|
+
do_request "/app.rb"
|
|
413
|
+
assert_options( 'form', 'test22[]' => ['2', '3' ] )
|
|
414
|
+
assert_form_includes("form" , "test22[]" => ["2", "3"] )
|
|
415
|
+
end
|
|
416
|
+
|
|
417
|
+
def test_submit_checkbox
|
|
418
|
+
write_file <<-EOF
|
|
419
|
+
Web.puts "<html><body><form name='form'>"+
|
|
420
|
+
"<input type='hidden' name='action' value='submit'>"+
|
|
421
|
+
"<input type='checkbox' name='test1' value='1'>"+
|
|
422
|
+
"<input type='checkbox' name='test2' value='2'>"+
|
|
423
|
+
"<input type='checkbox' name='test3' value='3' checked>"+
|
|
424
|
+
"<input type='checkbox' name='test4[]' value='4'>"+
|
|
425
|
+
"<input type='checkbox' name='test4[]' value='5'>"+
|
|
426
|
+
"<input type='checkbox' name='test4[]' value='6' checked>"+
|
|
427
|
+
"</form></body></html>"
|
|
428
|
+
EOF
|
|
429
|
+
|
|
430
|
+
do_request "/app.rb"
|
|
431
|
+
assert_options("form",
|
|
432
|
+
'test1' => ["1"],
|
|
433
|
+
'test2' => ["2"],
|
|
434
|
+
'test3' => ["3"],
|
|
435
|
+
'test4[]' => ['4','5','6'] )
|
|
436
|
+
|
|
437
|
+
|
|
438
|
+
assert_form_includes("form",
|
|
439
|
+
'test1' => false,
|
|
440
|
+
'test2' => false,
|
|
441
|
+
'test3' => "3",
|
|
442
|
+
'test4[]' => ['6'] )
|
|
443
|
+
|
|
444
|
+
actionPerformed = false
|
|
445
|
+
write_file <<-EOF
|
|
446
|
+
if ( ("" == Web["test1"]) &&
|
|
447
|
+
("2" == Web["test2"]) &&
|
|
448
|
+
("3" == Web["test3"]) &&
|
|
449
|
+
( ["5","6"] == Web["test4[]"].sort ) )
|
|
450
|
+
actionPerformed=true
|
|
451
|
+
else
|
|
452
|
+
raise Web["test2"]
|
|
453
|
+
end
|
|
454
|
+
EOF
|
|
455
|
+
|
|
456
|
+
# this is ugly. that is why patrick is working on it
|
|
457
|
+
#do_submit( "form", "test2" => true, "test4[].5" => true )
|
|
458
|
+
#do_submit( "form", "test2" => true, "test4[]" => "5" )
|
|
459
|
+
|
|
460
|
+
#assert actionPerformed
|
|
461
|
+
end
|
|
462
|
+
|
|
463
|
+
def test_assert_form_includes_input_textarea1
|
|
464
|
+
write_file <<-EOF
|
|
465
|
+
Web.puts "<html><body><form name='form'>"+
|
|
466
|
+
"<textarea name='test1'>contents of text area</textarea>"+
|
|
467
|
+
"</form></body></html>"
|
|
468
|
+
EOF
|
|
469
|
+
|
|
470
|
+
do_request "/app.rb"
|
|
471
|
+
|
|
472
|
+
assert_form_includes "form" , "test1" => "contents of text area"
|
|
473
|
+
end
|
|
474
|
+
|
|
475
|
+
def test_assert_form_includes_input_textarea2
|
|
476
|
+
write_file <<-EOF
|
|
477
|
+
Web.puts "<html><body><form name='form'>"+
|
|
478
|
+
"<textarea name='test1'>contents of text area</textarea>"+
|
|
479
|
+
"</form></body></html>"
|
|
480
|
+
EOF
|
|
481
|
+
|
|
482
|
+
do_request "/app.rb"
|
|
483
|
+
|
|
484
|
+
assert_form_includes "form", "test1" => "contents of text area"
|
|
485
|
+
end
|
|
486
|
+
|
|
487
|
+
def test_global_puts_takes_array
|
|
488
|
+
Web::open(:out=>'') do
|
|
489
|
+
Web::puts "Hello", "There"
|
|
490
|
+
end
|
|
491
|
+
|
|
492
|
+
assert_content( "Hello\nThere\n" )
|
|
493
|
+
end
|
|
494
|
+
|
|
495
|
+
end
|