narf 0.6.2 → 0.6.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (424) hide show
  1. data/ChangeLog +22 -0
  2. data/lib/web/htmltools/xmltree.rb +2 -2
  3. data/lib/web/htmltools/xpath.rb +1 -1
  4. data/narf.gemspec +1 -1
  5. metadata +2 -460
  6. data/InstalledFiles +0 -2227
  7. data/config.save +0 -12
  8. data/doc/apache_cgi.txt~ +0 -17
  9. data/doc/fastcgi.txt~ +0 -19
  10. data/doc/rdoc/classes/Web.html +0 -369
  11. data/doc/rdoc/classes/Web.src/M000002.html +0 -15
  12. data/doc/rdoc/classes/Web.src/M000003.html +0 -15
  13. data/doc/rdoc/classes/Web.src/M000004.html +0 -15
  14. data/doc/rdoc/classes/Web.src/M000005.html +0 -15
  15. data/doc/rdoc/classes/Web.src/M000006.html +0 -20
  16. data/doc/rdoc/classes/Web.src/M000007.html +0 -18
  17. data/doc/rdoc/classes/Web.src/M000008.html +0 -18
  18. data/doc/rdoc/classes/Web.src/M000009.html +0 -18
  19. data/doc/rdoc/classes/Web.src/M000010.html +0 -15
  20. data/doc/rdoc/classes/Web.src/M000011.html +0 -15
  21. data/doc/rdoc/classes/Web.src/M000012.html +0 -15
  22. data/doc/rdoc/classes/Web/CGD.html +0 -173
  23. data/doc/rdoc/classes/Web/CGD.src/M000037.html +0 -24
  24. data/doc/rdoc/classes/Web/CGD.src/M000038.html +0 -24
  25. data/doc/rdoc/classes/Web/CGD.src/M000039.html +0 -15
  26. data/doc/rdoc/classes/Web/CGD.src/M000040.html +0 -15
  27. data/doc/rdoc/classes/Web/CGD.src/M000041.html +0 -23
  28. data/doc/rdoc/classes/Web/CGI.html +0 -946
  29. data/doc/rdoc/classes/Web/CGI.src/M000051.html +0 -15
  30. data/doc/rdoc/classes/Web/CGI.src/M000052.html +0 -24
  31. data/doc/rdoc/classes/Web/CGI.src/M000053.html +0 -15
  32. data/doc/rdoc/classes/Web/CGI.src/M000054.html +0 -15
  33. data/doc/rdoc/classes/Web/CGI.src/M000055.html +0 -15
  34. data/doc/rdoc/classes/Web/CGI.src/M000056.html +0 -15
  35. data/doc/rdoc/classes/Web/CGI.src/M000057.html +0 -17
  36. data/doc/rdoc/classes/Web/CGI.src/M000058.html +0 -34
  37. data/doc/rdoc/classes/Web/CGI.src/M000059.html +0 -22
  38. data/doc/rdoc/classes/Web/CGI.src/M000060.html +0 -15
  39. data/doc/rdoc/classes/Web/CGI.src/M000061.html +0 -15
  40. data/doc/rdoc/classes/Web/CGI.src/M000062.html +0 -19
  41. data/doc/rdoc/classes/Web/CGI.src/M000063.html +0 -18
  42. data/doc/rdoc/classes/Web/CGI.src/M000064.html +0 -19
  43. data/doc/rdoc/classes/Web/CGI.src/M000065.html +0 -15
  44. data/doc/rdoc/classes/Web/CGI.src/M000066.html +0 -15
  45. data/doc/rdoc/classes/Web/CGI.src/M000067.html +0 -15
  46. data/doc/rdoc/classes/Web/CGI.src/M000068.html +0 -13
  47. data/doc/rdoc/classes/Web/CGI.src/M000069.html +0 -13
  48. data/doc/rdoc/classes/Web/CGI.src/M000070.html +0 -13
  49. data/doc/rdoc/classes/Web/CGI.src/M000071.html +0 -13
  50. data/doc/rdoc/classes/Web/CGI.src/M000072.html +0 -19
  51. data/doc/rdoc/classes/Web/CGI.src/M000073.html +0 -15
  52. data/doc/rdoc/classes/Web/CGI.src/M000074.html +0 -19
  53. data/doc/rdoc/classes/Web/CGI.src/M000075.html +0 -15
  54. data/doc/rdoc/classes/Web/CGI.src/M000076.html +0 -15
  55. data/doc/rdoc/classes/Web/CGI.src/M000077.html +0 -15
  56. data/doc/rdoc/classes/Web/CGI.src/M000078.html +0 -20
  57. data/doc/rdoc/classes/Web/CGI.src/M000079.html +0 -36
  58. data/doc/rdoc/classes/Web/CGI.src/M000080.html +0 -19
  59. data/doc/rdoc/classes/Web/CGI.src/M000081.html +0 -18
  60. data/doc/rdoc/classes/Web/CGI.src/M000082.html +0 -15
  61. data/doc/rdoc/classes/Web/CGI.src/M000083.html +0 -17
  62. data/doc/rdoc/classes/Web/CGI.src/M000084.html +0 -15
  63. data/doc/rdoc/classes/Web/CGI.src/M000085.html +0 -16
  64. data/doc/rdoc/classes/Web/CGI.src/M000086.html +0 -15
  65. data/doc/rdoc/classes/Web/CGI.src/M000087.html +0 -15
  66. data/doc/rdoc/classes/Web/CGI.src/M000088.html +0 -15
  67. data/doc/rdoc/classes/Web/CGI.src/M000089.html +0 -16
  68. data/doc/rdoc/classes/Web/CGI.src/M000090.html +0 -15
  69. data/doc/rdoc/classes/Web/CGI.src/M000091.html +0 -15
  70. data/doc/rdoc/classes/Web/CGI.src/M000092.html +0 -15
  71. data/doc/rdoc/classes/Web/CGI.src/M000093.html +0 -15
  72. data/doc/rdoc/classes/Web/CGI.src/M000094.html +0 -15
  73. data/doc/rdoc/classes/Web/CGI.src/M000095.html +0 -15
  74. data/doc/rdoc/classes/Web/CGI.src/M000096.html +0 -19
  75. data/doc/rdoc/classes/Web/CGI.src/M000097.html +0 -15
  76. data/doc/rdoc/classes/Web/CGI.src/M000098.html +0 -15
  77. data/doc/rdoc/classes/Web/CGI.src/M000099.html +0 -43
  78. data/doc/rdoc/classes/Web/CGI.src/M000100.html +0 -18
  79. data/doc/rdoc/classes/Web/CGI.src/M000101.html +0 -20
  80. data/doc/rdoc/classes/Web/CGI.src/M000102.html +0 -15
  81. data/doc/rdoc/classes/Web/CGI.src/M000103.html +0 -15
  82. data/doc/rdoc/classes/Web/CGI.src/M000104.html +0 -15
  83. data/doc/rdoc/classes/Web/CGI.src/M000105.html +0 -24
  84. data/doc/rdoc/classes/Web/CGI.src/M000106.html +0 -24
  85. data/doc/rdoc/classes/Web/CGI.src/M000107.html +0 -22
  86. data/doc/rdoc/classes/Web/CaseInsensitiveHash.html +0 -104
  87. data/doc/rdoc/classes/Web/CaseInsensitiveHash.src/M000118.html +0 -15
  88. data/doc/rdoc/classes/Web/CaseInsensitiveHash.src/M000119.html +0 -15
  89. data/doc/rdoc/classes/Web/CaseInsensitiveHash.src/M000120.html +0 -15
  90. data/doc/rdoc/classes/Web/Mime.html +0 -122
  91. data/doc/rdoc/classes/Web/Mime.src/M000118.html +0 -15
  92. data/doc/rdoc/classes/Web/Mime.src/M000119.html +0 -15
  93. data/doc/rdoc/classes/Web/Mime.src/M000120.html +0 -23
  94. data/doc/rdoc/classes/Web/Mime.src/M000121.html +0 -15
  95. data/doc/rdoc/classes/Web/Mime.src/M000122.html +0 -15
  96. data/doc/rdoc/classes/Web/Mime.src/M000123.html +0 -23
  97. data/doc/rdoc/classes/Web/Mime.src/M000124.html +0 -15
  98. data/doc/rdoc/classes/Web/Narflates.html +0 -134
  99. data/doc/rdoc/classes/Web/Parser.html +0 -219
  100. data/doc/rdoc/classes/Web/Parser.src/M000013.html +0 -21
  101. data/doc/rdoc/classes/Web/Parser.src/M000014.html +0 -19
  102. data/doc/rdoc/classes/Web/Parser.src/M000015.html +0 -21
  103. data/doc/rdoc/classes/Web/Parser.src/M000016.html +0 -15
  104. data/doc/rdoc/classes/Web/Parser.src/M000017.html +0 -30
  105. data/doc/rdoc/classes/Web/Parser.src/M000018.html +0 -15
  106. data/doc/rdoc/classes/Web/Parser.src/M000019.html +0 -19
  107. data/doc/rdoc/classes/Web/Parser.src/M000020.html +0 -27
  108. data/doc/rdoc/classes/Web/Parser.src/M000021.html +0 -15
  109. data/doc/rdoc/classes/Web/Parser.src/M000022.html +0 -16
  110. data/doc/rdoc/classes/Web/Parser.src/M000023.html +0 -18
  111. data/doc/rdoc/classes/Web/Session.html +0 -178
  112. data/doc/rdoc/classes/Web/Session.src/M000042.html +0 -20
  113. data/doc/rdoc/classes/Web/Session.src/M000043.html +0 -19
  114. data/doc/rdoc/classes/Web/Session.src/M000044.html +0 -21
  115. data/doc/rdoc/classes/Web/Session.src/M000045.html +0 -21
  116. data/doc/rdoc/classes/Web/Session.src/M000046.html +0 -15
  117. data/doc/rdoc/classes/Web/Session.src/M000047.html +0 -17
  118. data/doc/rdoc/classes/Web/Session.src/M000048.html +0 -15
  119. data/doc/rdoc/classes/Web/Session.src/M000049.html +0 -15
  120. data/doc/rdoc/classes/Web/Session.src/M000050.html +0 -16
  121. data/doc/rdoc/classes/Web/Testing.html +0 -474
  122. data/doc/rdoc/classes/Web/Testing.src/M000024.html +0 -15
  123. data/doc/rdoc/classes/Web/Testing.src/M000025.html +0 -25
  124. data/doc/rdoc/classes/Web/Testing.src/M000026.html +0 -15
  125. data/doc/rdoc/classes/Web/Testing.src/M000027.html +0 -25
  126. data/doc/rdoc/classes/Web/Testing.src/M000028.html +0 -57
  127. data/doc/rdoc/classes/Web/Testing.src/M000029.html +0 -15
  128. data/doc/rdoc/classes/Web/Testing.src/M000030.html +0 -15
  129. data/doc/rdoc/classes/Web/Testing.src/M000031.html +0 -15
  130. data/doc/rdoc/classes/Web/Testing.src/M000032.html +0 -15
  131. data/doc/rdoc/classes/Web/Testing.src/M000033.html +0 -15
  132. data/doc/rdoc/classes/Web/Testing.src/M000034.html +0 -15
  133. data/doc/rdoc/classes/Web/Testing.src/M000035.html +0 -15
  134. data/doc/rdoc/classes/Web/Testing.src/M000036.html +0 -18
  135. data/doc/rdoc/classes/Web/Upload.html +0 -160
  136. data/doc/rdoc/classes/Web/Upload.src/M000108.html +0 -25
  137. data/doc/rdoc/classes/Web/Upload.src/M000109.html +0 -18
  138. data/doc/rdoc/classes/Web/Upload.src/M000110.html +0 -16
  139. data/doc/rdoc/classes/Web/Upload.src/M000111.html +0 -16
  140. data/doc/rdoc/classes/Web/Wiki.html +0 -249
  141. data/doc/rdoc/classes/Web/Wiki.src/M000112.html +0 -25
  142. data/doc/rdoc/classes/Web/Wiki.src/M000113.html +0 -15
  143. data/doc/rdoc/classes/Web/Wiki.src/M000114.html +0 -26
  144. data/doc/rdoc/classes/Web/Wiki.src/M000115.html +0 -21
  145. data/doc/rdoc/classes/Web/Wiki.src/M000116.html +0 -18
  146. data/doc/rdoc/classes/Web/Wiki.src/M000117.html +0 -19
  147. data/doc/rdoc/created.rid +0 -1
  148. data/doc/rdoc/files/README.html +0 -230
  149. data/doc/rdoc/files/doc/apache_cgi_txt.html +0 -76
  150. data/doc/rdoc/files/doc/fastcgi_txt.html +0 -82
  151. data/doc/rdoc/files/doc/mod_ruby_txt.html +0 -62
  152. data/doc/rdoc/files/doc/webrick_txt.html +0 -79
  153. data/doc/rdoc/files/examples/examples_rdoc.html +0 -73
  154. data/doc/rdoc/files/lib/web/cgi_rb.html +0 -75
  155. data/doc/rdoc/files/lib/web/mime_rb.html +0 -67
  156. data/doc/rdoc/files/lib/web/parser_rb.html +0 -73
  157. data/doc/rdoc/files/lib/web/session_rb.html +0 -73
  158. data/doc/rdoc/files/lib/web/template_rb.html +0 -73
  159. data/doc/rdoc/files/lib/web/testing_rb.html +0 -67
  160. data/doc/rdoc/files/lib/web/upload_rb.html +0 -73
  161. data/doc/rdoc/files/lib/web/wiki_rb.html +0 -79
  162. data/doc/rdoc/files/lib/web_rb.html +0 -116
  163. data/doc/rdoc/files/lib/web_rb.src/M000001.html +0 -15
  164. data/doc/rdoc/fr_class_index.html +0 -47
  165. data/doc/rdoc/fr_file_index.html +0 -52
  166. data/doc/rdoc/fr_method_index.html +0 -158
  167. data/doc/rdoc/index.html +0 -22
  168. data/doc/rdoc/rdoc-style.css +0 -99
  169. data/examples/admin.rb~ +0 -5
  170. data/examples/cookbook.rdoc~ +0 -238
  171. data/examples/examples.rdoc~ +0 -17
  172. data/examples/hello.world.rb~ +0 -3
  173. data/examples/session.rb~ +0 -31
  174. data/examples/test/test.hello.world.rb~ +0 -9
  175. data/examples/test/test.session.rb~ +0 -37
  176. data/examples/wiki.rb~ +0 -5
  177. data/lib/web.rb~ +0 -290
  178. data/lib/web/#assertinclude.rb# +0 -110
  179. data/lib/web/assertinclude.rb~ +0 -110
  180. data/lib/web/cgi.rb~ +0 -640
  181. data/lib/web/htmlparser/html-parser.rb~ +0 -429
  182. data/lib/web/htmlparser/sgml-parser.rb~ +0 -332
  183. data/lib/web/htmltools/element.rb~ +0 -296
  184. data/lib/web/htmltools/stparser.rb~ +0 -276
  185. data/lib/web/htmltools/tags.rb~ +0 -286
  186. data/lib/web/htmltools/tree.rb~ +0 -139
  187. data/lib/web/htmltools/xmltree.rb~ +0 -160
  188. data/lib/web/htmltools/xpath.rb~ +0 -71
  189. data/lib/web/parser.rb~ +0 -288
  190. data/lib/web/request.rb~ +0 -238
  191. data/lib/web/runner.rb~ +0 -26
  192. data/lib/web/sapi/fastcgi.rb~ +0 -25
  193. data/lib/web/sapi/mod_ruby.rb~ +0 -46
  194. data/lib/web/sapi/webrick.rb~ +0 -89
  195. data/lib/web/session.rb~ +0 -75
  196. data/lib/web/tagparser.rb~ +0 -96
  197. data/lib/web/template.rb~ +0 -613
  198. data/lib/web/testing.rb~ +0 -546
  199. data/lib/web/unit/response.rb~ +0 -461
  200. data/lib/web/unit/ui/cui/testrunner.rb~ +0 -50
  201. data/lib/web/upload.rb~ +0 -262
  202. data/lib/web/wiki.rb~ +0 -517
  203. data/lib/web/wiki/linker.rb~ +0 -72
  204. data/lib/web/wiki/mime.rb~ +0 -68
  205. data/lib/web/wiki/page.rb~ +0 -192
  206. data/lib/web/wiki/resources/#edit.html# +0 -65
  207. data/lib/web/wiki/resources/admin.html~ +0 -13
  208. data/lib/web/wiki/resources/default-content_editor.html~ +0 -1
  209. data/lib/web/wiki/resources/edit.html~ +0 -2
  210. data/lib/web/wiki/resources/home.html~ +0 -10
  211. data/lib/web/wiki/resources/htmlarea/ChangeLog +0 -1185
  212. data/lib/web/wiki/resources/htmlarea/dialog.js +0 -72
  213. data/lib/web/wiki/resources/htmlarea/examples/2-areas.cgi +0 -16
  214. data/lib/web/wiki/resources/htmlarea/examples/2-areas.html +0 -158
  215. data/lib/web/wiki/resources/htmlarea/examples/context-menu.html +0 -95
  216. data/lib/web/wiki/resources/htmlarea/examples/core.html +0 -184
  217. data/lib/web/wiki/resources/htmlarea/examples/css.html +0 -88
  218. data/lib/web/wiki/resources/htmlarea/examples/custom.css +0 -29
  219. data/lib/web/wiki/resources/htmlarea/examples/full-page.html +0 -75
  220. data/lib/web/wiki/resources/htmlarea/examples/fully-loaded.html +0 -248
  221. data/lib/web/wiki/resources/htmlarea/examples/index.html +0 -40
  222. data/lib/web/wiki/resources/htmlarea/examples/spell-checker.html +0 -132
  223. data/lib/web/wiki/resources/htmlarea/examples/table-operations.html +0 -116
  224. data/lib/web/wiki/resources/htmlarea/examples/test.cgi +0 -21
  225. data/lib/web/wiki/resources/htmlarea/htmlarea.css +0 -180
  226. data/lib/web/wiki/resources/htmlarea/htmlarea.js +0 -2175
  227. data/lib/web/wiki/resources/htmlarea/images/ed_about.gif +0 -0
  228. data/lib/web/wiki/resources/htmlarea/images/ed_align_center.gif +0 -0
  229. data/lib/web/wiki/resources/htmlarea/images/ed_align_justify.gif +0 -0
  230. data/lib/web/wiki/resources/htmlarea/images/ed_align_left.gif +0 -0
  231. data/lib/web/wiki/resources/htmlarea/images/ed_align_right.gif +0 -0
  232. data/lib/web/wiki/resources/htmlarea/images/ed_blank.gif +0 -0
  233. data/lib/web/wiki/resources/htmlarea/images/ed_charmap.gif +0 -0
  234. data/lib/web/wiki/resources/htmlarea/images/ed_color_bg.gif +0 -0
  235. data/lib/web/wiki/resources/htmlarea/images/ed_color_fg.gif +0 -0
  236. data/lib/web/wiki/resources/htmlarea/images/ed_copy.gif +0 -0
  237. data/lib/web/wiki/resources/htmlarea/images/ed_custom.gif +0 -0
  238. data/lib/web/wiki/resources/htmlarea/images/ed_cut.gif +0 -0
  239. data/lib/web/wiki/resources/htmlarea/images/ed_delete.gif +0 -0
  240. data/lib/web/wiki/resources/htmlarea/images/ed_format_bold.gif +0 -0
  241. data/lib/web/wiki/resources/htmlarea/images/ed_format_italic.gif +0 -0
  242. data/lib/web/wiki/resources/htmlarea/images/ed_format_strike.gif +0 -0
  243. data/lib/web/wiki/resources/htmlarea/images/ed_format_sub.gif +0 -0
  244. data/lib/web/wiki/resources/htmlarea/images/ed_format_sup.gif +0 -0
  245. data/lib/web/wiki/resources/htmlarea/images/ed_format_underline.gif +0 -0
  246. data/lib/web/wiki/resources/htmlarea/images/ed_help.gif +0 -0
  247. data/lib/web/wiki/resources/htmlarea/images/ed_hr.gif +0 -0
  248. data/lib/web/wiki/resources/htmlarea/images/ed_html.gif +0 -0
  249. data/lib/web/wiki/resources/htmlarea/images/ed_image.gif +0 -0
  250. data/lib/web/wiki/resources/htmlarea/images/ed_indent_less.gif +0 -0
  251. data/lib/web/wiki/resources/htmlarea/images/ed_indent_more.gif +0 -0
  252. data/lib/web/wiki/resources/htmlarea/images/ed_left_to_right.gif +0 -0
  253. data/lib/web/wiki/resources/htmlarea/images/ed_link.gif +0 -0
  254. data/lib/web/wiki/resources/htmlarea/images/ed_list_bullet.gif +0 -0
  255. data/lib/web/wiki/resources/htmlarea/images/ed_list_num.gif +0 -0
  256. data/lib/web/wiki/resources/htmlarea/images/ed_paste.gif +0 -0
  257. data/lib/web/wiki/resources/htmlarea/images/ed_redo.gif +0 -0
  258. data/lib/web/wiki/resources/htmlarea/images/ed_right_to_left.gif +0 -0
  259. data/lib/web/wiki/resources/htmlarea/images/ed_save.gif +0 -0
  260. data/lib/web/wiki/resources/htmlarea/images/ed_show_border.gif +0 -0
  261. data/lib/web/wiki/resources/htmlarea/images/ed_splitcel.gif +0 -0
  262. data/lib/web/wiki/resources/htmlarea/images/ed_undo.gif +0 -0
  263. data/lib/web/wiki/resources/htmlarea/images/fullscreen_maximize.gif +0 -0
  264. data/lib/web/wiki/resources/htmlarea/images/fullscreen_minimize.gif +0 -0
  265. data/lib/web/wiki/resources/htmlarea/images/insert_table.gif +0 -0
  266. data/lib/web/wiki/resources/htmlarea/index.html +0 -199
  267. data/lib/web/wiki/resources/htmlarea/lang/b5.js +0 -36
  268. data/lib/web/wiki/resources/htmlarea/lang/cz.js +0 -63
  269. data/lib/web/wiki/resources/htmlarea/lang/da.js +0 -38
  270. data/lib/web/wiki/resources/htmlarea/lang/de.js +0 -54
  271. data/lib/web/wiki/resources/htmlarea/lang/ee.js +0 -63
  272. data/lib/web/wiki/resources/htmlarea/lang/el.js +0 -75
  273. data/lib/web/wiki/resources/htmlarea/lang/en.js +0 -88
  274. data/lib/web/wiki/resources/htmlarea/lang/es.js +0 -51
  275. data/lib/web/wiki/resources/htmlarea/lang/fi.js +0 -46
  276. data/lib/web/wiki/resources/htmlarea/lang/fr.js +0 -61
  277. data/lib/web/wiki/resources/htmlarea/lang/gb.js +0 -36
  278. data/lib/web/wiki/resources/htmlarea/lang/he.js +0 -63
  279. data/lib/web/wiki/resources/htmlarea/lang/hu.js +0 -63
  280. data/lib/web/wiki/resources/htmlarea/lang/it.js +0 -54
  281. data/lib/web/wiki/resources/htmlarea/lang/ja-euc.js +0 -37
  282. data/lib/web/wiki/resources/htmlarea/lang/ja-jis.js +0 -37
  283. data/lib/web/wiki/resources/htmlarea/lang/ja-sjis.js +0 -37
  284. data/lib/web/wiki/resources/htmlarea/lang/ja-utf8.js +0 -37
  285. data/lib/web/wiki/resources/htmlarea/lang/lt.js +0 -55
  286. data/lib/web/wiki/resources/htmlarea/lang/lv.js +0 -55
  287. data/lib/web/wiki/resources/htmlarea/lang/nb.js +0 -36
  288. data/lib/web/wiki/resources/htmlarea/lang/nl.js +0 -90
  289. data/lib/web/wiki/resources/htmlarea/lang/no.js +0 -79
  290. data/lib/web/wiki/resources/htmlarea/lang/pl.js +0 -36
  291. data/lib/web/wiki/resources/htmlarea/lang/pt_br.js +0 -37
  292. data/lib/web/wiki/resources/htmlarea/lang/ro.js +0 -80
  293. data/lib/web/wiki/resources/htmlarea/lang/ru.js +0 -63
  294. data/lib/web/wiki/resources/htmlarea/lang/se.js +0 -38
  295. data/lib/web/wiki/resources/htmlarea/lang/si.js +0 -63
  296. data/lib/web/wiki/resources/htmlarea/lang/vn.js +0 -51
  297. data/lib/web/wiki/resources/htmlarea/license.txt +0 -30
  298. data/lib/web/wiki/resources/htmlarea/plugins/CSS/css.js +0 -116
  299. data/lib/web/wiki/resources/htmlarea/plugins/CSS/lang/en.js +0 -2
  300. data/lib/web/wiki/resources/htmlarea/plugins/ContextMenu/context-menu.js +0 -416
  301. data/lib/web/wiki/resources/htmlarea/plugins/ContextMenu/lang/de.js +0 -59
  302. data/lib/web/wiki/resources/htmlarea/plugins/ContextMenu/lang/el.js +0 -57
  303. data/lib/web/wiki/resources/htmlarea/plugins/ContextMenu/lang/en.js +0 -66
  304. data/lib/web/wiki/resources/htmlarea/plugins/ContextMenu/lang/nl.js +0 -66
  305. data/lib/web/wiki/resources/htmlarea/plugins/ContextMenu/menu.css +0 -64
  306. data/lib/web/wiki/resources/htmlarea/plugins/FullPage/full-page.js +0 -143
  307. data/lib/web/wiki/resources/htmlarea/plugins/FullPage/img/docprop.gif +0 -0
  308. data/lib/web/wiki/resources/htmlarea/plugins/FullPage/lang/en.js +0 -25
  309. data/lib/web/wiki/resources/htmlarea/plugins/FullPage/lang/ro.js +0 -25
  310. data/lib/web/wiki/resources/htmlarea/plugins/FullPage/popups/docprop.html +0 -131
  311. data/lib/web/wiki/resources/htmlarea/plugins/FullPage/test.html +0 -89
  312. data/lib/web/wiki/resources/htmlarea/plugins/SpellChecker/img/spell-check.gif +0 -0
  313. data/lib/web/wiki/resources/htmlarea/plugins/SpellChecker/lang/cz.js +0 -37
  314. data/lib/web/wiki/resources/htmlarea/plugins/SpellChecker/lang/da.js +0 -37
  315. data/lib/web/wiki/resources/htmlarea/plugins/SpellChecker/lang/de.js +0 -28
  316. data/lib/web/wiki/resources/htmlarea/plugins/SpellChecker/lang/en.js +0 -38
  317. data/lib/web/wiki/resources/htmlarea/plugins/SpellChecker/lang/hu.js +0 -37
  318. data/lib/web/wiki/resources/htmlarea/plugins/SpellChecker/lang/it.js +0 -28
  319. data/lib/web/wiki/resources/htmlarea/plugins/SpellChecker/lang/ro.js +0 -37
  320. data/lib/web/wiki/resources/htmlarea/plugins/SpellChecker/readme-tech.html +0 -114
  321. data/lib/web/wiki/resources/htmlarea/plugins/SpellChecker/spell-check-logic.cgi +0 -210
  322. data/lib/web/wiki/resources/htmlarea/plugins/SpellChecker/spell-check-style.css +0 -10
  323. data/lib/web/wiki/resources/htmlarea/plugins/SpellChecker/spell-check-ui.html +0 -122
  324. data/lib/web/wiki/resources/htmlarea/plugins/SpellChecker/spell-check-ui.js +0 -397
  325. data/lib/web/wiki/resources/htmlarea/plugins/SpellChecker/spell-checker.js +0 -79
  326. data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/img/cell-delete.gif +0 -0
  327. data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/img/cell-insert-after.gif +0 -0
  328. data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/img/cell-insert-before.gif +0 -0
  329. data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/img/cell-merge.gif +0 -0
  330. data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/img/cell-prop.gif +0 -0
  331. data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/img/cell-split.gif +0 -0
  332. data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/img/col-delete.gif +0 -0
  333. data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/img/col-insert-after.gif +0 -0
  334. data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/img/col-insert-before.gif +0 -0
  335. data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/img/col-split.gif +0 -0
  336. data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/img/row-delete.gif +0 -0
  337. data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/img/row-insert-above.gif +0 -0
  338. data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/img/row-insert-under.gif +0 -0
  339. data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/img/row-prop.gif +0 -0
  340. data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/img/row-split.gif +0 -0
  341. data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/img/table-prop.gif +0 -0
  342. data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/lang/cz.js +0 -90
  343. data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/lang/da.js +0 -90
  344. data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/lang/de.js +0 -81
  345. data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/lang/el.js +0 -81
  346. data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/lang/en.js +0 -90
  347. data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/lang/fi.js +0 -66
  348. data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/lang/hu.js +0 -63
  349. data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/lang/it.js +0 -81
  350. data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/lang/nl.js +0 -90
  351. data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/lang/no.js +0 -91
  352. data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/lang/ro.js +0 -90
  353. data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/table-operations.js +0 -1160
  354. data/lib/web/wiki/resources/htmlarea/popupdiv.js +0 -369
  355. data/lib/web/wiki/resources/htmlarea/popups/about.html +0 -378
  356. data/lib/web/wiki/resources/htmlarea/popups/blank.html +0 -2
  357. data/lib/web/wiki/resources/htmlarea/popups/custom2.html +0 -35
  358. data/lib/web/wiki/resources/htmlarea/popups/editor_help.html +0 -16
  359. data/lib/web/wiki/resources/htmlarea/popups/fullscreen.html +0 -133
  360. data/lib/web/wiki/resources/htmlarea/popups/insert_image.html +0 -191
  361. data/lib/web/wiki/resources/htmlarea/popups/insert_table.html +0 -174
  362. data/lib/web/wiki/resources/htmlarea/popups/link.html +0 -142
  363. data/lib/web/wiki/resources/htmlarea/popups/old-fullscreen.html +0 -131
  364. data/lib/web/wiki/resources/htmlarea/popups/old_insert_image.html +0 -206
  365. data/lib/web/wiki/resources/htmlarea/popups/popup.js +0 -109
  366. data/lib/web/wiki/resources/htmlarea/popups/select_color.html +0 -347
  367. data/lib/web/wiki/resources/htmlarea/popupwin.js +0 -139
  368. data/lib/web/wiki/resources/htmlarea/reference.html +0 -523
  369. data/lib/web/wiki/resources/htmlarea/release-notes.html +0 -165
  370. data/lib/web/wiki/resources/illustration.html~ +0 -1
  371. data/lib/web/wiki/resources/index.html~ +0 -4
  372. data/lib/web/wiki/resources/more_news.html~ +0 -5
  373. data/lib/web/wiki/resources/more_news_rss_0.91.html +0 -23
  374. data/lib/web/wiki/resources/page_history.html~ +0 -19
  375. data/lib/web/wiki/resources/template.html~ +0 -13
  376. data/narf.gemspec~ +0 -40
  377. data/sapi/apache_cgi/INSTALL.txt~ +0 -9
  378. data/sapi/apache_cgi/README~ +0 -0
  379. data/sapi/fastcgi/INSTALL.txt~ +0 -17
  380. data/sapi/mod_ruby/INSTALL.txt~ +0 -5
  381. data/sapi/webrick/INSTALL.txt~ +0 -21
  382. data/sapi/webrick/run_webrick.rb~ +0 -16
  383. data/scripts/makedist.rb~ +0 -49
  384. data/test/mod_ruby_stub.rb~ +0 -38
  385. data/test/test.action.rb~ +0 -142
  386. data/test/test.assertinclude.rb~ +0 -109
  387. data/test/test.narf.cgi.rb~ +0 -105
  388. data/test/test.request.rb~ +0 -328
  389. data/test/test.response.rb~ +0 -556
  390. data/test/test.template.rb~ +0 -832
  391. data/test/test.web.test.rb~ +0 -461
  392. data/test/webunit/test_cookie.rb~ +0 -128
  393. data/test/webunit/test_form.rb~ +0 -43
  394. data/test/webunit/test_multipart.rb~ +0 -53
  395. data/test/webunit/test_params.rb~ +0 -211
  396. data/test/webunit/test_response.rb~ +0 -145
  397. data/test/webunit/test_site/assert.html~ +0 -1
  398. data/test/webunit/test_site/auth/index.html~ +0 -1
  399. data/test/webunit/test_site/badtags.html~ +0 -1
  400. data/test/webunit/test_site/cookie.cgi~ +0 -35
  401. data/test/webunit/test_site/document.xml~ +0 -1
  402. data/test/webunit/test_site/form.html~ +0 -1
  403. data/test/webunit/test_site/frame-0.html~ +0 -1
  404. data/test/webunit/test_site/frame-1.html~ +0 -1
  405. data/test/webunit/test_site/frame.html~ +0 -1
  406. data/test/webunit/test_site/image.html~ +0 -1
  407. data/test/webunit/test_site/include.cgi~ +0 -10
  408. data/test/webunit/test_site/jscript-0.html~ +0 -1
  409. data/test/webunit/test_site/jscript-1.html~ +0 -1
  410. data/test/webunit/test_site/jscript.html~ +0 -1
  411. data/test/webunit/test_site/link.html~ +0 -1
  412. data/test/webunit/test_site/multipart.cgi~ +0 -25
  413. data/test/webunit/test_site/multipart.html~ +0 -1
  414. data/test/webunit/test_site/params.html~ +0 -1
  415. data/test/webunit/test_site/redirect.cgi~ +0 -14
  416. data/test/webunit/test_site/response.html~ +0 -1
  417. data/test/webunit/test_site/simple.cgi~ +0 -17
  418. data/test/webunit/test_site/stock.cgi~ +0 -34
  419. data/test/webunit/test_site/table.html~ +0 -1
  420. data/test/webunit/test_site/test.cgi~ +0 -25
  421. data/test/wiki/test.history.rb~ +0 -254
  422. data/test/wiki/test.illustration_page.rb~ +0 -287
  423. data/test/wiki/test.tarpit.rb~ +0 -40
  424. data/test/wiki/test.wiki.rb~ +0 -295
