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.
Files changed (190) hide show
  1. data/ChangeLog +474 -0
  2. data/INSTALL.txt +9 -0
  3. data/InstalledFiles +180 -0
  4. data/LICENSE.txt +74 -0
  5. data/Rakefile +529 -0
  6. data/TODO +65 -0
  7. data/doc/additional.xml +149 -0
  8. data/doc/core.xml +652 -0
  9. data/doc/credits/index.xml +52 -0
  10. data/doc/credits/php.contributors.xml +118 -0
  11. data/doc/credits/php.language-snippets.ent +622 -0
  12. data/doc/install/index.xml +136 -0
  13. data/doc/install/mac/index.xml +21 -0
  14. data/doc/install/ruby-web.install.rb.instructions.xml +7 -0
  15. data/doc/install/unix/index.xml +46 -0
  16. data/doc/install/win/apache1.xml +166 -0
  17. data/doc/install/win/apache2.xml +141 -0
  18. data/doc/install/win/iis.xml +162 -0
  19. data/doc/install/win/index.xml +24 -0
  20. data/doc/install/win/installer.xml +31 -0
  21. data/doc/install/win/manual.xml +43 -0
  22. data/doc/manual.xml +69 -0
  23. data/doc/old/apache_cgi.txt +23 -0
  24. data/doc/old/fastcgi.txt +23 -0
  25. data/doc/old/mod_ruby.txt +21 -0
  26. data/doc/old/snippets.rdoc +183 -0
  27. data/doc/old/webrick.txt +23 -0
  28. data/doc/old/windows_cgi.txt +9 -0
  29. data/doc/tutorial.xml +14 -0
  30. data/doc/xsl/manual-multi.xsl +10 -0
  31. data/doc/xsl/manual-pdf.xsl +6 -0
  32. data/doc/xsl/manual-single.xsl +6 -0
  33. data/doc/xsl/manual.css +22 -0
  34. data/install.rb +1022 -0
  35. data/lib/formatter.rb +314 -0
  36. data/lib/html-parser.rb +429 -0
  37. data/lib/htmlrepair.rb +113 -0
  38. data/lib/htmlsplit.rb +842 -0
  39. data/lib/sgml-parser.rb +332 -0
  40. data/lib/web.rb +68 -0
  41. data/lib/web/assertinclude.rb +129 -0
  42. data/lib/web/config.rb +50 -0
  43. data/lib/web/connection.rb +1070 -0
  44. data/lib/web/convenience.rb +154 -0
  45. data/lib/web/formreader.rb +318 -0
  46. data/lib/web/htmlparser/html-parser.rb +429 -0
  47. data/lib/web/htmlparser/sgml-parser.rb +332 -0
  48. data/lib/web/htmltools/element.rb +296 -0
  49. data/lib/web/htmltools/stparser.rb +276 -0
  50. data/lib/web/htmltools/tags.rb +286 -0
  51. data/lib/web/htmltools/tree.rb +139 -0
  52. data/lib/web/htmltools/xmltree.rb +160 -0
  53. data/lib/web/htmltools/xpath.rb +71 -0
  54. data/lib/web/info.rb +63 -0
  55. data/lib/web/load.rb +210 -0
  56. data/lib/web/mime.rb +87 -0
  57. data/lib/web/phprb.rb +340 -0
  58. data/lib/web/resources/test/cookie.rb +33 -0
  59. data/lib/web/resources/test/counter.rb +20 -0
  60. data/lib/web/resources/test/multipart.rb +14 -0
  61. data/lib/web/resources/test/redirect.rb +8 -0
  62. data/lib/web/resources/test/stock.rb +33 -0
  63. data/lib/web/sapi/apache.rb +129 -0
  64. data/lib/web/sapi/fastcgi.rb +22 -0
  65. data/lib/web/sapi/install/apache.rb +180 -0
  66. data/lib/web/sapi/install/iis.rb +93 -0
  67. data/lib/web/sapi/install/macosx.rb +90 -0
  68. data/lib/web/sapi/webrick.rb +86 -0
  69. data/lib/web/session.rb +83 -0
  70. data/lib/web/shim/cgi.rb +129 -0
  71. data/lib/web/shim/rails.rb +175 -0
  72. data/lib/web/stringio.rb +78 -0
  73. data/lib/web/strscanparser.rb +24 -0
  74. data/lib/web/tagparser.rb +96 -0
  75. data/lib/web/testing.rb +666 -0
  76. data/lib/web/traceoutput.rb +75 -0
  77. data/lib/web/unit.rb +56 -0
  78. data/lib/web/upload.rb +59 -0
  79. data/lib/web/validate.rb +52 -0
  80. data/lib/web/wiki.rb +557 -0
  81. data/lib/web/wiki/linker.rb +72 -0
  82. data/lib/web/wiki/page.rb +201 -0
  83. data/lib/webunit.rb +27 -0
  84. data/lib/webunit/assert.rb +152 -0
  85. data/lib/webunit/converter.rb +154 -0
  86. data/lib/webunit/cookie.rb +118 -0
  87. data/lib/webunit/domwalker.rb +185 -0
  88. data/lib/webunit/exception.rb +14 -0
  89. data/lib/webunit/form.rb +116 -0
  90. data/lib/webunit/frame.rb +37 -0
  91. data/lib/webunit/htmlelem.rb +122 -0
  92. data/lib/webunit/image.rb +26 -0
  93. data/lib/webunit/jscript.rb +31 -0
  94. data/lib/webunit/link.rb +33 -0
  95. data/lib/webunit/params.rb +321 -0
  96. data/lib/webunit/parser.rb +229 -0
  97. data/lib/webunit/response.rb +464 -0
  98. data/lib/webunit/runtest.rb +41 -0
  99. data/lib/webunit/table.rb +148 -0
  100. data/lib/webunit/testcase.rb +45 -0
  101. data/lib/webunit/ui/cui/testrunner.rb +50 -0
  102. data/lib/webunit/utils.rb +68 -0
  103. data/lib/webunit/webunit.rb +28 -0
  104. data/test/dev/action.rb +83 -0
  105. data/test/dev/forms.rb +104 -0
  106. data/test/dev/forms2.rb +104 -0
  107. data/test/dev/parser.rb +17 -0
  108. data/test/dev/scripts/dump.rb +24 -0
  109. data/test/dev/scripts/makedist.rb +62 -0
  110. data/test/dev/scripts/uri.rb +41 -0
  111. data/test/dev/scripts/uri/common.rb +432 -0
  112. data/test/dev/scripts/uri/ftp.rb +149 -0
  113. data/test/dev/scripts/uri/generic.rb +1106 -0
  114. data/test/dev/scripts/uri/http.rb +76 -0
  115. data/test/dev/scripts/uri/https.rb +26 -0
  116. data/test/dev/scripts/uri/ldap.rb +238 -0
  117. data/test/dev/scripts/uri/mailto.rb +260 -0
  118. data/test/dev/scripts/urireg.rb +174 -0
  119. data/test/dev/simpledispatcher.rb +156 -0
  120. data/test/dev/test.action.rb +146 -0
  121. data/test/dev/test.formreader.rb +463 -0
  122. data/test/dev/test.simpledispatcher.rb +186 -0
  123. data/test/dev/webunit/conv/digit-0.rb +21 -0
  124. data/test/dev/webunit/conv/digit-1.rb +17 -0
  125. data/test/dev/webunit/conv/digit.rb +23 -0
  126. data/test/dev/webunit/conv/test_digit-0.rb +16 -0
  127. data/test/dev/webunit/conv/test_digit-1.rb +19 -0
  128. data/test/dev/webunit/conv/test_digit.rb +26 -0
  129. data/test/dev/webunit/conv/test_digit_view-0.rb +76 -0
  130. data/test/dev/webunit/conv/test_digit_view-1.rb +102 -0
  131. data/test/dev/webunit/conv/test_digit_view.rb +134 -0
  132. data/test/installation/htdocs/cgi_test.rb +296 -0
  133. data/test/installation/htdocs/test_install.rb +4 -0
  134. data/test/installation/runwebtest.rb +5 -0
  135. data/test/installation/test_cookie.rb +128 -0
  136. data/test/installation/test_form.rb +47 -0
  137. data/test/installation/test_multipart.rb +51 -0
  138. data/test/installation/test_request.rb +24 -0
  139. data/test/installation/test_response.rb +35 -0
  140. data/test/unit/htdocs/cookie.rb +32 -0
  141. data/test/unit/htdocs/multipart.rb +28 -0
  142. data/test/unit/htdocs/redirect.rb +12 -0
  143. data/test/unit/htdocs/simple.rb +13 -0
  144. data/test/unit/htdocs/stock.rb +33 -0
  145. data/test/unit/test_assert.rb +162 -0
  146. data/test/unit/test_cookie.rb +114 -0
  147. data/test/unit/test_domwalker.rb +77 -0
  148. data/test/unit/test_form.rb +42 -0
  149. data/test/unit/test_frame.rb +40 -0
  150. data/test/unit/test_htmlelem.rb +74 -0
  151. data/test/unit/test_image.rb +45 -0
  152. data/test/unit/test_jscript.rb +57 -0
  153. data/test/unit/test_link.rb +85 -0
  154. data/test/unit/test_multipart.rb +51 -0
  155. data/test/unit/test_params.rb +210 -0
  156. data/test/unit/test_parser.rb +53 -0
  157. data/test/unit/test_response.rb +150 -0
  158. data/test/unit/test_table.rb +70 -0
  159. data/test/unit/test_utils.rb +106 -0
  160. data/test/unit/test_webunit.rb +28 -0
  161. data/test/web/mod_ruby_stub.rb +39 -0
  162. data/test/web/test.assertinclude.rb +109 -0
  163. data/test/web/test.buffer.rb +182 -0
  164. data/test/web/test.code.loader.rb +78 -0
  165. data/test/web/test.config.rb +31 -0
  166. data/test/web/test.error.handling.rb +91 -0
  167. data/test/web/test.formreader-2.0.rb +352 -0
  168. data/test/web/test.load.rb +125 -0
  169. data/test/web/test.mime-type.rb +23 -0
  170. data/test/web/test.narf.cgi.rb +106 -0
  171. data/test/web/test.phprb.rb +239 -0
  172. data/test/web/test.request.rb +368 -0
  173. data/test/web/test.response.rb +637 -0
  174. data/test/web/test.ruby-web.rb +10 -0
  175. data/test/web/test.session.rb +50 -0
  176. data/test/web/test.shim.cgi.rb +96 -0
  177. data/test/web/test.tagparser.rb +65 -0
  178. data/test/web/test.template2.rb +297 -0
  179. data/test/web/test.testing2.rb +318 -0
  180. data/test/web/test.upload.rb +45 -0
  181. data/test/web/test.validate.rb +46 -0
  182. data/test/web/test.web.test.rb +495 -0
  183. data/test/wiki/test.history.rb +297 -0
  184. data/test/wiki/test.illustration_page.rb +287 -0
  185. data/test/wiki/test.linker.rb +197 -0
  186. data/test/wiki/test.tarpit.rb +56 -0
  187. data/test/wiki/test.wiki.rb +300 -0
  188. data/test/wikitestroot/admin.rb +7 -0
  189. data/test/wikitestroot/wiki.rb +6 -0
  190. metadata +234 -0
