qwikdoc 0.0.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 (335) hide show
  1. data/.gitignore +5 -0
  2. data/.rspec +2 -0
  3. data/CHANGES +3 -0
  4. data/COPYING +340 -0
  5. data/Gemfile +3 -0
  6. data/README.md +10 -0
  7. data/Rakefile +10 -0
  8. data/TextFormattingRules +137 -0
  9. data/TextFormattingRules.ja +143 -0
  10. data/bin/qwikdoc +34 -0
  11. data/lib/qwik_doc.rb +15 -0
  12. data/lib/qwik_doc/hack.rb +184 -0
  13. data/qwikdoc.gemspec +26 -0
  14. data/spec/qwik_doc_spec.rb +305 -0
  15. data/spec/spec_helper.rb +12 -0
  16. data/vendor/qwik/Makefile +63 -0
  17. data/vendor/qwik/Rakefile +17 -0
  18. data/vendor/qwik/act-aa.rb +83 -0
  19. data/vendor/qwik/act-archive.rb +386 -0
  20. data/vendor/qwik/act-attach.rb +304 -0
  21. data/vendor/qwik/act-backup.rb +236 -0
  22. data/vendor/qwik/act-basic.rb +325 -0
  23. data/vendor/qwik/act-book.rb +161 -0
  24. data/vendor/qwik/act-calc.rb +371 -0
  25. data/vendor/qwik/act-charset.rb +251 -0
  26. data/vendor/qwik/act-christel.rb +112 -0
  27. data/vendor/qwik/act-chronology.rb +149 -0
  28. data/vendor/qwik/act-code.rb +155 -0
  29. data/vendor/qwik/act-comment.rb +554 -0
  30. data/vendor/qwik/act-config.rb +49 -0
  31. data/vendor/qwik/act-counter.rb +125 -0
  32. data/vendor/qwik/act-day.rb +96 -0
  33. data/vendor/qwik/act-describe.rb +135 -0
  34. data/vendor/qwik/act-diary.rb +109 -0
  35. data/vendor/qwik/act-edit.rb +317 -0
  36. data/vendor/qwik/act-embed-html.rb +296 -0
  37. data/vendor/qwik/act-emode.rb +150 -0
  38. data/vendor/qwik/act-event.rb +187 -0
  39. data/vendor/qwik/act-file.rb +303 -0
  40. data/vendor/qwik/act-files.rb +771 -0
  41. data/vendor/qwik/act-getpass.rb +295 -0
  42. data/vendor/qwik/act-history.rb +136 -0
  43. data/vendor/qwik/act-html.rb +204 -0
  44. data/vendor/qwik/act-httpauth.rb +147 -0
  45. data/vendor/qwik/act-include.rb +142 -0
  46. data/vendor/qwik/act-interwiki.rb +189 -0
  47. data/vendor/qwik/act-isearch.rb +109 -0
  48. data/vendor/qwik/act-keywords.rb +137 -0
  49. data/vendor/qwik/act-lang.rb +81 -0
  50. data/vendor/qwik/act-license.rb +63 -0
  51. data/vendor/qwik/act-list.rb +287 -0
  52. data/vendor/qwik/act-login.rb +410 -0
  53. data/vendor/qwik/act-logout.rb +60 -0
  54. data/vendor/qwik/act-mail.rb +159 -0
  55. data/vendor/qwik/act-map.rb +292 -0
  56. data/vendor/qwik/act-md5.rb +42 -0
  57. data/vendor/qwik/act-mdlb.rb +741 -0
  58. data/vendor/qwik/act-media.rb +416 -0
  59. data/vendor/qwik/act-member.rb +157 -0
  60. data/vendor/qwik/act-menu.rb +142 -0
  61. data/vendor/qwik/act-metadata.rb +323 -0
  62. data/vendor/qwik/act-mlsubmitform.rb +49 -0
  63. data/vendor/qwik/act-monitor.rb +167 -0
  64. data/vendor/qwik/act-new.rb +418 -0
  65. data/vendor/qwik/act-pagelist.rb +248 -0
  66. data/vendor/qwik/act-password.rb +145 -0
  67. data/vendor/qwik/act-plan.rb +210 -0
  68. data/vendor/qwik/act-povray.rb +230 -0
  69. data/vendor/qwik/act-presen.rb +380 -0
  70. data/vendor/qwik/act-redirect.rb +133 -0
  71. data/vendor/qwik/act-ring.rb +1071 -0
  72. data/vendor/qwik/act-rrefs.rb +255 -0
  73. data/vendor/qwik/act-ruby.rb +116 -0
  74. data/vendor/qwik/act-sample.rb +170 -0
  75. data/vendor/qwik/act-save.rb +295 -0
  76. data/vendor/qwik/act-schedule.rb +374 -0
  77. data/vendor/qwik/act-search.rb +180 -0
  78. data/vendor/qwik/act-searchwords.rb +51 -0
  79. data/vendor/qwik/act-sendpass.rb +83 -0
  80. data/vendor/qwik/act-site.rb +89 -0
  81. data/vendor/qwik/act-sitebackup.rb +419 -0
  82. data/vendor/qwik/act-sitelog.rb +118 -0
  83. data/vendor/qwik/act-smil.rb +299 -0
  84. data/vendor/qwik/act-status.rb +220 -0
  85. data/vendor/qwik/act-style.rb +608 -0
  86. data/vendor/qwik/act-table.rb +263 -0
  87. data/vendor/qwik/act-tableform.rb +241 -0
  88. data/vendor/qwik/act-tag.rb +103 -0
  89. data/vendor/qwik/act-text.rb +70 -0
  90. data/vendor/qwik/act-textarea.rb +164 -0
  91. data/vendor/qwik/act-theme.rb +346 -0
  92. data/vendor/qwik/act-toc.rb +112 -0
  93. data/vendor/qwik/act-typekey.rb +198 -0
  94. data/vendor/qwik/act-under-const.rb +94 -0
  95. data/vendor/qwik/act-webservice.rb +321 -0
  96. data/vendor/qwik/act-wema.rb +558 -0
  97. data/vendor/qwik/act-wysiwyg.rb +238 -0
  98. data/vendor/qwik/action.rb +325 -0
  99. data/vendor/qwik/autoreload.rb +98 -0
  100. data/vendor/qwik/bench-bench.rb +28 -0
  101. data/vendor/qwik/bench-emode.rb +47 -0
  102. data/vendor/qwik/bench-format-xml.rb +70 -0
  103. data/vendor/qwik/bench-large-table.rb +62 -0
  104. data/vendor/qwik/bench-md5.rb +14 -0
  105. data/vendor/qwik/bench-module-session.rb +19 -0
  106. data/vendor/qwik/bench-page.rb +50 -0
  107. data/vendor/qwik/bench-s-md5.rb +28 -0
  108. data/vendor/qwik/bench-session.rb +25 -0
  109. data/vendor/qwik/bench-textformat.rb +31 -0
  110. data/vendor/qwik/catalog-factory.rb +91 -0
  111. data/vendor/qwik/catalog-ja.rb +479 -0
  112. data/vendor/qwik/catalog-ml-ja.rb +145 -0
  113. data/vendor/qwik/check-act-monitor.rb +112 -0
  114. data/vendor/qwik/check-act-monitor2.rb +46 -0
  115. data/vendor/qwik/check-act-theme.rb +27 -0
  116. data/vendor/qwik/check-event.rb +112 -0
  117. data/vendor/qwik/check-event2.rb +55 -0
  118. data/vendor/qwik/check-htree-rexml.rb +77 -0
  119. data/vendor/qwik/check-htree.rb +51 -0
  120. data/vendor/qwik/check-libxml.rb +135 -0
  121. data/vendor/qwik/check-many-pages.rb +47 -0
  122. data/vendor/qwik/check-monitor.rb +33 -0
  123. data/vendor/qwik/check-observer.rb +67 -0
  124. data/vendor/qwik/check-server.rb +61 -0
  125. data/vendor/qwik/check-uuencode.rb +33 -0
  126. data/vendor/qwik/check-webdav.rb +65 -0
  127. data/vendor/qwik/check-xml-xpath.rb +27 -0
  128. data/vendor/qwik/common-backtrace.rb +94 -0
  129. data/vendor/qwik/common-basic.rb +111 -0
  130. data/vendor/qwik/common-condition.rb +142 -0
  131. data/vendor/qwik/common-error.rb +48 -0
  132. data/vendor/qwik/common-gettext.rb +50 -0
  133. data/vendor/qwik/common-javascript.rb +45 -0
  134. data/vendor/qwik/common-notice.rb +132 -0
  135. data/vendor/qwik/common-plain.rb +105 -0
  136. data/vendor/qwik/common-plugin.rb +111 -0
  137. data/vendor/qwik/common-res.rb +76 -0
  138. data/vendor/qwik/common-resolve.rb +92 -0
  139. data/vendor/qwik/common-send.rb +171 -0
  140. data/vendor/qwik/common-session.rb +139 -0
  141. data/vendor/qwik/common-surface.rb +261 -0
  142. data/vendor/qwik/common-url.rb +90 -0
  143. data/vendor/qwik/compat/Makefile +12 -0
  144. data/vendor/qwik/compat/add_load_path.rb +1 -0
  145. data/vendor/qwik/config.rb +299 -0
  146. data/vendor/qwik/db-b-backup.rb +142 -0
  147. data/vendor/qwik/db-backup.rb +184 -0
  148. data/vendor/qwik/db-berkeley.rb +306 -0
  149. data/vendor/qwik/db-filesystem.rb +305 -0
  150. data/vendor/qwik/db-indexer.rb +154 -0
  151. data/vendor/qwik/db-searchwords.rb +238 -0
  152. data/vendor/qwik/description-ja.rb +267 -0
  153. data/vendor/qwik/description.rb +256 -0
  154. data/vendor/qwik/dev-add-copyright.rb +23 -0
  155. data/vendor/qwik/dev-backup.rb +24 -0
  156. data/vendor/qwik/dev-bench.rb +175 -0
  157. data/vendor/qwik/dev-calctime.rb +52 -0
  158. data/vendor/qwik/dev-css-compressor.rb +60 -0
  159. data/vendor/qwik/dev-extract-catalog.rb +102 -0
  160. data/vendor/qwik/dev-js-compressor.rb +73 -0
  161. data/vendor/qwik/dev-release.rb +235 -0
  162. data/vendor/qwik/dev-replace.rb +353 -0
  163. data/vendor/qwik/dev-sendmail.rb +25 -0
  164. data/vendor/qwik/farm.rb +283 -0
  165. data/vendor/qwik/gettext.rb +56 -0
  166. data/vendor/qwik/group-cond.rb +157 -0
  167. data/vendor/qwik/group-config.rb +247 -0
  168. data/vendor/qwik/group-confirm.rb +147 -0
  169. data/vendor/qwik/group-db.rb +326 -0
  170. data/vendor/qwik/group-mail.rb +195 -0
  171. data/vendor/qwik/group-member.rb +307 -0
  172. data/vendor/qwik/group-sendmail.rb +231 -0
  173. data/vendor/qwik/group-site.rb +374 -0
  174. data/vendor/qwik/group-sweep.rb +63 -0
  175. data/vendor/qwik/group.rb +157 -0
  176. data/vendor/qwik/helper.rb +6 -0
  177. data/vendor/qwik/html-generator.rb +104 -0
  178. data/vendor/qwik/html-to-wabisabi.rb +149 -0
  179. data/vendor/qwik/htree-diff.rb +87 -0
  180. data/vendor/qwik/htree-format-xml.rb +57 -0
  181. data/vendor/qwik/htree-generator.rb +144 -0
  182. data/vendor/qwik/htree-get.rb +251 -0
  183. data/vendor/qwik/htree-html-generator.rb +179 -0
  184. data/vendor/qwik/htree-template.rb +263 -0
  185. data/vendor/qwik/htree-to-wabisabi.rb +171 -0
  186. data/vendor/qwik/loadlib.rb +79 -0
  187. data/vendor/qwik/logger.rb +115 -0
  188. data/vendor/qwik/mail-body.rb +171 -0
  189. data/vendor/qwik/mail-header.rb +474 -0
  190. data/vendor/qwik/mail-multipart.rb +193 -0
  191. data/vendor/qwik/mail-parse.rb +147 -0
  192. data/vendor/qwik/mail.rb +341 -0
  193. data/vendor/qwik/mailaddress.rb +83 -0
  194. data/vendor/qwik/mdlb-model.rb +81 -0
  195. data/vendor/qwik/mdlb-sample.rb +324 -0
  196. data/vendor/qwik/ml-catalog-factory.rb +27 -0
  197. data/vendor/qwik/ml-exception.rb +15 -0
  198. data/vendor/qwik/ml-generator.rb +28 -0
  199. data/vendor/qwik/ml-gettext.rb +137 -0
  200. data/vendor/qwik/ml-logger.rb +82 -0
  201. data/vendor/qwik/ml-memory.rb +65 -0
  202. data/vendor/qwik/ml-msg-validator.rb +86 -0
  203. data/vendor/qwik/ml-processor.rb +609 -0
  204. data/vendor/qwik/ml-quickml-server.rb +122 -0
  205. data/vendor/qwik/ml-sendmail.rb +0 -0
  206. data/vendor/qwik/ml-server.rb +107 -0
  207. data/vendor/qwik/ml-session.rb +348 -0
  208. data/vendor/qwik/ml-sweeper.rb +101 -0
  209. data/vendor/qwik/mock-logger.rb +65 -0
  210. data/vendor/qwik/mock-sendmail.rb +78 -0
  211. data/vendor/qwik/mock-socket.rb +82 -0
  212. data/vendor/qwik/modulobe.rb +406 -0
  213. data/vendor/qwik/mongrel-server.rb +72 -0
  214. data/vendor/qwik/page-files.rb +249 -0
  215. data/vendor/qwik/page-generate.rb +82 -0
  216. data/vendor/qwik/page-get.rb +262 -0
  217. data/vendor/qwik/page-images.rb +168 -0
  218. data/vendor/qwik/page-put.rb +128 -0
  219. data/vendor/qwik/page-rrefs.rb +154 -0
  220. data/vendor/qwik/page-title.rb +0 -0
  221. data/vendor/qwik/page-wikidb.rb +234 -0
  222. data/vendor/qwik/page.rb +67 -0
  223. data/vendor/qwik/pages.rb +444 -0
  224. data/vendor/qwik/parse-plugin.rb +249 -0
  225. data/vendor/qwik/parser-emode.rb +116 -0
  226. data/vendor/qwik/parser-inline.rb +273 -0
  227. data/vendor/qwik/parser.rb +350 -0
  228. data/vendor/qwik/password.rb +183 -0
  229. data/vendor/qwik/periodic.rb +79 -0
  230. data/vendor/qwik/qp.rb +56 -0
  231. data/vendor/qwik/qwik-service.rb +341 -0
  232. data/vendor/qwik/qwik.rb +5 -0
  233. data/vendor/qwik/qwikweb-adduser.rb +34 -0
  234. data/vendor/qwik/qwikweb-catalog-validator.rb +110 -0
  235. data/vendor/qwik/qwikweb-incgen.rb +28 -0
  236. data/vendor/qwik/qwikweb-makesite.rb +41 -0
  237. data/vendor/qwik/qwikweb-server.rb +44 -0
  238. data/vendor/qwik/qwikweb-showpassword.rb +26 -0
  239. data/vendor/qwik/qwikweb-watchlog.rb +67 -0
  240. data/vendor/qwik/request-path.rb +304 -0
  241. data/vendor/qwik/request-ua.rb +76 -0
  242. data/vendor/qwik/request-webrick.rb +81 -0
  243. data/vendor/qwik/request.rb +91 -0
  244. data/vendor/qwik/resolve-tdiary.rb +292 -0
  245. data/vendor/qwik/resolve.rb +121 -0
  246. data/vendor/qwik/response.rb +228 -0
  247. data/vendor/qwik/server-memory.rb +57 -0
  248. data/vendor/qwik/server-webrick.rb +102 -0
  249. data/vendor/qwik/server.rb +252 -0
  250. data/vendor/qwik/site-config.rb +149 -0
  251. data/vendor/qwik/site-db.rb +136 -0
  252. data/vendor/qwik/site-event.rb +162 -0
  253. data/vendor/qwik/site-files.rb +86 -0
  254. data/vendor/qwik/site-group.rb +103 -0
  255. data/vendor/qwik/site-index.rb +47 -0
  256. data/vendor/qwik/site-log.rb +64 -0
  257. data/vendor/qwik/site-member.rb +230 -0
  258. data/vendor/qwik/site-monitor.rb +97 -0
  259. data/vendor/qwik/site-pages.rb +62 -0
  260. data/vendor/qwik/site-plan.rb +139 -0
  261. data/vendor/qwik/site-report.rb +282 -0
  262. data/vendor/qwik/site-resolve.rb +230 -0
  263. data/vendor/qwik/site-rrefs.rb +18 -0
  264. data/vendor/qwik/site-search.rb +180 -0
  265. data/vendor/qwik/site-timeline.rb +153 -0
  266. data/vendor/qwik/site-url.rb +189 -0
  267. data/vendor/qwik/site.rb +76 -0
  268. data/vendor/qwik/smil-time.rb +105 -0
  269. data/vendor/qwik/smtp-session.rb +331 -0
  270. data/vendor/qwik/template-generator.rb +149 -0
  271. data/vendor/qwik/template.rb +85 -0
  272. data/vendor/qwik/test-common.rb +10 -0
  273. data/vendor/qwik/test-ml-info.rb +225 -0
  274. data/vendor/qwik/test-module-ml.rb +142 -0
  275. data/vendor/qwik/test-module-path.rb +110 -0
  276. data/vendor/qwik/test-module-public.rb +70 -0
  277. data/vendor/qwik/test-module-server.rb +98 -0
  278. data/vendor/qwik/test-module-session.rb +264 -0
  279. data/vendor/qwik/test-module-suite.rb +91 -0
  280. data/vendor/qwik/test-ms-applemail.rb +59 -0
  281. data/vendor/qwik/test-ms-attach.rb +174 -0
  282. data/vendor/qwik/test-ms-basic.rb +40 -0
  283. data/vendor/qwik/test-ms-close.rb +35 -0
  284. data/vendor/qwik/test-ms-confirm.rb +75 -0
  285. data/vendor/qwik/test-ms-ignore-spam.rb +57 -0
  286. data/vendor/qwik/test-ms-japanese.rb +97 -0
  287. data/vendor/qwik/test-ms-jfilename.rb +82 -0
  288. data/vendor/qwik/test-ms-large.rb +58 -0
  289. data/vendor/qwik/test-ms-member.rb +103 -0
  290. data/vendor/qwik/test-ms-multipart.rb +84 -0
  291. data/vendor/qwik/test-ms-org.rb +129 -0
  292. data/vendor/qwik/test-ms-plan.rb +130 -0
  293. data/vendor/qwik/test-ms-post.rb +53 -0
  294. data/vendor/qwik/test-ms-quopri.rb +76 -0
  295. data/vendor/qwik/test-sub-quopri.rb +45 -0
  296. data/vendor/qwik/test-submit-base64.rb +59 -0
  297. data/vendor/qwik/test-submit-forward.rb +61 -0
  298. data/vendor/qwik/test-submit-html-mail.rb +52 -0
  299. data/vendor/qwik/test-submit-japanese.rb +135 -0
  300. data/vendor/qwik/test-submit-jfilename.rb +144 -0
  301. data/vendor/qwik/test-submit-uuencode.rb +71 -0
  302. data/vendor/qwik/test-suite-all.rb +8 -0
  303. data/vendor/qwik/test-suite-basic.rb +9 -0
  304. data/vendor/qwik/test-suite-ml.rb +9 -0
  305. data/vendor/qwik/test-typekey.rb +64 -0
  306. data/vendor/qwik/testunit.rb +45 -0
  307. data/vendor/qwik/tokenizer-inline.rb +294 -0
  308. data/vendor/qwik/tokenizer.rb +332 -0
  309. data/vendor/qwik/typekey.rb +160 -0
  310. data/vendor/qwik/util-basic.rb +135 -0
  311. data/vendor/qwik/util-charset.rb +332 -0
  312. data/vendor/qwik/util-css.rb +56 -0
  313. data/vendor/qwik/util-csv-tokenizer.rb +113 -0
  314. data/vendor/qwik/util-filename.rb +112 -0
  315. data/vendor/qwik/util-pathname.rb +202 -0
  316. data/vendor/qwik/util-pid.rb +58 -0
  317. data/vendor/qwik/util-safe.rb +67 -0
  318. data/vendor/qwik/util-sendmail.rb +273 -0
  319. data/vendor/qwik/util-string.rb +203 -0
  320. data/vendor/qwik/util-time.rb +125 -0
  321. data/vendor/qwik/util-webrick.rb +176 -0
  322. data/vendor/qwik/version.rb +11 -0
  323. data/vendor/qwik/wabisabi-basic.rb +163 -0
  324. data/vendor/qwik/wabisabi-diff.rb +130 -0
  325. data/vendor/qwik/wabisabi-format-xml.rb +310 -0
  326. data/vendor/qwik/wabisabi-generator.rb +262 -0
  327. data/vendor/qwik/wabisabi-index.rb +174 -0
  328. data/vendor/qwik/wabisabi-table.rb +212 -0
  329. data/vendor/qwik/wabisabi-template.rb +295 -0
  330. data/vendor/qwik/wabisabi-to-htree.rb +111 -0
  331. data/vendor/qwik/wabisabi-to-wiki.rb +690 -0
  332. data/vendor/qwik/wabisabi-traverse.rb +207 -0
  333. data/vendor/qwik/wabisabi-validator.rb +116 -0
  334. data/vendor/qwik/wabisabi.rb +5 -0
  335. metadata +416 -0