data/test/test.action.rb~ DELETED
@@ -1,142 +0,0 @@
1
- module Web
2
- class Action
3
- def Action.clear_actions
4
- @@all_actions = []
5
- end
6
- end
7
- end
8
-
9
- class TestAction < Test::Unit::TestCase
10
- def set_up
11
- end
12
-
13
- def teardown
14
- @output = @cgi = @action = @stored_pattern = nil
15
- Web::Action.clear_actions
16
- end
17
-
18
- def output
19
- @output ||= ""
20
- end
21
-
22
- def cgi params={}
23
- Web::CGI.new( :out => output, :params => params )
24
- end
25
-
26
- def stored_pattern pattern={}
27
- @stored_pattern ||= pattern
28
- end
29
-
30
- def action( pattern=stored_pattern, &function )
31
- @action ||= Web::Action.new( pattern, &function )
32
- end
33
-
34
- def test_failed_match_on_blank_cgi
35
- action( "name" => // )
36
- assert_equal( false, action.applies?(cgi) )
37
- end
38
-
39
- def test_fails_with_different_params
40
- action "name" => //
41
- assert_equal( false, action.applies?(cgi( {"not" => "me"} )) )
42
- end
43
-
44
- def test_matchs_by_param_present
45
- action "name" => //
46
- assert action.applies?(cgi( {"name" => "something"}) )
47
- end
48
-
49
- def test_matches_exact_param
50
- action "name" => "patrick"
51
- assert action.applies?(cgi( {"name" => "patrick" } ))
52
- assert_equal( false, action.applies?(cgi( {"name" => "patrick.may"} ) ))
53
- end
54
-
55
- def test_matches_pattern
56
- action "name" => /patrick|tom/
57
- assert action.applies?(cgi( {"name" => "patrick the great" } ))
58
- assert action.applies?(cgi( {"name" => "tom the silly" } ))
59
- end
60
-
61
- def test_match_is_not_anal
62
- action "name" => //
63
- assert action.applies?(cgi( {"name" => "something", "ignore" => "me"} ))
64
- end
65
-
66
- def test_runs_block
67
- action_ran_flag = false
68
- action( "name" => // ) {
69
- action_ran_flag = true
70
- }
71
-
72
- action.run
73
-
74
- assert action_ran_flag
75
- end
76
-
77
- def test_guards_block
78
- Web::Action.new.run
79
- end
80
-
81
- def test_passes_cgi_in_with_run
82
- action_ran_flag = false
83
- action( "name" => // ){ |cgi|
84
- action_ran_flag = cgi.has_key? "flag"
85
- }
86
-
87
- action.run cgi( "flag" => "it ran" )
88
-
89
- assert action_ran_flag
90
- end
91
-
92
- def test_pick_action_picks_the_most_specific_action
93
- one = Web::Action.new( "name" => // )
94
- second = Web::Action.new( "name" => "patrick" )
95
- third = Web::Action.new( "name" => /patrick|tom/ )
96
-
97
- assert_equal( second, Web::Action.pick( cgi({ "name" => "patrick"}) ) )
98
- end
99
-
100
- def test_set_default_action
101
- default = Web::Action.new
102
- another = Web::Action.new( "this" => "that", "here" => "there" )
103
- assert_equal( default, Web::Action.pick( cgi ) )
104
- end
105
-
106
- # this test causes no initial default action
107
- # def test_raises_exception_if_no_action_is_found
108
- # assert_raises(Web::Exception){
109
- # Web::Action.pick cgi
110
- # }
111
- # end
112
-
113
- def test_doesnt_raise_exception_if_no_exception_is_found
114
- Web::Action.pick(cgi).run
115
- end
116
-
117
- def test_blank_action_doesnt_mask_default
118
- Web::Action.pick(cgi).run
119
-
120
- default = Web::Action.new
121
-
122
- assert_equal( default, Web::Action.pick(cgi) )
123
- end
124
-
125
- def test_run
126
- cgi_params = { "name" => "patrick" }
127
- test_params = {}
128
-
129
- Web::Action.new { |cgi|
130
- test_params = cgi.multiple_params
131
- }
132
-
133
- Web::Action.run :params => cgi_params, :out => ""
134
-
135
- assert_equal( cgi_params, test_params )
136
- end
137
-
138
- def todo_test_subclassing_action
139
-
140
- end
141
-
142
- end
@@ -1,109 +0,0 @@
1
- class TestHashCompare < Test::Unit::TestCase
2
- def test_includes_same
3
- assert_includes( {"a" => "aa"} , {"a" => "aa"} )
4
- end
5
-
6
- def test_includes_missing
7
- e = assert_raises( Test::Unit::AssertionFailedError ) {
8
- assert_includes( { "a" => "aa", "b" => "bb" } , {"a" => "aa"} )
9
- }
10
- assert_equal "Missing from actual: b => \"bb\".", e.to_s
11
- end
12
-
13
- def test_includes_different
14
- e = assert_raises( Test::Unit::AssertionFailedError ) {
15
- assert_includes( {"a" => "aa"} , { "a" => "bb" } )
16
- }
17
- assert_equal "Difference: required <a => \"aa\"> was <a => \"bb\">.", e.to_s
18
- end
19
-
20
- def test_includes_multi_level
21
- e = assert_raises( Test::Unit::AssertionFailedError ) {
22
- assert_includes( {"a" => { "a" => "aa", "b" => "bb" }} , { "a" => { "a" => "aa", "b" => "cc"}} )
23
- }
24
- assert_equal "Difference: required <a.b => \"bb\"> was <a.b => \"cc\">.", e.to_s
25
- end
26
-
27
- def test_includes_array_with_difference
28
- e = assert_raises( Test::Unit::AssertionFailedError ) {
29
- assert_includes( {"a" => [{ "a" => "aa" }, {"b" => "bb" }]},{ "a" => [ {"a" => "aa"}, {"b" => "cc"}]})
30
- }
31
- assert_equal "Difference: required <a[1].b => \"bb\"> was <a[1].b => \"cc\">.", e.to_s
32
- end
33
-
34
- def test_includes_array_with_items_missing
35
- e = assert_raises( Test::Unit::AssertionFailedError ) {
36
- assert_includes( { "a" => [ {"a" => "aa"}, {"b" => "cc"}]} , {"a" => [{ "a" => "aa" }]} )
37
- }
38
- assert_equal "Missing from actual: a[1] => {\"b\"=>\"cc\"}.", e.to_s
39
- end
40
-
41
- def test_includes_hash_when_should_not
42
- e = assert_raises( Test::Unit::AssertionFailedError ) {
43
- assert_includes( {"a" => "b"} , { "a" => { "a" => "aa", "b" => "cc"}} )
44
- }
45
- assert_equal "Difference: required <a => \"b\"> was <a => {\"a\"=>\"aa\", \"b\"=>\"cc\"}>.", e.to_s
46
- end
47
-
48
- def test_does_not_include_hash_when_it_should
49
- e = assert_raises( Test::Unit::AssertionFailedError ) {
50
- assert_includes( { "a" => { "a" => "aa" , "b" => "cc"}}, {"a" => "b"} )
51
- }
52
- assert_equal "Difference: required <a => {\"a\"=>\"aa\", \"b\"=>\"cc\"}> was <a => \"b\">.", e.to_s
53
- end
54
-
55
- def test_includes_array_when_should_not
56
- e = assert_raises( Test::Unit::AssertionFailedError ) {
57
- assert_includes( {"a" => "a"}, { "a" => [ {"a" => "aa"}, {"b" => "cc"}]} )
58
- }
59
- assert_equal "Difference: required <a => \"a\"> was <a => [{\"a\"=>\"aa\"}, {\"b\"=>\"cc\"}]>.", e.to_s
60
- end
61
-
62
- def test_does_not_include_array_when_it_should
63
- e = assert_raises( Test::Unit::AssertionFailedError ) {
64
- assert_includes( {"a" => "b"} , { "a" => { "a" => "aa" , "b" => "cc"}} )
65
- }
66
- assert_equal "Difference: required <a => \"b\"> was <a => {\"a\"=>\"aa\", \"b\"=>\"cc\"}>.", e.to_s
67
- end
68
-
69
- def test_assert_includes
70
- assert_includes( {"a" => { "a" => "aa" }}, { "a" => { "a" => "aa" , "b" => "aa"}} )
71
- end
72
-
73
- def test_assert_includes2
74
- assert_raises (Test::Unit::AssertionFailedError) {
75
- assert_includes( { "a" => { "a" => "aa" , "b" => "cc"}}, {"a" => { "c" => "bb" },"b" => { "c" => "bb" }})
76
- }
77
- end
78
-
79
- def test_assert_includes_array
80
- assert_includes( ["a"],[ "a","b"] )
81
- end
82
-
83
- def test_demonstrate_failure
84
- assert_raises (Test::Unit::AssertionFailedError) {
85
- assert_includes(["a","b"],[ "a"])
86
- }
87
- end
88
-
89
- class Trivial
90
- attr_accessor :name
91
- def initialize( name )
92
- @name = name
93
- end
94
- end
95
-
96
- def test_compare_object_tree_to_hash
97
- assert_includes({"name" => "patrick"}, Trivial.new("patrick"))
98
- end
99
-
100
- def test_compare_object_tree_to_hash
101
- assert_includes({"name" => { "name" => "patrick" }}, Trivial.new(Trivial.new("patrick")))
102
- end
103
-
104
-
105
- # TODO:
106
- # reports an error if either item is not a hash
107
- # improve error reporting when comparing a hash to an array and vice versa
108
- # add an enhanced version of assert equals
109
- end
@@ -1,105 +0,0 @@
1
- class TestWebCgi < Test::Unit::TestCase
2
- def set_up
3
- #@old_stderr = $stderr
4
- end
5
-
6
- def teardown
7
- $stderr = $deferr #@old_stderr
8
- @mockio = @params = @cookies = nil
9
- end
10
-
11
- def output
12
- @mockio || (@mockio = ""; @mockio)
13
- end
14
-
15
- def params
16
- @params || (@params = { "field" => "value" }; @params)
17
- end
18
-
19
- def cookies
20
- @cookies || (@cookies = { "cookie" => "monster" }; @cookies)
21
- end
22
-
23
- def options
24
- @options || (@options =
25
- { :out => output, :params => params, :cookies => cookies };
26
- @options)
27
- end
28
-
29
- def cgi
30
- @cgi || (@cgi = Web::CGI.new options; @cgi)
31
- end
32
-
33
- def test_initialize
34
- def cgi.outputer
35
- @outputer
36
- end
37
-
38
- assert_equal( output, cgi.cgd.outputer )
39
- assert_equal( params, cgi.multiple_params )
40
- assert_equal( Web::Request.normalize(cookies), cgi.cookies )
41
- end
42
-
43
- def test_output
44
- cgi << "<h1>Hello</h1>"
45
- cgi.flush
46
- assert_match( /Content-Type: text\/html\r\n/, output )
47
- assert_match( /\r\n<h1>Hello<\/h1>/, output )
48
- end
49
-
50
- def test_get_content
51
- # test blank result
52
- assert_equal( "", cgi.get_content )
53
-
54
- # test content
55
- cgi << "<h1>hola mundo!</h1>"
56
- assert_equal( "<h1>hola mundo!</h1>", cgi.get_content )
57
-
58
- # test return value, not reference
59
- content = cgi.get_content
60
- content += " some trailing garbage"
61
- assert_equal( "<h1>hola mundo!</h1>", cgi.get_content )
62
- end
63
-
64
- def test_assert_content
65
- assert_raises(Test::Unit::AssertionFailedError){
66
- cgi.assert_content "No content here"
67
- }
68
- cgi.write "Here is some content"
69
- cgi.assert_content "Here is some content"
70
- end
71
-
72
- # this is a bit incomplete -- only encodes ampersands
73
- def test_html_encode
74
- assert_equal( '&amp;', Web::html_encode( '&' ) )
75
- end
76
-
77
- def test_escape
78
- assert_equal( '%21%40%24%25%5E%26%2A%28%29', Web::escape('!@$%^&*()') )
79
- end
80
-
81
- def test_unescape
82
- assert_equal( '!@$%^&*()', Web::unescape('%21%40%24%25%5E%26%2A%28%29') )
83
- end
84
-
85
- def test_rfc1123_date
86
- assert_match( /[A-Z][a-z]{2}, \d{1,2} [A-Z][a-z]{2} \d{4} \d\d:\d\d:\d\d GMT/,
87
- Web::rfc1123_date(Time.now) )
88
- end
89
-
90
- def test_web_process_returns_the_cgi
91
- cgi = Web.process( :out => "" ){ |cgi|
92
- cgi.write "Hello World"
93
- }
94
-
95
- assert_equal( "Hello World", cgi.get_content )
96
- end
97
-
98
- def test_get_instance_of_cgi_per_output_stream
99
- out = ""
100
- assert_equal Web::CGI.create( :out => out ), Web::CGI.create( :out => out )
101
- assert_not_equal Web::CGI.create( :out => "" ), Web::CGI.create( :out => "" )
102
- end
103
- end
104
-
105
-
@@ -1,328 +0,0 @@
1
- require 'test/mod_ruby_stub'
2
-
3
- class TestRequest < Test::Unit::TestCase
4
-
5
- include Web::Parser
6
-
7
- def env
8
- ENV
9
- end
10
-
11
- def input
12
- $stdin
13
- end
14
-
15
- def assert_keys( expected, found )
16
- passes = true
17
- expected.each { |k, v|
18
- passes = false unless found[k] == v
19
- }
20
- passes
21
- end
22
-
23
- def setup
24
- @stdin_back = $stdin
25
- end
26
-
27
- def teardown
28
- ENV["QUERY_STRING" ] = nil
29
- ENV["REQUEST_METHOD"] = nil
30
- ENV["CONTENT_TYPE" ] = nil
31
- ENV["CONTENT_LENGTH"] = nil
32
- ENV["HTTP_COOKIE" ] = nil
33
- ENV["COOKIE" ] = nil
34
- $stdin = @stdin_back
35
-
36
- if defined? MOD_RUBY
37
- Object.module_eval{ remove_const :MOD_RUBY }
38
- end
39
- @cgi = nil
40
- end
41
-
42
- def params
43
- { "string" => "aString",
44
- "array[]" => ["one", "two", "three"],
45
- "file" => Web::Upload.new( File.new( "test/testfiles/text" ),
46
- "content-type",
47
- "original-filename" ) }
48
- end
49
-
50
- def cookies
51
- { "aCookie" => "Peanut Butter" }
52
- end
53
-
54
- def cgi
55
- @cgi ||= Web::CGI.new( :params => params,
56
- :cookies => cookies )
57
- end
58
-
59
- def test_mock_cookies
60
- assert_equal( Web::Parser.normalize(cookies), cgi.cookies )
61
- end
62
-
63
- def test_convenience_defaults_to_param
64
- assert_equal( "aString", cgi["string"] )
65
- end
66
-
67
- def test_convenience_returns_array
68
- assert_equal( ["one", "two", "three"], cgi["array[]"] )
69
- end
70
-
71
- def test_setting_params
72
- assert_equal( "aString", cgi["string"] )
73
- assert_equal( ["one", "two", "three"], cgi["array[]"] )
74
-
75
- cgi["array[]"] = ["four", "five", "six"]
76
- cgi["string"] = "another_string"
77
-
78
- assert_equal( "another_string", cgi["string"] )
79
- assert_equal( ["four", "five", "six"], cgi["array[]"] )
80
-
81
- end
82
-
83
- def test_single_param
84
- assert_equal( "aString", cgi.single_param("string") )
85
- assert_equal( "one,two,three", cgi.single_param("array[]") )
86
- assert_equal( "original-filename", cgi.single_param("file").original_filename )
87
-
88
- assert_equal( "", cgi.single_param("non-existent") )
89
- end
90
-
91
- def test_multiple_params
92
- assert_equal( ["aString"], cgi.multiple_params["string"] )
93
- assert_equal( ["one", "two", "three"], cgi.multiple_params["array[]"] )
94
- assert_equal( "original-filename", cgi.multiple_params["file"][0].original_filename )
95
- assert_equal( 1, cgi.multiple_params["file"].length)
96
-
97
- assert_equal( [], cgi.multiple_params["non-existent"] )
98
-
99
- Web.get_cgi.multiple_params = cgi.multiple_params
100
-
101
- assert_equal( ["aString"], Web::multiple_params["string"] )
102
- assert_equal( ["one", "two", "three"], Web::multiple_params["array[]"] )
103
- assert_equal( "original-filename", Web::multiple_params["file"][0].original_filename )
104
- assert_equal( 1, Web::multiple_params["file"].length)
105
-
106
- assert_equal( [], Web::multiple_params["non-existent"] )
107
- end
108
-
109
- def test_keys
110
- assert_equal( ["string", "array[]", "file"].sort, cgi.keys.sort )
111
- end
112
-
113
- def test_has_key?
114
- assert cgi.key?( "string" )
115
- assert cgi.key?( "array[]" )
116
- assert cgi.key?( "file" )
117
-
118
- assert ((cgi.key? "missing key") == false)
119
- end
120
-
121
- def test_parse_query_string
122
- assert_equal({}, {})
123
- assert_keys( {"query1"=>["~value1"], "query2"=>["value1", "value2"] },
124
- Web::Parser.parse_query_string('query1=%7Evalue1&query2=value1&query2=value2') )
125
- end
126
-
127
- def test_parse_nil_cookie
128
- assert_keys( {}, Web::Parser.parse_cookie(nil) )
129
- assert_equal( [], Web::Parser.parse_cookie(nil).default )
130
- end
131
-
132
- def test_parse_cookie
133
- assert_equal( {"cookie1"=>["~value1"], "cookie2"=>["value1", "value2"]}.inspect,
134
- Web::Parser.parse_cookie("cookie1=%7Evalue1; cookie2=value1; cookie2=value2").inspect )
135
- end
136
-
137
- def test_parse_multiple_cookies
138
- assert_equal( {"cookie"=>["~value1", "value 2"]}.inspect,
139
- Web::Parser.parse_cookie("cookie=%7Evalue1&value%202").inspect )
140
- end
141
-
142
- def test_parse_blank_cookie
143
- assert_keys( {"cookie"=>[]},
144
- Web::Parser.parse_cookie("cookie=") )
145
- end
146
-
147
- def test_cgi_parses_by_default
148
- ENV["REQUEST_METHOD"] = "GET"
149
- ENV["QUERY_STRING"] = "key=a%20value&anotherKey=another%20value"
150
- assert_keys( {"key" => ["a value"], "anotherKey" => ["another value"] },
151
- Web::CGI.new.multiple_params )
152
- end
153
-
154
- def test_cgi_parses_http_cookie
155
- ENV['HTTP_COOKIE'] = "cookie1=%7Evalue1; cookie2=value1; cookie2=value2"
156
- assert_keys( {"cookie1"=>["~value1"], "cookie2"=>["value1", "value2"]},
157
- Web::CGI.new.cookies )
158
- end
159
-
160
- def test_cgi_parses_cookie
161
- ENV['COOKIE'] = "cookie1=%7Evalue1; cookie2=value1; cookie2=value2"
162
-
163
- assert_keys( {"cookie1"=>["~value1"], "cookie2"=>["value1", "value2"]},
164
- Web::CGI.new.cookies )
165
- end
166
-
167
- def test_cgi_only_parses_cookies_once
168
- ENV['HTTP_COOKIE'] = "cookie1=%7Evalue1; cookie2=value1; cookie2=value2"
169
- ENV['COOKIE'] = "cookie1=%7Evalue1; cookie2=value1; cookie2=value2"
170
- assert_keys( {"cookie1"=>["~value1"], "cookie2"=>["value1", "value2"]},
171
- Web::CGI.new.cookies )
172
- end
173
-
174
- def test_parse_empty_query_string
175
- ENV["REQUEST_METHOD"] = "GET"
176
- assert_keys( {}, parse_params )
177
- end
178
-
179
- def test_parse_get_query_string
180
- ENV["REQUEST_METHOD"] = "GET"
181
- ENV["QUERY_STRING"] = "key=a%20value&anotherKey=another%20value"
182
- assert_keys( {"key" => ["a value"], "anotherKey" => ["another value"]},
183
- parse_params )
184
- end
185
-
186
- def test_parse_get_multiples
187
- ENV["REQUEST_METHOD"] = "GET"
188
- ENV["QUERY_STRING"] = "key=a%20value&key=another%20value"
189
- assert_keys( {"key" => ["a value", "another value"]}, parse_params )
190
- end
191
-
192
- def test_parse_head_like_get
193
- ENV["REQUEST_METHOD"] = "HEAD"
194
- assert_keys( {}, parse_params )
195
-
196
- teardown
197
-
198
- ENV["REQUEST_METHOD"] = "HEAD"
199
- ENV["QUERY_STRING"] = "key=a%20value&anotherKey=another%20value"
200
- assert_keys( {"key" => ["a value"], "anotherKey" => ["another value"]},
201
- parse_params )
202
- end
203
-
204
- def test_parse_post
205
- ENV["REQUEST_METHOD"] = "POST"
206
- ENV["CONTENT_LENGTH"] = "40"
207
- File.open( "test/testfiles/post.data" ){ |post_data|
208
- $stdin = post_data
209
- assert_keys( {"key" => ["a value"], "anotherKey" => ["another value"]},
210
- parse_params )
211
- }
212
- end
213
-
214
- # def test_parse_multiparts
215
- # multipart_test( 19441, "---------------------------1934113851018", "mozilla" )
216
- # multipart_test( 19483, "---------------------------22501762916738", "netscape4" )
217
- # multipart_test( 19480, "---------------------------7d21f962d00c4", "explorer5" )
218
- # end
219
-
220
- def multipart_test( content_length, boundary, browser )
221
- ENV["REQUEST_METHOD"] = "POST"
222
- ENV["CONTENT_LENGTH"] = content_length.to_s
223
- ENV["CONTENT_TYPE" ] = "multipart/form-data, boundary=#{ boundary }"
224
- File.open( "test/testfiles/#{ browser }.multipart.data" ) { |post_data|
225
- $stdin = post_data
226
- multipart_asserts
227
- }
228
- end
229
-
230
- def multipart_asserts
231
- params = Web::Request.parse
232
- assert_equal( ["key", "file"], params.keys )
233
- assert_equal( ["value"], params["key"] )
234
- assert_equal( 1, params["file"].length )
235
- assert_match( /pic hydra.png/, params["file"][0].original_filename )
236
- assert_match( /image/, params["file"][0].content_type )
237
- assert_match( /png/, params["file"][0].content_type )
238
- File.open( "test/testfiles/pic hydra.png" ) { |test_image|
239
- test_image.binmode
240
- params["file"][0].binmode
241
- assert_equal( test_image.read, params["file"][0].read )
242
- }
243
- end
244
-
245
- def test_parse_two_uploaded_files
246
-
247
- end
248
-
249
- def test_downcase_env
250
- ENV["KEY"] = "value"
251
- env = downcase_env( ENV )
252
- ["key", "kEy", "kEY", "KEY", "KEy", "Key", "keY"].each{ |k|
253
- assert( env.has_key?(k) )
254
- assert_equal( "value", env[k] )
255
- }
256
-
257
- end
258
-
259
- #-------------------------------------------------------
260
- # I've been unable to get this test to work right.
261
- # For some reason, the code inside Request.parse
262
- # can't see the MOD_RUBY constant I'm trying to set.
263
- #
264
- # Tracing statements have shown that the
265
- # if(defined?MOD_RUBY) in Request.parse returns false
266
- # but if(defined?MOD_RUBY) returns true within the
267
- # test's scope.
268
- #-------------------------------------------------------
269
- # def test_parse_get_with_mod_ruby
270
- # Object.const_set( :MOD_RUBY, true )
271
- # assert_equal( {"key" => ["some value"], "anotherKey" => ["someother value"]},
272
- # Web::Request.parse )
273
- # end
274
-
275
- # this test added so I can test the effect of above apart from the cause
276
- #def test_mod_ruby_query_string
277
- # assert_equal( "key=some%20value&anotherKey=someother%20value",
278
- # Web::CGD.mod_ruby_query_string )
279
- # end
280
-
281
- end
282
-
283
- class TestUpload < Test::Unit::TestCase
284
- attr_reader :original_filename, :content_type, :test_file, :move_to
285
- def setup
286
- @test_file = "test/testfiles/pic hydra.png"
287
- @original_filename = "c:\\workspace\\hydra.png"
288
- @content_type = "image/png"
289
- @move_to = "test/testfiles/moved_hydra.png"
290
- end
291
-
292
- def test_initialize
293
- File.open( test_file ) { |file|
294
- upload = Web::Upload.new( file, content_type, original_filename )
295
-
296
- assert_equal( content_type, upload.content_type )
297
- assert_equal( original_filename, upload.original_filename )
298
- }
299
- end
300
-
301
- def test_initialize_with_filename
302
- upload = Web::Upload.new( test_file, content_type, original_filename )
303
-
304
- assert_equal( File.open( test_file, "r" ) { |f| f.read }, upload.read )
305
- end
306
-
307
- def test_read_open_and_write_file
308
- expected_contents = File.open( test_file, "r" ) { |f| f.read }
309
-
310
- upload = Web::Upload.new( test_file, content_type, original_filename )
311
-
312
- assert_equal( expected_contents, upload.read )
313
-
314
- upload.open{ |io|
315
- assert_equal( expected_contents, io.read )
316
- }
317
-
318
- begin
319
- upload.write_to_file( move_to )
320
- File.open( move_to, "r" ) { |io|
321
- assert_equal( expected_contents, io.read )
322
- }
323
- ensure
324
- File.delete( move_to )
325
- end
326
-
327
- end
328
- end