@@ -0,0 +1,134 @@
1
+ =begin
2
+ = sample of WebUnit( test_digit_view.rb )
3
+ Copyright(C) 2001 yuichi TAKAHASHI
4
+ $Id: test_digit_view.rb,v 1.1.1.1 2003/01/21 11:50:40 yuichi Exp $
5
+ =end
6
+
7
+ require 'webunit/webunit'
8
+
9
+ class TestDigitView < WebUnit::TestCase
10
+
11
+ def setup
12
+ super
13
+ @url = "webunit/sample/conv/digit.cgi"
14
+ end
15
+
16
+ def test_initial
17
+
18
+ response = Response::get( @url )
19
+ assert_title( 'Digit - WebUnit Sample -', response )
20
+
21
+ assert_equals( 1, response.forms.size )
22
+ assert_equals( 1, response.tables.size )
23
+
24
+ form = response.form
25
+ assert_urls( @url, form.action )
26
+ assert_equals( 'post', form.method )
27
+
28
+ parameters = form.parameters #=> array
29
+ assert_equals( 6, parameters.size )
30
+ i = -1
31
+
32
+ assert_input( 'toct', 'text', '0', parameters[i+=1] )
33
+ assert_input( 'tdec', 'text', '0', parameters[i+=1] )
34
+ assert_input( 'thex', 'text', '0x0', parameters[i+=1] )
35
+ assert_input( 'boct', 'submit', '8=&gt;', parameters[i+=1] )
36
+ assert_input( 'bdec', 'submit', '10=&gt;', parameters[i+=1] )
37
+ assert_input( 'bhex', 'submit', '16=&gt;', parameters[i+=1] )
38
+
39
+ table = response.table
40
+ params = form.params #=> hash
41
+ c = 0
42
+
43
+ assert_include( params['toct'], table.at(1,c+=1) )
44
+ assert_include( params['boct'], table.at(2,c) )
45
+ assert_equals( 'center', table.at(2,c).attrs['align'] )
46
+
47
+ assert_include( params['tdec'], table.at(1,c+=1) )
48
+ assert_include( params['bdec'], table.at(2,c) )
49
+ assert_equals( 'center', table.at(2,c).attrs['align'] )
50
+
51
+ assert_include( params['thex'], table.at(1,c+=1) )
52
+ assert_include( params['bhex'], table.at(2,c) )
53
+ assert_equals( 'center', table.at(2,c).attrs['align'] )
54
+
55
+ end
56
+
57
+ def test_links
58
+
59
+ response = Response::get( @url )
60
+ assert_title( 'Digit - WebUnit Sample -', response )
61
+ assert_equals( 3, response.links.size )
62
+
63
+ links = response.links
64
+ i = -1
65
+
66
+ link_ruby = links[i+=1]
67
+ assert_equals( 'Ruby', link_ruby.data )
68
+ url = 'http://www.ruby-lang.org/ja/'
69
+ assert_urls( url, link_ruby.href )
70
+
71
+ link_rubyunit = links[i+=1]
72
+ assert_equals( 'RubyUnit', link_rubyunit.data )
73
+ url = 'http://homepage1.nifty.com/markey/ruby/rubyunit/index.html'
74
+ assert_urls( url, link_rubyunit.href )
75
+
76
+ link_webunit = links[i+=1]
77
+ assert_equals( 'WebUnit', link_webunit.data )
78
+ url = 'http://www.jbt.co.jp/user/yuichi/ruby/webunit/index-ja.html'
79
+ assert_urls( url, link_webunit.href )
80
+
81
+ end
82
+
83
+ def test_8_to
84
+
85
+ response = Response::get( @url )
86
+ assert_title( 'Digit - WebUnit Sample -', response )
87
+
88
+ form = response.form
89
+ params = form.params
90
+
91
+ params['toct'].value = '017'
92
+ response = form.submit( 'boct' )
93
+
94
+ params = response.form.params
95
+ assert_equals( '15', params['tdec'].value )
96
+ assert_equals( '0xF', params['thex'].value )
97
+
98
+ end
99
+
100
+ def test_10_to
101
+
102
+ response = Response::get( @url )
103
+ assert_title( 'Digit - WebUnit Sample -', response )
104
+
105
+ form = response.form
106
+ params = form.params
107
+
108
+ params['tdec'].value = '10'
109
+ response = form.submit( 'bdec' )
110
+
111
+ params = response.form.params
112
+ assert_equals( '012', params['toct'].value )
113
+ assert_equals( '0xA', params['thex'].value )
114
+
115
+ end
116
+
117
+ def test_16_to
118
+
119
+ response = Response::get( @url )
120
+ assert_title( 'Digit - WebUnit Sample -', response )
121
+
122
+ form = response.form
123
+ params = form.params
124
+
125
+ params['thex'].value = '0x1A'
126
+ response = form.submit( 'bhex' )
127
+
128
+ params = response.form.params
129
+ assert_equals( '032', params['toct'].value )
130
+ assert_equals( '26', params['tdec'].value )
131
+
132
+ end
133
+
134
+ end
@@ -0,0 +1,296 @@
1
+ module Web
2
+ @@message_template = nil
3
+
4
+ def Web::print_message( title, content )
5
+ @@message_template ||=
6
+ lib_file_contents('resources/message_template.html' )
7
+ puts( @@message_template.gsub( /\$title\$/,
8
+ title ).gsub( /\$content\$/,
9
+ content ) )
10
+ end
11
+
12
+ def Web::info_fileinfo( file)
13
+ lines = '<table>'
14
+ %w!original_filename read content_type!.each { |m|
15
+ lines << "<tr><td>#{m}</td><td>#{file.send(m)}</td></tr>"
16
+ }
17
+ lines << '</table>'
18
+ end
19
+
20
+
21
+
22
+ def Web::info
23
+ Web::clear()
24
+ case Web["test"]
25
+ when "multipart.html"
26
+ puts <<-EOF
27
+ <html>
28
+ <head>
29
+ <title>test for multipart/formdata</title>
30
+ </head>
31
+ <body>
32
+
33
+ <form method="post" enctype="multipart/form-data">
34
+ <!-- action="test_install.cgi"-->
35
+ <input type="hidden" name="test" value="multipart">
36
+
37
+ <ul>
38
+ <li>files
39
+ <ul>
40
+ <li><input type="file" name="file1"></li>
41
+ <li><input type="file" name="file2"></li>
42
+ </ul>
43
+ </li>
44
+
45
+ <li>textinput
46
+ <ul>
47
+ <li><input type="text" name="text1" value="Text 1"></li>
48
+ <li><input type="text" name="text2" value="Text 2"></li>
49
+ </ul>
50
+ </li>
51
+
52
+ <li>checkbox
53
+ <ul>
54
+ <li><input type="checkbox" name="checkbox1" value="Checkbox 1">1</li>
55
+ <li><input type="checkbox" name="checkbox1" value="Checkbox 2">2</li>
56
+ <li><input type="checkbox" name="checkbox1" value="Checkbox 3" checked>3</li>
57
+ </ul>
58
+ </li>
59
+
60
+ <li>radio button
61
+ <ul>
62
+ <li><input type="radio" name="radio1" value="Radio 1-1">1-1</li>
63
+ <li><input type="radio" name="radio1" value="Radio 1-2" checked>1-2</li>
64
+ <li><input type="radio" name="radio1" value="Radio 1-3">1-3</li>
65
+ <li><input type="radio" name="radio2" value="Radio 2-1">2-1</li>
66
+ <li><input type="radio" name="radio2" value="Radio 2-2">2-2</li>
67
+ <li><input type="radio" name="radio2" value="Radio 2-3" checked>2-3</li>
68
+ </ul>
69
+ </li>
70
+
71
+ <li>text area
72
+ <ul>
73
+ <li><textarea name="textarea1">Text Area 1</textarea></li>
74
+ <li><textarea name="textarea2">Text Area 2</textarea></li>
75
+ </ul>
76
+
77
+ <li>selections
78
+ <ul>
79
+ <li>
80
+ <select name="select1">
81
+ <option value="a">A</option>
82
+ <option>B</option>
83
+ </select>
84
+ </li>
85
+ <li>
86
+ <select name="select2">
87
+ <option value="aa">AA</option>
88
+ <option selected>BB</option>
89
+ </select>
90
+ </li>
91
+ </ul>
92
+ </li>
93
+
94
+ </ul>
95
+
96
+ <div>
97
+ <input type="submit" name="submit" value="submit">
98
+ </div>
99
+
100
+ </form>
101
+
102
+ </body>
103
+ </html>
104
+ EOF
105
+
106
+ when "multipart"
107
+ begin
108
+ print '<h1>result</h1>'
109
+ print Web::info_fileinfo( Web['file1']) + '<hr>'
110
+ print Web::info_fileinfo( Web['file2']) + '<hr>'
111
+ print '<table border>'
112
+ %w!text1 text2 checkbox1 radio1 radio2 textarea1 textarea2 select1 select2!.each { |k|
113
+ print "<tr><td>#{k}</td><td>#{Web[k]}</td></tr>"
114
+ }
115
+ print '</table>'
116
+ rescue Exception
117
+ print 'error:'
118
+ print $!.to_s
119
+ end
120
+
121
+ when "cookie"
122
+ if Web.key?( 'key' ) && Web['key'] != '' && Web.key?( 'value' )
123
+ Web.set_cookie( Web['key'], Web['value'] )
124
+ end
125
+
126
+ print '<html><head><title>WebUnit::Cookies</title></head>'
127
+ print '<body><h1>WebUnit::Cookies</h1><table border=1>'
128
+
129
+ print Web.cookie.keys.collect{|key|
130
+ if key == ''
131
+ nil
132
+ else
133
+ "<tr><td>#{key}</td><td>#{Web.cookie[key]}</td></tr>"
134
+ end
135
+ }.compact.to_s
136
+
137
+ print '</table><br>'
138
+
139
+ print 'Params<table border=1>'
140
+
141
+ print Web.keys.collect{|key|
142
+ "<tr><td>#{key}</td><td>#{Web[key]}</td></tr>"
143
+ }.to_s
144
+
145
+ print '</table>'
146
+
147
+ print "<form>"
148
+ print '<input type="hidden" name="test" value="cookie">'
149
+ print 'key = <input type="text" name="key" value="" size="20"><br>'
150
+ print 'value = <input type="text" name="value" value="" size="20"><br>'
151
+ print '<input type="submit">'
152
+
153
+ print '</body></html>'
154
+
155
+ when "response.html"
156
+ puts <<-EOF
157
+ <html>
158
+ <head>
159
+ <title>WebUnit::response</title>
160
+ </head>
161
+ <body>
162
+
163
+ <h1>WebUnit::response</h1>
164
+
165
+ <hr>
166
+
167
+ <form action='simple.cgi'>
168
+
169
+ <table border=1>
170
+ <tr><td>link</td>
171
+ <td><a href=index-en.html>test</a></td></tr>
172
+ <tr><td>hidden</td>
173
+ <td>HIDDEN<input type='hidden' name='nhidden' value='HIDDEN'></td></tr>
174
+ <tr><td>text</td>
175
+ <td><input type='text' name='ntext' value='TEXT'></td></tr>
176
+ <tr><td>password</td>
177
+ <td><input type='password' name='npassword' value='PASSWORD'></td></tr>
178
+ <tr><td>textarea</td>
179
+ <td><textarea name='ntextarea' rows=4 cols=40>TEXTAREA
180
+ TEXTAREA</textarea></td></tr>
181
+ <tr><td>checkbox</td>
182
+ <td><input type='checkbox' name='ncheckbox'>
183
+ <input type='checkbox' name='ncheckbox1' value=1 checked></td>
184
+ </tr>
185
+ <tr><td>radio</td>
186
+ <td>
187
+ <input type='radio' name='nradio' value='a'>a,
188
+ <input type='radio' name='nradio' value='b'>b,
189
+ <input type='radio' name='nradio' value='c'>c
190
+ </td>
191
+ </tr>
192
+ <tr><td>combo</td>
193
+ <td>
194
+ <select name=nselect>
195
+ <option value=aaa>a
196
+ <option>b
197
+ </select>
198
+ </td>
199
+ </tr>
200
+ <tr><td>list</td>
201
+ <td>
202
+ <select name=nselect1 size=5>
203
+ <option value=aaa>a
204
+ <option>b
205
+ <option>c
206
+ <option>d
207
+ </select>
208
+ </td>
209
+ </tr>
210
+ <tr>
211
+ <td></td>
212
+ <td>
213
+ <!--<input type='submit' value='SUBMIT'>-->
214
+ <input type='submit' value='SUBMIT'>
215
+ <input type='reset' value='RESET'>
216
+ </td>
217
+ </tr>
218
+ </table>
219
+
220
+ </form>
221
+
222
+ </body>
223
+ </html>
224
+ EOF
225
+ when "redirect"
226
+ if Web.key?( 'redirect' )
227
+ Web.set_redirect Web['redirect']
228
+ else
229
+ puts( "<html><body>",
230
+ "Use test=redirect&redirect=http://... <br>",
231
+ "<b>" + Web::html_encode( ENV['QUERY_STRING'] || '' ) + "</b>",
232
+ "</body></html>" )
233
+ end
234
+ when "stock"
235
+ stock = ''
236
+
237
+ tempfile = "/tmp/stock.cgi"
238
+
239
+ if Web.key?( 'clear' )
240
+ File::delete( tempfile ) if File::exist?( tempfile )
241
+ else
242
+ if Web.key?( 'name' ) && Web.key?( 'title' )
243
+ open( tempfile, "a" ){ |f|
244
+ f.puts "#{ Web.multiple_params['name'][0] },#{ Web.multiple_params['title'][0] }"
245
+ }
246
+ end
247
+ if File::exist?( tempfile )
248
+ open( tempfile ).each do |line|
249
+ line.chop!
250
+ stock << "<input type=\"text\" name=\"name\" value=\"#{ line.split( ',' )[0] }\">"
251
+ stock << "<input type=\"text\" name=\"title\" value=\"#{ line.split( ',' )[1] }\">"
252
+ stock << "<br>\n"
253
+ end
254
+ end
255
+ end
256
+
257
+ print "<html><head><title>stock.cgi</title></head><body>"
258
+ print "<form method='POST'>"
259
+ print "<input type=\"hidden\" name=\"test\" value=\"stock\">"
260
+ print "<input type=\"text\" name=\"name\">"
261
+ print "<input type=\"text\" name=\"title\">"
262
+ print "<input type=\"submit\" value=\"add\">"
263
+ print "<br>\n"
264
+ print stock
265
+ print "</form></body></html>"
266
+ else
267
+
268
+
269
+ msg = ""
270
+
271
+ [:request, :get, :post, :cookie, :env].each do |namespace|
272
+ variables = Web::send(namespace)
273
+ unless variables.empty?
274
+ msg += "<h2>Web::#{namespace}</h2>"
275
+ msg += "<table onMouseover=\"changeto(event, '#F8FF80')\" onMouseout=\"changeback(event, '#eeeeff')\">"
276
+ variables.keys.sort.each do |key|
277
+ msg += "<tr><td><b>#{key}</b></td><td>"
278
+ value = variables[key]
279
+ value = [value] unless value.kind_of? Array
280
+ msg += value.collect do |e|
281
+ Web::html_encode( if e.kind_of? String
282
+ e
283
+ else
284
+ e.inspect
285
+ end )
286
+ end.join("<br />")
287
+ end
288
+ msg += "</table>"
289
+ end
290
+ end
291
+
292
+ Web::print_message( "Web::info", msg )
293
+ end
294
+
295
+ end
296
+ end
@@ -0,0 +1,4 @@
1
+ #!/usr/bin/ruby-web
2
+
3
+ Web::info
4
+
@@ -0,0 +1,5 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'webunit/runtest'
4
+
5
+ WebUnit.runtest(ARGV)
@@ -0,0 +1,128 @@
1
+ =begin
2
+ = test for WebUnit::Cookies
3
+ Copyright(C) 2001 yuichi TAKAHASHI
4
+ $Id: test_cookie.rb,v 1.1.1.1 2003/01/21 11:50:40 yuichi Exp $
5
+ =end
6
+
7
+ require 'webunit/webunit'
8
+ require 'runit/cui/testrunner'
9
+
10
+ module WebUnit
11
+
12
+ class TestCookies < WebUnit::TestCase
13
+
14
+ def setup
15
+ super
16
+ Cookies::clear
17
+ end
18
+
19
+ def test_Cookies
20
+
21
+ url = @urlbase + "?test=cookie.rb"
22
+ response = Response::get( url )
23
+
24
+ assert_equals( [ ], Cookies::list )
25
+
26
+ form = response.form
27
+ form.params['key'].value = 'name1'
28
+ form.params['value'].value = 'value1'
29
+ response = form.submit
30
+ assert_title( 'WebUnit::Cookies', response )
31
+
32
+ assert_equals( %w( name1 ).sort, Cookies::list.sort )
33
+
34
+ response = form.submit
35
+ assert_title( 'WebUnit::Cookies', response )
36
+
37
+ table = response.table
38
+ assert_equals( "name1", table.at(1,1).data )
39
+ assert_equals( "value1", table.at(1,2).data )
40
+
41
+ Cookies::clear
42
+ Cookies::add( 'NAME', 'AAA' )
43
+
44
+ response = form.submit
45
+ assert_title( 'WebUnit::Cookies', response )
46
+
47
+ table = response.table
48
+ assert_equals( "NAME", table.at(1,1).data )
49
+ assert_equals( "AAA", table.at(1,2).data )
50
+
51
+ end
52
+
53
+ def test_s_clear # and instance method 'clear'
54
+
55
+ line = "name1=value1; path=/"
56
+ hash = Cookies::update( line )
57
+ assert_equals( %w( name1 ), Cookies::list )
58
+ Cookies::clear
59
+ assert_equals( [], Cookies::list )
60
+
61
+ end
62
+
63
+ def test_s_add # and instance method 'add'
64
+
65
+ line = "name1=value1; path=/"
66
+ Cookies::add( 'name1', 'value1' )
67
+ hash = Cookies::instance.cookies[%w( name1 / )]
68
+ assert_equals( 'name1', hash['name'] )
69
+ assert_equals( 'value1', hash['value'] )
70
+
71
+ end
72
+
73
+ def test_s_list # and instance method 'list'
74
+
75
+ line = "name1=value1; path=/"
76
+ hash = Cookies::update( line )
77
+ assert_equals( %w( name1 ), Cookies::list )
78
+
79
+ line = "name2=value2; path=/aaa"
80
+ hash = Cookies::update( line )
81
+ assert_equals( [], %w( name1 name2 ) - Cookies::list )
82
+
83
+ end
84
+
85
+ def test_s_has? # and instance method 'has?'
86
+
87
+ line = "name1=value1; path=/"
88
+ hash = Cookies::update( line )
89
+ assert_equals( true, Cookies::has?( 'name1' ) )
90
+ assert_equals( false, Cookies::has?( 'name2' ) )
91
+
92
+ end
93
+
94
+ def test_s_update # and instance method 'update'
95
+
96
+ line = "name1=value1; path=/"
97
+ Cookies::update( line )
98
+ hash = Cookies::instance.cookies[%w( name1 / )]
99
+ assert_equals( {'name'=>'name1','value'=>'value1', 'path'=>'/' }, hash )
100
+
101
+ end
102
+
103
+ def test_s_header # and instance method 'header'
104
+
105
+ line = "name1=value1; path=/aaa"
106
+ Cookies::update( line )
107
+
108
+ header = Cookies::header( '/aaa' )
109
+ assert_equals( {'Cookie'=>'name1=value1'}, header )
110
+
111
+ header = Cookies::header( '/' )
112
+ assert_equals( {}, header )
113
+
114
+ end
115
+
116
+ def test_accessor
117
+
118
+ assert_instance_of( Hash, Cookies::instance.cookies )
119
+ Cookies::instance.cookies = {}
120
+ assert_exception( ArgumentError ){
121
+ Cookies::instance.cookies = nil
122
+ }
123
+
124
+ end
125
+
126
+ end
127
+
128
+ end