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,197 @@
1
+ require 'web/wiki'
2
+
3
+ class TestLinker< Test::Unit::TestCase
4
+ include Web::Testing
5
+
6
+ def set_content( page, content )
7
+ do_request "wiki.rb", "action" => "edit", "page.name" => page
8
+ do_submit "edit_page", "page.content" => content, "action" => "Save"
9
+ do_request "wiki.rb", "page.name" => page
10
+ end
11
+
12
+ def setup
13
+ setup_wiki
14
+ end
15
+
16
+ def teardown
17
+ teardown_wiki
18
+ end
19
+
20
+ def test_make_edit_link
21
+ do_request "wiki.rb", "action" => "edit", "page.name" => "HomePage"
22
+ do_submit "edit_page", "page.content" => "HelloPatrick", "action" => "Save"
23
+ do_request "wiki.rb", "page.name" => "HomePage"
24
+
25
+ Web::local.assert_includes "page" => {
26
+ "name" => "HomePage",
27
+ "html" => "HelloPatrick<a href=\"?page.name=HelloPatrick&action=edit\">?</a>"
28
+ }
29
+ end
30
+
31
+ def test_make_edit_link_with_spaces
32
+ do_request "wiki.rb", "action" => "edit", "page.name" => "HomePage"
33
+ do_submit "edit_page", "page.content" => "[[Hello Patrick]]", "action" => "Save"
34
+ do_request "wiki.rb", "page.name" => "HomePage"
35
+
36
+ Web::local.assert_includes "page" => {
37
+ "name" => "HomePage",
38
+ "html" => "Hello Patrick<a href=\"?page.name=Hello+Patrick&action=edit\">?</a>"
39
+ }
40
+ end
41
+
42
+ #def test_link_substrings_and_longer_links
43
+ # set_content( "HomePage",
44
+ # "This is a test of linking SubString and SubStringPage correctly" )
45
+
46
+ # Web::local.assert_includes "page" => {
47
+ # "name" => "HomePage",
48
+ # "html" => "This is a test of linking SubString<a href=\"?page.name=SubString&action=edit\">?</a> and SubStringPage<a href=\"?page.name=SubStringPage&action=edit\">?</a> correctly"
49
+ # }
50
+
51
+
52
+ # set_content( "SubString", "" )
53
+ # set_content( "SubStringPage", "")
54
+
55
+ # set_content( "HomePage",
56
+ # "This is a test of linking SubString and SubStringPage correctly" )
57
+
58
+ # Web::local.assert_includes "page" => {
59
+ # "name" => "HomePage",
60
+ # "html" => "This is a test of linking <a href=\"?page.name=SubString\">SubString</a> and <a href=\"?page.name=SubStringPage\">SubStringPage</a> correctly"
61
+ # }
62
+ # end
63
+
64
+ def test_excluding_anchor_tags
65
+ set_content("HomePage",
66
+ "This is a Test of a <a href=Test>Test</a> that should Test fine" )
67
+
68
+ Web::local.assert_includes "page" => {
69
+ "name" => "HomePage",
70
+ "html" => "This is a Test of a <a href=Test>Test</a> that should Test fine"
71
+ }
72
+
73
+ set_content( "SomePage", "test" )
74
+ set_content( "DorkPage", "test" )
75
+ set_content( "HomePage",
76
+ "This page links to SomePage and the DorkPage and a NonExistentPage with an extra <a href=/FrontPage>FrontPage</a> link thrown in for fun." )
77
+
78
+ Web::local.assert_includes "page" => {
79
+ "name" => "HomePage",
80
+ "html" => "This page links to <a href=\"?page.name=SomePage\">SomePage</a> and the <a href=\"?page.name=DorkPage\">DorkPage</a> and a NonExistentPage<a href=\"?page.name=NonExistentPage&action=edit\">?</a> with an extra <a href=/FrontPage>FrontPage</a> link thrown in for fun."
81
+ }
82
+ end
83
+
84
+ def test_exclude_tags
85
+ set_content("HomePage",
86
+ "<a href=SomePage><form action='SomePage'><input value=\"SomePage\">" )
87
+ do_request( "wiki.rb", "page.name" => "HomePage" )
88
+ Web::local.assert_includes "page" => {
89
+ "name" => "HomePage",
90
+ "html" => "<a href=SomePage><form action='SomePage'><input value=\"SomePage\">"
91
+ }
92
+ end
93
+
94
+ def test_link_slashed_words
95
+ do_request "wiki.rb", "action" => "edit", "page.name" => "HomePage"
96
+ do_submit "edit_page", "page.content" => "Hello/Patrick", "action" => "Save"
97
+ do_request "wiki.rb", "page.name" => "HomePage"
98
+
99
+ Web::local.assert_includes "page" => {
100
+ "name" => "HomePage",
101
+ "html" => "Hello/Patrick<a href=\"?page.name=Hello%2FPatrick&action=edit\">?</a>"
102
+ }
103
+
104
+ do_request("wiki.rb",
105
+ "page.name" => "Hello/Patrick",
106
+ "action" => "Save",
107
+ "content" => "hola")
108
+
109
+ do_request "wiki.rb", "page.name" => "HomePage"
110
+
111
+ Web::local.assert_includes "page" => {
112
+ "name" => "HomePage",
113
+ "html" => "<a href=\"?page.name=Hello%2FPatrick\">Hello/Patrick</a>",
114
+ }
115
+
116
+ do_request "wiki.rb", "page.name" => "Hello/Patrick"
117
+ Web::local.assert_includes "page" => {
118
+ "name" => "Hello/Patrick",
119
+ "download_link" => "../test.pages/Hello-slash-Patrick/",
120
+ }
121
+ end
122
+
123
+ def test_make_edit_link_with_bumpy_and_spaces
124
+ do_request "wiki.rb", "action" => "edit", "page.name" => "HomePage"
125
+ do_submit "edit_page", "page.content" => "[[Hello PatrickMay]]", "action" => "Save"
126
+ do_request "wiki.rb", "page.name" => "HomePage"
127
+
128
+ Web::local.assert_includes "page" => {
129
+ "name" => "HomePage",
130
+ "html" => "Hello PatrickMay<a href=\"?page.name=Hello+PatrickMay&action=edit\">?</a>"
131
+ }
132
+ end
133
+
134
+ def test_make_edit_link_with_bumpy_in_word
135
+ do_request "wiki.rb", "action" => "edit", "page.name" => "HomePage"
136
+ do_submit "edit_page", "page.content" => "helloPatrickMay", "action" => "Save"
137
+ do_request "wiki.rb", "page.name" => "HomePage"
138
+
139
+ Web::local.assert_includes "page" => {
140
+ "name" => "HomePage",
141
+ "html" => "helloPatrickMay"
142
+ }
143
+ end
144
+
145
+ def test_make_path_info_link
146
+ set_content( "SomePage", "make this page exist" )
147
+ set_content( "HomePage", "link to SomePage" )
148
+ do_request "wiki.rb", "page.name" => "HomePage"
149
+
150
+ Web::local.assert_includes "page" => {
151
+ "name" => "HomePage",
152
+ "html" => "link to <a href=\"?page.name=SomePage\">SomePage</a>"
153
+ }
154
+
155
+ Web::Wiki::set_pref( :script_url => "/cgi-bin/wiki.rb",
156
+ :store_url => nil )
157
+
158
+ Web::local.assert_includes "page" => {
159
+ "name" => "HomePage",
160
+ "html" => "link to <a href=\"?page.name=SomePage\">SomePage</a>"
161
+ }
162
+
163
+ Web::Wiki::set_pref( :script_url => "/cgi-bin/wiki.rb",
164
+ :store_url => "/pages/")
165
+
166
+ Web::local.assert_includes "page" => {
167
+ "name" => "HomePage",
168
+ "html" => "link to <a href=\"/cgi-bin/wiki.rb/SomePage.html\">SomePage</a>"
169
+ }
170
+
171
+ do_request( "wiki.rb/SomePage.html" )
172
+
173
+ Web::local.assert_includes "page" => {
174
+ "name" => "SomePage",
175
+ "html" => "make this page exist"
176
+ }
177
+
178
+ set_content( "SomePage/SubPage", "make this exist" )
179
+ set_content( "SomePage", "link to SomePage/SubPage" )
180
+
181
+ do_request( "wiki.rb/SomePage.html" )
182
+
183
+ Web::local.assert_includes "page" => {
184
+ "name" => "SomePage",
185
+ "html" => "link to <a href=\"/cgi-bin/wiki.rb/SomePage/SubPage.html\">SomePage/SubPage</a>"
186
+ }
187
+
188
+ do_request( "wiki.rb/SomePage/SubPage.html" )
189
+
190
+ Web::local.assert_includes "page" => {
191
+ "name" => "SomePage/SubPage",
192
+ "html" => "make this exist"
193
+ }
194
+
195
+ end
196
+
197
+ end
@@ -0,0 +1,56 @@
1
+ require 'web/wiki'
2
+
3
+ class TestTarpit < Test::Unit::TestCase
4
+ include Web::Testing
5
+
6
+ def setup
7
+ @old_remote_addr = ENV["REMOTE_ADDR"]
8
+ setup_wiki
9
+ end
10
+
11
+ def teardown
12
+ teardown_wiki
13
+ ENV["REMOTE_ADDR"] = @old_remote_addr
14
+ File.delete("vandals.test.txt") if File.exists? "vandals.test.txt"
15
+ end
16
+
17
+ def do_edit( name, content )
18
+ do_request "wiki.rb", "action" => "edit", "page.name" => name
19
+ do_submit "edit_page", "page.content" => content, "action" => "Save"
20
+ end
21
+
22
+ def test_page_revisions_store_remote_addr
23
+ page = Web::Wiki.wiki.load_page( "HomePage" )
24
+ assert_equal( "auto-create", page.remote_addr )
25
+
26
+ ENV["REMOTE_ADDR"] = "127.0.0.1"
27
+ do_edit( "HomePage", "this is a test" )
28
+ page = Web::Wiki.wiki.load_page( "HomePage" )
29
+ assert_equal( "127.0.0.1", page.remote_addr )
30
+ end
31
+
32
+ def test_tarpit
33
+ File.open( "vandals.test.txt", "w" ) { |f|
34
+ f.puts( "123.51.23.192", "127.0.0.1", "52.213.123.65" )
35
+ }
36
+ ENV["REMOTE_ADDR"] = "127.0.0.1"
37
+ assert_equal( File::expand_path(make_temp("tarpit")),
38
+ Web::Wiki.store_dir.gsub(/\/$/, '') )
39
+ end
40
+
41
+ def test_ip_range
42
+ File.open( "vandals.test.txt", "w" ) { |f|
43
+ f.puts( "123.51", "23.17.49", "88.34.23.9")
44
+ }
45
+
46
+ assert_equal( make_temp("test.pages/"),
47
+ Web::Wiki::store_dir )
48
+
49
+ ["123.51.27.13", "23.17.49.2", "88.34.23.9"].each{ |ip|
50
+ ENV["REMOTE_ADDR"] = ip
51
+ assert_equal( make_temp("tarpit"),
52
+ Web::Wiki.store_dir.gsub(/\/$/, '') )
53
+ }
54
+ end
55
+
56
+ end
@@ -0,0 +1,300 @@
1
+ require 'web/wiki'
2
+
3
+ class WikiTest < Test::Unit::TestCase
4
+ include Web::Testing
5
+
6
+ def test_default
7
+ do_request "wiki.rb"
8
+ Web::local.assert_includes "page" => { "name" => "HomePage", "html" => ""}
9
+ assert_template_used( "home.html" )
10
+ end
11
+
12
+ # this is todo b/c it needs a little testing framework, i.e.
13
+ # the other.html file must exist. and I don't want to make it
14
+ # exist permanently
15
+ def todo_test_change_default
16
+ Web::Wiki::set_pref( :home_page => "OtherPage",
17
+ :home_template => "other.html" )
18
+ do_request "wiki.rb"
19
+ Web::local.assert_includes "page" => { "name" => "OtherPage", "html" => ""}
20
+ assert_template_used( "other.html" )
21
+
22
+ Web::Wiki::set_pref( :home_page => "OtherPage",
23
+ :home_template => "home.html" )
24
+ do_request "wiki.rb"
25
+ Web::local.assert_includes "page" => { "name" => "OtherPage"}
26
+ assert_template_used( "home.html" )
27
+
28
+ Web::Wiki::set_pref( :home_page => "HomePage",
29
+ :home_template => "home.html" )
30
+ end
31
+
32
+ def do_edit( name, content )
33
+ do_request "wiki.rb", "action" => "edit", "page.name" => name
34
+ do_submit "edit_page", "page.content" => content, "action" => "Save"
35
+ end
36
+
37
+ def do_edit_test( name, content )
38
+ do_request "wiki.rb", "page.name" => name
39
+ Web::local.assert_includes "page" => { "name" => name, "html" => ""}
40
+ assert_template_used( "basic.html" )
41
+
42
+ do_request "wiki.rb", "action" => "edit", "page.name" => name
43
+ assert_template_used( "edit.html" )
44
+ assert_edit_form(name)
45
+
46
+ do_submit "edit_page", "page.content" => content, "action" => "Save"
47
+ assert_template_used( "basic.html" )
48
+ Web::local.assert_includes "page" => { "name" => name, "html" => content }
49
+ end
50
+
51
+ def test_circumvent_yaml_bugs
52
+ do_edit_test( "SomePage", "Hello\"\'\r\nPatrick" )
53
+
54
+ do_request "wiki.rb", "page.name" => "SomePage"
55
+
56
+ Web::local.assert_includes "page" => {
57
+ "name" => "SomePage",
58
+ "html" =>"Hello\"\'\r\nPatrick",
59
+ "content" => "Hello\"\'\r\nPatrick",
60
+ }
61
+ end
62
+
63
+ def test_edit_somepage
64
+ do_edit_test( "SomePage", "Hello Patrick" )
65
+ end
66
+
67
+ def test_do_edit_with_0_revision
68
+ do_request "wiki.rb", "page.name" => "HomePage", "revision" => "0", "action" => "edit"
69
+ assert_template_used( "edit.html" )
70
+ assert_edit_form("HomePage")
71
+ end
72
+
73
+ def test_edit_different_page
74
+ do_edit_test( "differentPage", "Hello Patrick" )
75
+ end
76
+
77
+ def test_page_has_a_time
78
+ page = Web::Wiki.wiki.load_page( "HomePage" )
79
+ mtime0 = page.mtime
80
+ assert_equal( Time, mtime0.class )
81
+
82
+ do_edit("HomePage", "first edits")
83
+
84
+ page = Web::Wiki.wiki.load_page( "HomePage" )
85
+ mtime1 = page.mtime
86
+ assert_equal( Time, mtime1.class )
87
+ assert( mtime0 < mtime1 )
88
+
89
+ do_edit("HomePage", "second edits")
90
+
91
+ page = Web::Wiki.wiki.load_page( "HomePage" )
92
+ mtime2 = page.mtime
93
+ assert_equal( Time, mtime2.class )
94
+ assert( mtime0 < mtime1 && mtime1 < mtime2 )
95
+ end
96
+
97
+ def test_pretty_time
98
+ mtime = Time.mktime(1977, 10, 20, 13, 30, 0, 0 )
99
+ page = Web::Wiki.wiki.load_page( "HomePage" )
100
+ page.mtime = mtime
101
+ assert_equal( "1:30pm Oct 20, 1977", page.mtime_pretty )
102
+ end
103
+
104
+
105
+ def assert_edit_form( name="HomePage" )
106
+ assert_form_includes( "edit_page",
107
+ "page" => {
108
+ "name" => name,
109
+ "content" => ""
110
+ } )
111
+ end
112
+
113
+ def test_use_different_edit_templates
114
+ do_request( "wiki.rb",
115
+ "page.name" => "HomePage",
116
+ "action" => "edit" )
117
+ assert_template_used( "default-content_editor.html" )
118
+ assert_edit_form
119
+
120
+ do_request( "wiki.rb",
121
+ "page.name" => "HomePage",
122
+ "action" => "edit",
123
+ :env => {"HTTP_USER_AGENT" => "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"})
124
+ assert_template_used( "ie-content_editor.html" )
125
+ assert_edit_form
126
+
127
+ do_request( "wiki.rb",
128
+ "page.name" => "HomePage",
129
+ "action" => "edit",
130
+ :env => {"HTTP_USER_AGENT" => "Mozilla/5.001 (Windows; U; NT4.0; en-us) Gecko /25250101"} )
131
+ assert_template_used( "ekit-content_editor.html" )
132
+ assert_edit_form
133
+ end
134
+
135
+ def test_look_and_feel_template
136
+ do_request( "wiki.rb", "page.name" => "HomePage" )
137
+ assert_template_used( "template.html" )
138
+ assert_template_used( "home.html" )
139
+
140
+ do_edit("SomePage", "edits")
141
+ assert_template_used( "template.html" )
142
+ assert_template_used( "basic.html" )
143
+
144
+ #do_request "wiki.rb", "action" => "edit", "page.name" => "Some Page"
145
+ #do_submit( "edit_page",
146
+ # "page.illustration" => "http://www.somewhere.com/photo.gif",
147
+ # "action" => "Save" )
148
+
149
+
150
+ #assert_template_used( "illustration.html" )
151
+ #assert_template_not_used( "template.html" )
152
+
153
+ do_request("wiki.rb",
154
+ "page.name" => "HomePage",
155
+ "action" => "images")
156
+ assert_template_used( "images.html" )
157
+ assert_template_not_used( "template.html" )
158
+ end
159
+
160
+ def test_admin_template
161
+ do_request( "admin.rb", "page.name" => "HomePage" )
162
+ assert_template_used( "admin.html" )
163
+ assert_template_used( "home.html" )
164
+
165
+ do_edit("SomePage", "edits")
166
+
167
+ #do_request "admin.rb", "action" => "edit", "page.name" => "Some Page"
168
+ #do_submit( "edit_page",
169
+ # "page.illustration" => "http://www.somewhere.com/photo.gif",
170
+ # "action" => "Save" )
171
+
172
+
173
+ #assert_template_used( "illustration.html" )
174
+ #assert_template_not_used( "admin.html" )
175
+
176
+ do_request("admin.rb",
177
+ "page.name" => "HomePage",
178
+ "action" => "images")
179
+ assert_template_used( "images.html" )
180
+ assert_template_not_used( "admin.html" )
181
+ end
182
+
183
+ def test_preferences
184
+ assert_equal( nil, Web::Wiki::pref("random_pref") )
185
+ Web::Wiki::set_pref("random_pref" => "random value",
186
+ "another_pref" => "another value")
187
+ assert_equal( "random value", Web::Wiki::pref("random_pref") )
188
+ assert_equal( "random value", Web::Wiki::preferences["random_pref"] )
189
+ assert_equal( "another value", Web::Wiki::pref("another_pref") )
190
+ assert_equal( "another value", Web::Wiki::preferences["another_pref"] )
191
+ begin
192
+ assert_equal( make_temp("test.pages/"), Web::Wiki::pref("store_dir") )
193
+ Web::Wiki::set_pref("store_dir" => "da_sto")
194
+ assert_equal( "da_sto", Web::Wiki::pref("store_dir") )
195
+ assert_equal( "da_sto", Web::Wiki::preferences["store_dir"] )
196
+ ensure
197
+ Web::Wiki::set_pref("store_dir" => make_temp("/test.pages/"),
198
+ "random_pref" => nil,
199
+ "another_pref" => nil)
200
+ end
201
+ end
202
+
203
+ def test_allowed_actions
204
+ all_actions = ["page_history",
205
+ "download",
206
+ "default",
207
+ "download_resource",
208
+ "more_news",
209
+ "edit",
210
+ "Save",
211
+ "images",
212
+ "asset_history",
213
+ "select_illustration",
214
+ "insert_download",
215
+ "Upload",
216
+ "delete_asset"]
217
+ assert_equal( all_actions.sort, Web::Wiki::pref("allowed_actions").sort )
218
+ end
219
+
220
+ def test_restrict_actions
221
+ all_actions = Web::Wiki::pref("allowed_actions")
222
+ begin
223
+ Web::Wiki::set_pref("allowed_actions" => ["download",
224
+ "more_news"] )
225
+ do_request "wiki.rb"
226
+ Web::local.assert_includes "page" => { "name" => "HomePage", "html" => ""}
227
+ assert_template_used( "home.html" )
228
+
229
+ do_request "wiki.rb", "action" => "edit"
230
+ Web::local.assert_includes "page" => { "name" => "HomePage", "html" => ""}
231
+ assert_template_used( "home.html" )
232
+ assert_template_not_used( "edit.html" )
233
+
234
+ Web::Wiki::set_pref("allowed_actions" => ["download",
235
+ "more_news",
236
+ "edit", ] )
237
+
238
+ do_request "wiki.rb", "action" => "edit"
239
+ Web::local.assert_includes "page" => { "name" => "HomePage", "html" => ""}
240
+ assert_template_used( "edit.html" )
241
+ assert_template_not_used( "home.html" )
242
+ ensure
243
+ Web::Wiki::set_pref("allowed_actions" => all_actions)
244
+ end
245
+ end
246
+
247
+ def test_download_resource
248
+ do_request "wiki.rb/resources/test_upload.gif"
249
+
250
+ expected_asset = nil
251
+ File.open( "lib/web/wiki/resources/test_upload.gif", "r" ) { |f|
252
+ expected_asset = f.read
253
+ }
254
+
255
+ assert_equal( expected_asset, Web.connection.get_content )
256
+ assert_equal( ["image/gif"], Web.connection.get_header("Content-Type") )
257
+
258
+ do_request "wiki.rb/resources/htmlarea/images/insert_table.gif"
259
+
260
+ expected_asset = nil
261
+ File.open( "lib/web/wiki/resources/htmlarea/images/insert_table.gif", "r" ) { |f|
262
+ expected_asset = f.read
263
+ }
264
+
265
+ assert_equal( expected_asset, Web.connection.get_content )
266
+ assert_equal( ["image/gif"], Web.connection.get_header("Content-Type") )
267
+
268
+ # handle bad links appropriately
269
+ do_request "wiki.rb/resources/non_existent_file.gif"
270
+ assert_equal( "404 File Not Found", Web.connection.get_content )
271
+ assert_equal( ["404 Not Found"], Web.connection.get_header("Status") )
272
+
273
+
274
+ # don't allow this
275
+ do_request "wiki.rb/resources/../wiki.rb"
276
+ assert_equal( "404 File Not Found", Web.connection.get_content )
277
+ assert_equal( ["404 Not Found"], Web.connection.get_header("Status") )
278
+ end
279
+
280
+ def test_default_preferences
281
+ assert_equal( "wiki.rb", Web::Wiki::pref("baseurl") )
282
+ do_request( "wiki.rb" )
283
+ Web::local.assert_includes( "baseurl" => "wiki.rb" )
284
+
285
+ assert_equal( "wiki.rb/resources", Web::Wiki::pref("resourceurl") )
286
+ do_request( "wiki.rb" )
287
+ Web::local.assert_includes( "resourceurl" => "wiki.rb/resources" )
288
+ end
289
+
290
+ def setup
291
+ Web::setup
292
+ end
293
+
294
+ def teardown
295
+ Web::teardown
296
+ teardown_wiki
297
+ end
298
+
299
+ end
300
+