@@ -0,0 +1,61 @@
1
+ # Copyright (C) 2003-2006 Kouichirou Eto, All rights reserved.
2
+ # This is free software with ABSOLUTELY NO WARRANTY.
3
+ # You can redistribute it and/or modify it under the terms of the GNU GPL 2.
4
+
5
+ $LOAD_PATH.unshift '..' unless $LOAD_PATH.include? '..'
6
+ require 'qwik/test-module-ml'
7
+
8
+ class TestSubmitForward < Test::Unit::TestCase
9
+ include TestModuleML
10
+
11
+ def test_forward_mail
12
+ qml = QuickML::Group.new(@ml_config, 'test@example.com')
13
+ qml.setup_test_config
14
+ mail = post_mail(qml) {
15
+ "Date: Thu, 28 Apr 2005 07:17:20 +0900
16
+ From: bob@example.net
17
+ To: test@example.com
18
+ Subject: [Fwd: test mail]
19
+ Content-Type: multipart/mixed; boundary=\"------------080009010806060401020001\"
20
+
21
+ This is a multi-part message in MIME format.
22
+ --------------080009010806060401020001
23
+ Content-Type: text/plain; charset=ISO-2022-JP
24
+ Content-Transfer-Encoding: 7bit
25
+
26
+ I forward the test mail.
27
+ --------------080009010806060401020001
28
+ Content-Type: message/rfc822; name=\"test mail\"
29
+ Content-Transfer-Encoding: 7bit
30
+ Content-Disposition: inline; filename=\"test mail\"
31
+
32
+ From user@example.net Fri Apr 22 11:31:51 2005
33
+ From: user@example.net
34
+ Subject: test mail
35
+ To: test@expample.com
36
+
37
+ This is a test.
38
+
39
+ --------------080009010806060401020001--
40
+ " }
41
+ ok_eq("[Fwd: test mail]", mail['Subject'])
42
+ ok_eq("[Fwd: test mail]", @site['1'].get_title)
43
+ ok_eq("* [Fwd: test mail]
44
+ {{mail(bob@example.net,0)
45
+ I forward the test mail.
46
+
47
+ {{file(test mail)}}
48
+ }}
49
+ ", @site["1"].load)
50
+ ok_eq(true, @site.files('1').exist?('test mail'))
51
+ str = @site.files('1').path('test mail').read
52
+ ok_eq("From user@example.net Fri Apr 22 11:31:51 2005
53
+ From: user@example.net
54
+ Subject: test mail
55
+ To: test@expample.com
56
+
57
+ This is a test.
58
+
59
+ ", str)
60
+ end
61
+ end
@@ -0,0 +1,52 @@
1
+ # Copyright (C) 2003-2006 Kouichirou Eto, All rights reserved.
2
+ # This is free software with ABSOLUTELY NO WARRANTY.
3
+ # You can redistribute it and/or modify it under the terms of the GNU GPL 2.
4
+
5
+ $LOAD_PATH.unshift '..' unless $LOAD_PATH.include? '..'
6
+ require 'qwik/test-module-ml'
7
+
8
+ class TestSubmitHtmlMail < Test::Unit::TestCase
9
+ include TestModuleML
10
+
11
+ def test_all
12
+ qml = QuickML::Group.new(@ml_config, 'test@example.com')
13
+ qml.setup_test_config
14
+ mail = post_mail(qml) {
15
+ "Date: Mon, 1 Aug 2005 11:06:12 +0900
16
+ To: test@example.com
17
+ From: bob@example.net
18
+ Subject: HtmlMail
19
+ Content-Type: multipart/alternative;
20
+ boundary=\"============_-1089260510==_ma============\"
21
+
22
+ --============_-1089260510==_ma============
23
+ Content-Type: text/plain; charset='iso-2022-jp'
24
+ Content-Transfer-Encoding: 7bit
25
+
26
+ �ł��B
27
+ --============_-1089260510==_ma============
28
+ Content-Type: text/html; charset='iso-2022-jp'
29
+ Content-Transfer-Encoding: 7bit
30
+
31
+ <!doctype html public \"-//W3C//DTD W3 HTML//EN\">
32
+ <html><head><style type=\"text/css\"><!--
33
+ blockquote, dl, ul, ol, li { padding-top: 0 ; padding-bottom: 0 }
34
+ --></style><title>George Legady</title></head><body>
35
+ <div>�ł��B<br>
36
+ </div>
37
+ </body>
38
+ </html>
39
+ --============_-1089260510==_ma============--
40
+ " }
41
+
42
+ ok_eq("============_-1089260510==_ma============", mail.boundary)
43
+
44
+ mail1 = QuickML::Mail.new
45
+ mail1.read(mail.parts[1])
46
+ ok_eq('text/html', mail1.content_type)
47
+
48
+ page = @site['HtmlMail']
49
+ ok_eq('HtmlMail', page.get_title)
50
+ ok_eq("* HtmlMail\n{{mail(bob@example.net,0)\n�ł��B\n}}\n", page.load)
51
+ end
52
+ end
@@ -0,0 +1,135 @@
1
+ # -*- coding: shift_jis -*-
2
+ # Copyright (C) 2003-2006 Kouichirou Eto, All rights reserved.
3
+ # This is free software with ABSOLUTELY NO WARRANTY.
4
+ # You can redistribute it and/or modify it under the terms of the GNU GPL 2.
5
+
6
+ $LOAD_PATH.unshift '..' unless $LOAD_PATH.include? '..'
7
+ require 'qwik/test-module-ml'
8
+ if $0 == __FILE__
9
+ require 'qwik/server-memory'
10
+ require 'qwik/farm'
11
+ require 'qwik/group-site'
12
+ require 'qwik/group'
13
+ require 'qwik/password'
14
+ $test = true
15
+ end
16
+
17
+ class TestSubmitJapanese < Test::Unit::TestCase
18
+ include TestModuleML
19
+
20
+ def test_submit_1
21
+ qml = QuickML::Group.new(@ml_config, 'test@example.com')
22
+ qml.setup_test_config
23
+ mail = post_mail(qml) { # 1st mail
24
+ 'Date: Mon, 3 Feb 2001 12:34:56 +0900
25
+ From: "Test User" <bob@example.net>
26
+ To: "Test Mailing List" <test@example.com>
27
+ Subject: Re: [test:1] �e�X�g
28
+
29
+ �e�B
30
+ ' }
31
+ ok_eq("�e�X�g", @site['1'].get_title)
32
+ ok_eq("* �e�X�g\n{{mail(bob@example.net,0)\n�e�B\n}}\n", @site['1'].load)
33
+
34
+ mail = post_mail(qml) { # 2nd mail
35
+ 'Date: Mon, 4 Feb 2001 12:34:56 +0900
36
+ From: "Guest User" <guest@example.com>
37
+ To: "Test Mailing List" <test@example.com>
38
+ Subject: Re: [test:2] �e�X�g
39
+
40
+ ������e�B
41
+ ' }
42
+ ok_eq("�e�X�g", @site['1'].get_title)
43
+ ok_eq("* �e�X�g\n{{mail(bob@example.net,0)\n�e�B\n}}\n{{mail(guest@example.com,0)\n������e�B\n}}\n", @site['1'].load) # the new mail is added.
44
+ end
45
+
46
+ def test_submit_with_attach_image
47
+ qml = QuickML::Group.new(@ml_config, 'test@example.com')
48
+ qml.setup_test_config
49
+ mail = post_mail(qml) {
50
+ "Date: Sun, 01 Aug 2004 12:34:56 +0900
51
+ From: bob@example.net
52
+ To: test@example.com
53
+ Subject: =?iso-2022-jp?B?GyRCRTpJVSVGJTklSBsoQg==?=
54
+ Cc: guest@example.com
55
+ Message-Id: <nosuchmessageid@example.com>
56
+ MIME-Version: 1.0
57
+ Content-Type: multipart/mixed; boundary=\"------_410DDC04C7AD046D3600_MULTIPART_MIXED_\"
58
+ Content-Transfer-Encoding: 7bit
59
+
60
+ --------_410DDC04C7AD046D3600_MULTIPART_MIXED_
61
+ Content-Type: text/plain; charset='ISO-2022-JP'
62
+ Content-Transfer-Encoding: 7bit
63
+
64
+ �e�B
65
+ --------_410DDC04C7AD046D3600_MULTIPART_MIXED_
66
+ Content-Type: image/png; name=\"1x1.png\"
67
+ Content-Disposition: attachment;
68
+ filename=\"1x1.png\"
69
+ Content-Transfer-Encoding: base64
70
+
71
+ iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR42mP4//8/AAX+Av4zEpUU
72
+ AAAAAElFTkSuQmCC
73
+
74
+ --------_410DDC04C7AD046D3600_MULTIPART_MIXED_--
75
+ " }
76
+ page = @site['1']
77
+ ok_eq("�Y�t�e�X�g", page.get_title)
78
+ ok_eq("* �Y�t�e�X�g
79
+ {{mail(bob@example.net,0)
80
+ �e�B
81
+
82
+ {{file(1x1.png)}}
83
+ }}
84
+ ", page.load)
85
+ ok_eq(true, @site.files('1').exist?('1x1.png'))
86
+ end
87
+
88
+ def test_cp932
89
+ qml = QuickML::Group.new(@ml_config, 'test@example.com')
90
+ qml.setup_test_config
91
+
92
+ mail = QuickML::Mail.new
93
+ mail.read(
94
+ 'From: bob@example.net
95
+ To: test@example.com
96
+ Content-Type: text/plain;
97
+ charset=CP932;
98
+ format=flowed
99
+ Content-Transfer-Encoding: base64
100
+ Mime-Version: 1.0 (Apple Message framework v926)
101
+ Subject: [test:27] =?CP932?Q?Re: __=83e=83X=83g?=
102
+ Date: Fri, 31 Oct 2008 17:08:25 +0900
103
+
104
+ h0A=
105
+ ')
106
+ mail.store_addresses
107
+ qml.site_post(mail, true)
108
+ ok_eq("\203e\203X\203g", @site['1'].get_title)
109
+ ok_eq("* \203e\203X\203g\n{{mail(bob@example.net,0)\n\207@\n}}\n", @site['1'].load)
110
+ end
111
+
112
+
113
+ def test_cp932_quoted_printable
114
+ qml = QuickML::Group.new(@ml_config, 'test@example.com')
115
+ qml.setup_test_config
116
+
117
+ mail = QuickML::Mail.new
118
+ mail.read(
119
+ 'From: bob@example.net
120
+ To: smd@qwik.jp
121
+ Content-Type: text/plain; charset=CP932; format=flowed
122
+ Content-Transfer-Encoding: quoted-printable
123
+ Mime-Version: 1.0 (Apple Message framework v926)
124
+ Date: Tue, 4 Nov 2008 18:19:37 +0900
125
+ Subject: test
126
+
127
+ =95=D4=90M
128
+ ')
129
+ mail.store_addresses
130
+ qml.site_post(mail, true)
131
+ ok_eq("test", @site['test'].get_title)
132
+ ok_eq("* test\n{{mail(bob@example.net,0)\n�ԐM\n}}\n", @site['test'].load)
133
+ end
134
+ end
135
+
@@ -0,0 +1,144 @@
1
+ # Copyright (C) 2003-2006 Kouichirou Eto, All rights reserved.
2
+ # This is free software with ABSOLUTELY NO WARRANTY.
3
+ # You can redistribute it and/or modify it under the terms of the GNU GPL 2.
4
+
5
+ $LOAD_PATH.unshift '..' unless $LOAD_PATH.include? '..'
6
+ require 'qwik/test-module-session'
7
+ require 'qwik/test-module-ml'
8
+ #require 'qwik/quickml'
9
+
10
+ class TestSubmitForwardJapanese < Test::Unit::TestCase
11
+ include TestModuleML
12
+
13
+ def test_dummy
14
+ end
15
+
16
+ def nutest_japanese_file_name
17
+ qml = QuickML::Group.new(@ml_config, 'test@example.com')
18
+ qml.setup_test_config
19
+
20
+ mail = post_mail(qml) {
21
+ "Date: Fri, 20 May 2005 15:21:55 +0900
22
+ From: bob@example.net
23
+ To: test@example.com
24
+ Subject: Attach a file with japanese file name
25
+ MIME-Version: 1.0
26
+ Content-Type: multipart/mixed; boundary=\"------_428D7194605E049A05F8_MULTIPART_MIXED_\"
27
+ Content-Transfer-Encoding: 7bit
28
+
29
+ --------_428D7194605E049A05F8_MULTIPART_MIXED_
30
+ Content-Type: text/plain; charset='ISO-2022-JP'
31
+ Content-Transfer-Encoding: 7bit
32
+
33
+ test.
34
+
35
+ --------_428D7194605E049A05F8_MULTIPART_MIXED_
36
+ Content-Type: application/octet-stream;
37
+ name=\"=?ISO-2022-JP?B?MTdmeRskQk09OzslMyE8JUkkTjtYRGokSxsoQg==?=
38
+ =?ISO-2022-JP?B?GyRCJEQkJCRGGyhCLmRvYw==?=\"
39
+ Content-Disposition: attachment;
40
+ filename=\"=?ISO-2022-JP?B?MTdmeRskQk09OzslMyE8JUkkTjtYRGokSxsoQg==?=
41
+ =?ISO-2022-JP?B?GyRCJEQkJCRGGyhCLmRvYw==?=\"
42
+ Content-Transfer-Encoding: base64
43
+
44
+ 0M8R4KGxGuEAAAAAAAAAAAAAAAAAAAAAPgADAP7/CQAGAAAAAAAAAAAAAAABAAAAMAAAAAAAAAAA
45
+ AAAAAA==
46
+
47
+
48
+
49
+ --------_428D7194605E049A05F8_MULTIPART_MIXED_
50
+ Content-Type: application/octet-stream;
51
+ name=\"=?ISO-2022-JP?B?GyRCPnBKc04uJUclNiUkJXMlMCVrITwlVxsoQg==?=
52
+ =?ISO-2022-JP?B?Lnhscw==?=\"
53
+ Content-Disposition: attachment;
54
+ filename=\"=?ISO-2022-JP?B?GyRCPnBKc04uJUclNiUkJXMlMCVrITwlVxsoQg==?=
55
+ =?ISO-2022-JP?B?Lnhscw==?=\"
56
+ Content-Transfer-Encoding: base64
57
+
58
+ 0M8R4KGxGuEAAAAAAAAAAAAAAAAAAAAAPgADAP7/CQAGAAAAAAAAAAAAAAABAAAAHAAAAAAAAAAA
59
+ AAAAAAAAAAAAAAAAAAAAEwAAAAAQAAAAAAAA
60
+
61
+
62
+
63
+ --------_428D7194605E049A05F8_MULTIPART_MIXED_--
64
+
65
+
66
+
67
+ "}
68
+ ok_eq('Attach Test', @site['1'].get_title)
69
+ ok_eq("* Attach Test
70
+ {{mail(bob@example.net,0)
71
+ This is a test.
72
+
73
+ {{file(1x1.png)}}
74
+
75
+ }}
76
+ ", @site["1"].load)
77
+ ok_eq(true, @site.files('1').exist?('1x1.png'))
78
+ end
79
+
80
+ def nutest_forward_long
81
+ qml = QuickML::Group.new(@ml_config, 'test@example.com')
82
+ qml.setup_test_config
83
+ mail = post_mail(qml) {
84
+ "Date: Thu, 28 Apr 2005 07:17:20 +0900
85
+ From: bob@example.net
86
+ To: 2005@eto.com
87
+ Subject: [Fwd: [itri-unei:00521] =?ISO-2022-JP?B?GyRCIVozTkRqTyJNbSFbGyhC?=
88
+ =?ISO-2022-JP?B?GyRCSXRMZ0ZiJVIlIiVqJXMlMEZ8RHgkSyREJCQkRhsoQl0=?=
89
+ Content-Type: multipart/mixed;
90
+ boundary='------------080009010806060401020001'
91
+
92
+ This is a multi-part message in MIME format.
93
+ --------------080009010806060401020001
94
+ Content-Type: text/plain; charset=ISO-2022-JP
95
+ Content-Transfer-Encoding: 7bit
96
+
97
+ �������@�œ]�����܂��B
98
+
99
+ --------------080009010806060401020001
100
+ Content-Type: message/rfc822;
101
+ name=\"[itri-unei:00521] =?ISO-2022-JP?B?GyRCIVozTkRqTyJNbSFbSXRMZ0ZiJVIlIiVqGyhC?==?ISO-2022-JP?B?GyRCJXMlMEZ8RHgkSyREJCQkRhsoQg==?=\"
102
+ Content-Transfer-Encoding: 7bit
103
+ Content-Disposition: inline;
104
+ filename=\"[itri-unei:00521] =?ISO-2022-JP?B?GyRCIVozTkRqTyJNbSFbSXRMZ0ZiJVIlIiVqGyhC?==?ISO-2022-JP?B?GyRCJXMlMEZ8RHgkSyREJCQkRhsoQg==?=\"
105
+
106
+
107
+ Date: Fri, 22 Apr 2005 11:31:34 +0900
108
+ From: s@e.com
109
+ Subject: [itri-unei:00521] =?ISO-2022-JP?B?GyRCIVozTkRqTyJNbSFbGyhC?=
110
+ =?ISO-2022-JP?B?GyRCSXRMZ0ZiJVIlIiVqJXMlMEZ8RHgkSyREGyhC?=
111
+ =?ISO-2022-JP?B?GyRCJCQkRhsoQg==?=
112
+ To: i-u@a.jp
113
+ Content-Type: text/plain; charset='ISO-2022-JP'
114
+ Content-Transfer-Encoding: 7bit
115
+
116
+ ���͂悤�������܂��B
117
+
118
+ --------------080009010806060401020001--
119
+ " }
120
+
121
+ qml.site_post(mail, true)
122
+ ok_eq("[Fwd: test mail]", mail['Subject'])
123
+ ok_eq("[Fwd: test mail]", @site['1'].get_title)
124
+ ok_eq("* [Fwd: test mail]
125
+ {{mail(bob@example.net,0)
126
+ I forward the test mail.
127
+
128
+ {{file(test mail)}}
129
+
130
+ }}
131
+ ",
132
+ @site['1'].load)
133
+ ok_eq(true, @site.files('1').exist?('test mail'))
134
+ str = @site.files('1').path('test mail').get
135
+ ok_eq("From user@example.net Fri Apr 22 11:31:51 2005
136
+ From: user@example.net
137
+ Subject: test mail
138
+ To: test@expample.com
139
+
140
+ This is a test.
141
+
142
+ ", str)
143
+ end
144
+ end
@@ -0,0 +1,71 @@
1
+ # Copyright (C) 2003-2006 Kouichirou Eto, All rights reserved.
2
+ # This is free software with ABSOLUTELY NO WARRANTY.
3
+ # You can redistribute it and/or modify it under the terms of the GNU GPL 2.
4
+
5
+ $LOAD_PATH.unshift '..' unless $LOAD_PATH.include? '..'
6
+ require 'qwik/test-module-ml'
7
+
8
+ if $0 == __FILE__
9
+ require 'qwik/server-memory'
10
+ require 'qwik/farm'
11
+ require 'qwik/group-site'
12
+ require 'qwik/group'
13
+ require 'qwik/password'
14
+ $test = true
15
+ end
16
+
17
+ class TestSubmitUuencode < Test::Unit::TestCase
18
+ include TestModuleML
19
+
20
+ def test_all
21
+ qml = QuickML::Group.new(@ml_config, 'test@example.com')
22
+ qml.setup_test_config
23
+
24
+ base64 =
25
+ 'begin 666 1x1a.png
26
+ MB5!.1PT*&@H````-24A$4@````$````!"`(```"0=U/>````#$E$051XVF/X
27
+ 8__\_``7^`OXS$I44`````$E%3D2N0F""
28
+ `
29
+ end
30
+ '
31
+
32
+ mail = post_mail(qml) {
33
+ "Date: Mon, 3 Feb 2001 12:34:56 +0900
34
+ From: bob@example.net
35
+ To: test@example.com
36
+ Subject: UuencodeImage
37
+ Content-Type: multipart/mixed; boundary=\"------------Boundary_iGrnGAlmY.rxNIm\"
38
+
39
+ --------------Boundary_iGrnGAlmY.rxNIm
40
+ Content-Type: text/plain; charset=ISO-2022-JP
41
+ Content-Transfer-Encoding: 7bit
42
+
43
+ This is a test.
44
+ --------------Boundary_iGrnGAlmY.rxNIm
45
+ Content-Type: application/octet-stream; name=\"1x1a.png\"
46
+ Content-Transfer-Encoding: x-uuencode
47
+ Content-Disposition: attachment; filename=\"1x1a.png\"
48
+
49
+ #{base64}
50
+ " }
51
+
52
+ mail1 = QuickML::Mail.new
53
+ mail1.read(mail.parts[1])
54
+ ok_eq('application/octet-stream', mail1.content_type)
55
+ ok_eq("attachment; filename=\"1x1a.png\"",
56
+ mail1['Content-Disposition'])
57
+ ok_eq('1x1a.png', mail1.filename)
58
+ ok_eq('x-uuencode', mail1['Content-Transfer-Encoding'])
59
+ ok_eq("\211PNG\r\n\032\n\000\000\000\rIHDR\000\000\000\001\000\000\000\001\010\002\000\000\000\220wS\336\000\000\000\fIDATx\332c\370\377\377?\000\005\376\002\3763\022\225\024\000\000\000\000IEND\256B`\202", mail1.decoded_body)
60
+
61
+ page = @site['UuencodeImage']
62
+ ok_eq('UuencodeImage', page.get_title)
63
+ ok_eq('* UuencodeImage
64
+ {{mail(bob@example.net,0)
65
+ This is a test.
66
+
67
+ {{file(1x1a.png)}}
68
+ }}
69
+ ', page.load)
70
+ end
71
+ end