Wiki2Go 1.17.5 → 1.22.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (108) hide show
  1. data/bin/Wiki2Go_firewall_blacklist.rb +8 -0
  2. data/bin/Wiki2Go_make_cvs_repository.rb +1 -0
  3. data/bin/Wiki2Go_make_site.rb +1 -2
  4. data/bin/Wiki2Go_update_site.rb +1 -2
  5. data/lib/Web2Go/CGIRequest.rb +8 -2
  6. data/lib/Web2Go/CGIResponse.rb +17 -14
  7. data/lib/Web2Go/MockRequest.rb +12 -2
  8. data/lib/Web2Go/MockResponse.rb +10 -7
  9. data/lib/Web2Go/WebrickRequest.rb +106 -101
  10. data/lib/Web2Go/WebrickResponse.rb +4 -8
  11. data/lib/Wiki2Go/BlackList.rb +48 -25
  12. data/lib/Wiki2Go/DotGraphics.rb +1 -1
  13. data/lib/Wiki2Go/FileStorage.rb +266 -266
  14. data/lib/Wiki2Go/HTMLFormatter.rb +28 -0
  15. data/lib/Wiki2Go/Install/config/chonqed_blacklist.txt +418 -0
  16. data/lib/Wiki2Go/Install/config/passwords +1 -1
  17. data/lib/Wiki2Go/Install/config/url_blacklist.txt +3855 -0
  18. data/lib/Wiki2Go/Install/make_repository.rb +32 -26
  19. data/lib/Wiki2Go/Install/make_site.rb +197 -111
  20. data/lib/Wiki2Go/Install/site/error.html +1 -1
  21. data/lib/Wiki2Go/Install/site/robots.txt +10 -1
  22. data/lib/Wiki2Go/Install/site/style.css +129 -64
  23. data/lib/Wiki2Go/Install/templates/admin.htm +1 -1
  24. data/lib/Wiki2Go/Install/templates/admin_pages/edit.txt +2 -1
  25. data/lib/Wiki2Go/Install/templates/admin_pages/format_for_fck.txt +31 -0
  26. data/lib/Wiki2Go/Install/templates/admin_pages/passwords.txt +1 -1
  27. data/lib/Wiki2Go/Install/templates/edit.htm +62 -46
  28. data/lib/Wiki2Go/Install/templates/full_footer.htm +31 -33
  29. data/lib/Wiki2Go/Install/templates/header.htm +0 -1
  30. data/lib/Wiki2Go/Install/templates/menu.htm +29 -0
  31. data/lib/Wiki2Go/Install/templates/pagelist.htm +46 -43
  32. data/lib/Wiki2Go/Install/templates/simple_footer.htm +20 -16
  33. data/lib/Wiki2Go/Install/templates/versionlist.htm +52 -40
  34. data/lib/Wiki2Go/Install/templates/view.htm +46 -29
  35. data/lib/Wiki2Go/Install/templates/wikiedit.htm +63 -0
  36. data/lib/Wiki2Go/Install/wiki/delete.png +0 -0
  37. data/lib/Wiki2Go/Install/wiki/style.css +133 -63
  38. data/lib/Wiki2Go/LineFormatter.rb +345 -197
  39. data/lib/Wiki2Go/Page.rb +16 -3
  40. data/lib/Wiki2Go/PrivateWikiConfig.rb +5 -5
  41. data/lib/Wiki2Go/PublicWikiConfig.rb +83 -37
  42. data/lib/Wiki2Go/ReadWriteWikiConfig.rb +8 -8
  43. data/lib/Wiki2Go/Server.rb +6 -1
  44. data/lib/Wiki2Go/SpamFilter.rb +32 -41
  45. data/lib/Wiki2Go/Web.rb +10 -3
  46. data/lib/Wiki2Go/Wiki2Go.rb +301 -94
  47. data/lib/Wiki2Go/Wiki2GoConfig.rb +87 -6
  48. data/lib/Wiki2Go/Wiki2GoServlet.rb +66 -12
  49. data/lib/Wiki2Go/WikiFormatter.rb +60 -30
  50. data/lib/Wiki2Go/cgi/diff.rb +20 -0
  51. data/lib/Wiki2Go/cgi/secure/log_rss.rb +21 -0
  52. data/lib/Wiki2Go/cgi/sidebyside.rb +20 -0
  53. data/lib/Wiki2Go/cgi/wikiedit.rb +20 -0
  54. data/lib/Wiki2Go/firewall_blacklist.rb +88 -0
  55. data/test/All.rb +5 -2
  56. data/test/TestBlackList.rb +70 -14
  57. data/test/TestConfig.rb +5 -5
  58. data/test/TestDiff.rb +95 -0
  59. data/test/TestFormatter.rb +14 -16
  60. data/test/TestHTMLFormatter.rb +37 -0
  61. data/test/TestInstall.rb +70 -27
  62. data/test/TestLineFormatter.rb +71 -15
  63. data/test/TestRSS.rb +8 -7
  64. data/test/TestRepository.rb +50 -0
  65. data/test/TestServer.rb +3 -8
  66. data/test/TestSpamFilter.rb +33 -1
  67. data/test/TestStorage.rb +11 -0
  68. data/test/TestWeb.rb +2 -2
  69. data/test/TestWiki2Go.rb +766 -166
  70. data/test/TestWiki2GoServlet.rb +1122 -524
  71. data/test/UnitTestFiles.rb +7 -3
  72. data/test/Wiki2GoConfigForTest.rb +40 -6
  73. data/test/checksite.rb +17 -50
  74. data/test/test_firewall_blacklist.rb +131 -0
  75. data/test/test_page.rb +45 -0
  76. data/test/testdata/Registration.rbl.txt +7 -0
  77. data/test/testdata/config/url_blacklist.txt +38822 -0
  78. data/test/testdata/expected_changes.html +1 -2
  79. data/test/testdata/expected_edit.html +108 -59
  80. data/test/testdata/expected_full_rss.xml +2 -2
  81. data/test/testdata/expected_out.html +97 -61
  82. data/test/testdata/expected_put.html +88 -53
  83. data/test/testdata/expected_save.html +88 -52
  84. data/test/testdata/expected_savehtml.html +88 -52
  85. data/test/testdata/expected_search.html +68 -53
  86. data/test/testdata/expected_upload.html +88 -53
  87. data/test/testdata/expected_versions.html +97 -82
  88. data/test/testdata/expected_view.html +97 -61
  89. data/test/testdata/firewall/iptables.config +37 -0
  90. data/test/testdata/firewall/user_blacklist.txt +162 -0
  91. data/test/testdata/logs/wiki.log +652 -0
  92. data/test/testdata/logs/wiki.log.0 +113 -0
  93. data/test/testdata/logs/wiki.log.1 +113 -0
  94. data/test/testdata/logs/wiki.log.2 +113 -0
  95. data/test/testdata/logs/wiki.log.3 +115 -0
  96. data/test/testdata/logs/wiki.log.4 +5 -0
  97. data/test/testdata/logs/wiki.log.5 +7 -0
  98. data/test/testdata/logs/wiki.log.6 +5 -0
  99. data/test/testdata/logs/wiki.log.7 +118 -0
  100. data/test/testdata/logs/wiki.log.8 +12 -0
  101. data/test/testdata/site/html/Xpday/rss.xml +53 -103
  102. data/test/testdata/texts/Bugs/FrontPage.txt +6 -0
  103. data/test/testdata/texts/Bugs/NoHidden.spam +17850 -0
  104. data/test/testdata/texts/Bugs/PairProgrammingParties.spam +102 -0
  105. data/test/testdata/texts/Bugs/PairProgrammingParties.txt +99 -0
  106. metadata +53 -7
  107. data/test/TestMail.rb +0 -29
  108. data/test/gc.log +0 -2
@@ -11,19 +11,17 @@ require "Wiki2Go/WhiteList"
11
11
  require "Wiki2GoConfigForTest"
12
12
  require "UnitTestFiles"
13
13
 
14
- class MockStorage
15
- attr_accessor :find_it
14
+ module TestFormatter_local
15
+ class MockStorage
16
+ attr_accessor :find_it
16
17
 
17
- def exists?(path)
18
- return @find_it
19
- end
20
-
21
- def load_whitelist
22
- return Wiki2Go::WhiteList.new(Array.new)
23
- end
18
+ def exists?(path)
19
+ return @find_it
20
+ end
24
21
 
25
- def initialize
26
- @find_it = false
22
+ def initialize
23
+ @find_it = false
24
+ end
27
25
  end
28
26
  end
29
27
 
@@ -139,8 +137,8 @@ END_OF_EXPECTED
139
137
 
140
138
  def test_view_link_with_parameters
141
139
  formatter = makeFormatter
142
- formatted = formatter.view_version_link("Xpday", "aPage", "aLabel", { 'version' => '2' , 'user' => 'firstuser', 'firstparam' => 'value' })
143
- assert_equal('<a href="/view/Xpday/aPage?firstparam=value&user=firstuser&version=2">aLabel</a>',formatted)
140
+ formatted = formatter.view_version_link("Xpday", "aPage", "aLabel",2)
141
+ assert_equal('<a href="/view/Xpday/aPage?version=2">aLabel</a>',formatted)
144
142
 
145
143
  end
146
144
 
@@ -453,7 +451,7 @@ END_OF_LOADSATAGS
453
451
  end
454
452
 
455
453
  def makeFormatter
456
- storage = MockStorage.new
454
+ storage = TestFormatter_local::MockStorage.new
457
455
  storage.find_it = true
458
456
  config = TestWiki2GoConfig.new
459
457
  web = Wiki2Go::Web.from_page_url("http://webserver:8081/view/Xpday/Page",'view',config)
@@ -461,7 +459,7 @@ END_OF_LOADSATAGS
461
459
  end
462
460
 
463
461
  def makePublicFormatter
464
- storage = MockStorage.new
462
+ storage = TestFormatter_local::MockStorage.new
465
463
  storage.find_it = true
466
464
  config = PublicTestWiki2GoConfig.new
467
465
  web = Wiki2Go::Web.from_page_url("http://webserver:8081/view/Xpday/Page",'view',config)
@@ -469,7 +467,7 @@ END_OF_LOADSATAGS
469
467
  end
470
468
 
471
469
  def make_single_wiki_Formatter
472
- storage = MockStorage.new
470
+ storage = TestFormatter_local::MockStorage.new
473
471
  storage.find_it = true
474
472
  config = PublicTestWiki2GoConfig.new
475
473
  config.multi_wiki = false
@@ -0,0 +1,37 @@
1
+ #!/usr/bin/env ruby
2
+ $:.unshift File.expand_path(File.join(File.dirname(__FILE__),'..','lib'))
3
+
4
+ require 'test/unit'
5
+ require 'Wiki2Go/HTMLFormatter'
6
+ require "Wiki2Go/Web"
7
+ require "Wiki2Go/FileStorage"
8
+ require "Wiki2GoConfigForTest"
9
+ require "UnitTestFiles"
10
+
11
+ class TestHTMLFormatter < Test::Unit::TestCase
12
+
13
+ include UnitTestFiles
14
+
15
+ def test_formatter_doesnt_touch_wikiwords
16
+ config = PublicTestWiki2GoConfig.new
17
+ config.multi_wiki = false
18
+ web = Wiki2Go::Web.from_page_url("http://webserver:8081/view/Page",'view',config)
19
+
20
+ formatter = Wiki2Go::HTMLFormatter.new(web,nil,config,true,false)
21
+
22
+ output = formatter.format_page("Don't *touch* the WikiWord !")
23
+ assert_equal "Don't <STRONG>touch</STRONG> the WikiWord !",output
24
+ end
25
+
26
+ def test_formatter_doesnt_touch_forced_internal_links
27
+ config = PublicTestWiki2GoConfig.new
28
+ config.multi_wiki = false
29
+ web = Wiki2Go::Web.from_page_url("http://webserver:8081/view/Page",'view',config)
30
+
31
+ formatter = Wiki2Go::HTMLFormatter.new(web,nil,config,true,false)
32
+
33
+ output = formatter.format_page("Don't *touch* the {forced link@Somepage} !")
34
+ assert_equal "Don't <STRONG>touch</STRONG> the {forced link@Somepage} !",output
35
+ end
36
+
37
+ end
data/test/TestInstall.rb CHANGED
@@ -1,8 +1,8 @@
1
1
  #!/usr/bin/ruby
2
- $:.unshift File.expand_path(File.join(File.dirname(__FILE__),'..','lib'))
3
-
2
+ $: << File.expand_path(File.join(File.dirname(__FILE__),'..','lib'))
4
3
 
5
4
  require 'test/unit'
5
+ require 'rubygems'
6
6
 
7
7
  require "Wiki2Go/Install/make_site"
8
8
  require "Wiki2Go/Install/make_repository"
@@ -11,6 +11,49 @@ require 'UnitTestFiles'
11
11
 
12
12
  include FileUtils
13
13
 
14
+ class UpdatedFiles
15
+ def initialize(directory)
16
+ @directory = directory
17
+ @files = {}
18
+ end
19
+
20
+ # Returns an array of all filenames that have been updated since the last call
21
+ def updated_files
22
+ changed = []
23
+ sources = all_files_with_mtime
24
+
25
+ # Changed == a file did not exist before or its timestamp has changed
26
+ sources.each do |filename,mtime|
27
+ existing = @files[filename]
28
+ if existing.nil? || existing < mtime then
29
+ changed << filename
30
+ end
31
+ end
32
+
33
+ # Changed == a file existed before, but no longer
34
+ @files.each do |filename,mtime|
35
+ changed << filename unless sources.has_key?(filename)
36
+ end
37
+
38
+ @files = sources
39
+
40
+ changed
41
+ end
42
+
43
+ private
44
+
45
+ def all_files_with_mtime
46
+ path = File.join(@directory,'**','*')
47
+ found = Dir.glob(path)
48
+ files = {}
49
+ found.each do |filename|
50
+ files[filename] = File.mtime(filename) if File.file?(filename)
51
+ end
52
+
53
+ files
54
+ end
55
+ end
56
+
14
57
  class TestInstall < Test::Unit::TestCase
15
58
 
16
59
  def test_public_make_site
@@ -64,37 +107,30 @@ class TestInstall < Test::Unit::TestCase
64
107
  assert_wiki_structure_exists(wiki_dir,'Wiki2Go')
65
108
  assert_wiki_structure_exists(wiki_dir,'Admin')
66
109
  end
67
-
68
- def test_update_wiki
69
- wiki_dir = scratch_dir('updatewiki')
110
+
111
+ def test_update_doesnt_change_install
112
+ wiki_dir = scratch_dir('formathtml')
70
113
  args = ['-s', 'wiki2go.nayima.be' , '-w' , 'Wiki2Go' , '-t' , 'private', '-d' , wiki_dir]
71
114
  Wiki2Go::Install.make_site(args)
72
- args = ['-t' , 'private', '-d' , wiki_dir]
73
- Wiki2Go::Install.update_site(args)
74
- assert_wiki_structure_exists(wiki_dir,'Wiki2Go')
75
- end
76
115
 
77
- def test_make_repository
78
- scratch = scratch_dir('testcvs')
79
- repository_dir = File.join(scratch,'repository')
80
- wiki_dir = File.join(scratch,'readwrite')
81
- user = ENV['USER'] || ENV['USERNAME']
82
- args = ['-d', repository_dir , '-u' ,user, '-g' , user, '-m' , 'readwrite']
83
- Wiki2Go::RepositoryMaker.create(args)
84
- assert File.exists?(repository_dir)
116
+ files = UpdatedFiles.new(wiki_dir)
117
+ changed = files.updated_files
118
+
119
+ args = [ '-d' , wiki_dir]
120
+ Wiki2Go::Install.update_site(args)
85
121
 
86
- args = ['-s', 'http://wiki2go.nayima.be/blog' , '-w' , 'Wiki2Go' , '-t' , 'readwrite', '-d' , wiki_dir]
87
- Wiki2Go::Install.make_site(args)
122
+ # An update should not change existing files, except...
123
+ # CGI .rb scripts may be updated
124
+ # Except CgiOptions.rb, put a new version in CgiOptions.rb.new so that the user can merge new functionalities
125
+ changed = files.updated_files
126
+ really_changed = changed.reject {|name| name =~ /\.new$/ || name =~/\.rb$/ }
127
+ assert_equal 0,really_changed.length,"Update should NOT change files but updated : #{really_changed.join(' and ')}"
128
+ assert !changed.find {|name| name =~ /CgiOptions\.rb$/ }
129
+ assert changed.find {|name| name =~ /CgiOptions\.rb\.new$/ }
88
130
 
89
- args = ['-d', repository_dir , '-w' ,wiki_dir, '-m' , 'readwrite']
90
- added = Wiki2Go::RepositoryMaker.addwiki(args)
91
- added = Wiki2Go::RepositoryMaker.addwiki(args)
92
- assert_equal 0,added.length
93
- args = ['-d', repository_dir , '-w' ,wiki_dir]
94
- Wiki2Go::RepositoryMaker.updatewiki(args)
131
+ assert_wiki_structure_exists(wiki_dir,'Wiki2Go')
95
132
  end
96
133
 
97
-
98
134
  private
99
135
 
100
136
  def scratch_dir(type)
@@ -107,8 +143,10 @@ class TestInstall < Test::Unit::TestCase
107
143
  end
108
144
 
109
145
  def assert_wiki_structure_exists(wiki_dir,wiki_name)
110
- assert(File.exists?(File.join(wiki_dir,'site','scripts')))
146
+ assert_exists(wiki_dir,'site','scripts')
111
147
  assert(File.exists?(File.join(wiki_dir,'site','scripts','secure')))
148
+ assert(File.exists?(File.join(wiki_dir,'site','html',wiki_name)))
149
+ assert(!File.exists?(File.join(wiki_dir,'site','fckeditor')))
112
150
  assert(File.exists?(File.join(wiki_dir,'texts')))
113
151
  assert(File.exists?(File.join(wiki_dir,'templates')))
114
152
  assert(File.exists?(File.join(wiki_dir,'config')))
@@ -116,5 +154,10 @@ class TestInstall < Test::Unit::TestCase
116
154
  assert(File.exists?(File.join(wiki_dir,'texts',wiki_name)))
117
155
  assert(File.exists?(File.join(wiki_dir,'templates',wiki_name)))
118
156
  end
157
+
158
+ def assert_exists(wiki_dir,*dirs)
159
+ dir = File.join(wiki_dir,dirs)
160
+ assert("#{dir} must exist",File.exists?(dir))
161
+ end
119
162
  end
120
163
 
@@ -18,10 +18,6 @@ class LineMockStorage
18
18
  return @find_it
19
19
  end
20
20
 
21
- def load_whitelist
22
- return Wiki2Go::WhiteList.new(Array.new)
23
- end
24
-
25
21
  def initialize
26
22
  @find_it = false
27
23
  end
@@ -62,14 +58,39 @@ class TestLineFormatter < Test::Unit::TestCase
62
58
  def test_accept_tags_with_attributes
63
59
  formatter = makeFormatter
64
60
 
65
- formatted = formatter.format_line("<a href=\"hello\"/>")
66
- assert_equal("<a href=\"hello\"/>",formatted)
61
+ formatted = formatter.format_line("<img src=\"http://www.xp.be\"/>")
62
+ assert_equal("<img src=\"http://www.xp.be\"/>",formatted)
67
63
 
68
- formatted = formatter.format_line("<a href=\"hello&gt;\"/>")
69
- assert_equal("<a href=\"hello&gt;\"/>",formatted)
64
+ formatted = formatter.format_line("<div name=\"hello&gt;\"/>")
65
+ assert_equal("<div name=\"hello&gt;\"/>",formatted)
70
66
  end
67
+
68
+ def test_handle_anchor_links
69
+ formatter = makePublicFormatter
70
+
71
+ formatted = formatter.format_line("<a href=\"http://www.xp.be\" />")
72
+ assert_equal("<a href=\"http://www.xp.be\" target=\"_blank\" />",formatted)
73
+
74
+ formatted = formatter.format_line("<a href=\"http://www.xp.be\" target=\"_blank\" />")
75
+ assert_equal("<a href=\"http://www.xp.be\" target=\"_blank\" />",formatted)
76
+ end
77
+
78
+ def test_accept_technorati_links
79
+ formatter = makePublicFormatter
71
80
 
72
- def test_FormatterEntities
81
+ formatted = formatter.format_line("<a href=\"http://hello\" rel=\"tag\"/>")
82
+ assert_equal("<a href=\"http://hello\" target=\"_blank\" rel=\"tag\"/>",formatted)
83
+
84
+ formatted = formatter.format_line("<a href=\"hello&gt;\" rel=\"tag\"/>")
85
+ assert_equal("<a href=\"hello&gt;\" rel=\"tag\"/>",formatted)
86
+
87
+ formatted = formatter.format_line("{technorati:agileopen}")
88
+ assert_equal("<a href=\"http://technorati.com/tag/agileopen\" target=\"_blank\" rel=\"tag\">agileopen</a>",formatted)
89
+ formatted = formatter.format_line("{Agile Open@technorati:agileopen}")
90
+ assert_equal("<a href=\"http://technorati.com/tag/agileopen\" target=\"_blank\" rel=\"tag\">Agile Open</a>",formatted)
91
+ end
92
+
93
+ def test_formatter_entities
73
94
  formatter = makeFormatter
74
95
 
75
96
  formatted = formatter.format_line(" &lt; & &gt; ")
@@ -145,7 +166,21 @@ class TestLineFormatter < Test::Unit::TestCase
145
166
  formatted = formatter.format_line(" a link http://www.xp.be/logo.GIF works ")
146
167
  assert_equal(" a link <img src=\"http://www.xp.be/logo.GIF\" alt=\"logo\"> works ",formatted)
147
168
  end
148
-
169
+
170
+ # Bug on XP Day 2006 sessions wiki
171
+ def test_bug_link_not_formatted
172
+ formatter = makePublicFormatter
173
+
174
+ formatted = formatter.format_line("I hope to play the {Leadership game@http://www.xpday.org/wiki/index.php/The_Leadership_Game%2C_a_pair_coaching_experiment} ")
175
+ assert_equal('I hope to play the <a href="http://www.xpday.org/wiki/index.php/The_Leadership_Game%2C_a_pair_coaching_experiment" target="_blank">Leadership game</a> ',formatted)
176
+ end
177
+
178
+ def test_bug_save_may_not_redirect_to_static_page_of_rbl_page
179
+ formatter = makePublicFormatter
180
+ formatted = formatter.view_url('Xpday','Registration.rbl')
181
+ assert_equal '/view/Xpday/Registration.rbl',formatted
182
+ end
183
+
149
184
  def test_links_with_redirect
150
185
  formatter = makeFormatter
151
186
 
@@ -157,7 +192,7 @@ class TestLineFormatter < Test::Unit::TestCase
157
192
 
158
193
 
159
194
  formatted = formatter.format_line(" a mail link mailto:pvc@nayima.be works ")
160
- assert_equal(" a mail link <a href=\"/view/Xpday/MailFormattingRules\" onmouseover=\"this.href='mai' + 'lto:' + 'pvc' + '&#64;' + 'nayima.be'\">pvc</a> works ",formatted)
195
+ assert_equal(" a mail link <a href=\"/view/Xpday/MailFormattingRules\" rel=\"nofollow\" onmouseover=\"this.href='mai' + 'lto:' + 'pvc' + '&#64;' + 'nayima.be'\">pvc</a> works ",formatted)
161
196
 
162
197
  formatted = formatter.format_line(" a link %test@http://SomePage% works ")
163
198
  assert_equal(" a link <a href=\"/redirect/Xpday?url=http%3A%2F%2FSomePage\" rel=\"nofollow\" target=\"_blank\">test</a> works ",formatted)
@@ -189,7 +224,7 @@ class TestLineFormatter < Test::Unit::TestCase
189
224
  assert_equal(" a link <img src=\"http://www.xp.be/logo.gif\" alt=\"logo\"> works ",formatted)
190
225
 
191
226
  formatted = formatter.format_line(" a mail link mailto:pvc@nayima.be works ")
192
- assert_equal(" a mail link <a href=\"/Xpday/MailFormattingRules.html\" onmouseover=\"this.href='mai' + 'lto:' + 'pvc' + '&#64;' + 'nayima.be'\">pvc</a> works ",formatted)
227
+ assert_equal(" a mail link <a href=\"/Xpday/MailFormattingRules.html\" rel=\"nofollow\" onmouseover=\"this.href='mai' + 'lto:' + 'pvc' + '&#64;' + 'nayima.be'\">pvc</a> works ",formatted)
193
228
 
194
229
  formatted = formatter.format_line(" a link %test@http://SomePage% works ")
195
230
  assert_equal(" a link <a href=\"http://SomePage\" target=\"_blank\">test</a> works ",formatted)
@@ -216,6 +251,12 @@ class TestLineFormatter < Test::Unit::TestCase
216
251
  assert_equal(" a link http:// does not generate a link ",formatted)
217
252
  end
218
253
 
254
+ def test_bug_labeled_link_to_named_wiki
255
+ formatter = makePublicFormatter
256
+ formatted = formatter.format_line(" a link {Previous year@Xpday2007:FrontPage} works ")
257
+ assert_equal(" a link <a href=\"/Xpday2007/FrontPage.html\">Previous year</a> works ",formatted)
258
+ end
259
+
219
260
  def perform_test_sister_wikis(formatter)
220
261
  formatted = formatter.format_line(" a link {xpnl:BesprokenOnderwerpen} works ")
221
262
  assert_equal(" a link <a href=\"http://www.xpnl.org/Wiki/BesprokenOnderwerpen\" target=\"_blank\">xpnl:BesprokenOnderwerpen</a> works ",formatted)
@@ -266,6 +307,9 @@ class TestLineFormatter < Test::Unit::TestCase
266
307
  formatted = formatter.format_line("{microsoft.gif}")
267
308
  assert_equal("<img src=\"/html/Xpday/microsoft.gif\" border=0 alt=\"microsoft\" >",formatted)
268
309
 
310
+ formatted = formatter.format_line("{Wicked Witch.gif}")
311
+ assert_equal("<img src=\"/html/Xpday/Wicked%20Witch.gif\" border=0 alt=\"Wicked Witch\" >",formatted)
312
+
269
313
  formatted = formatter.format_line("{paper.pdf}")
270
314
  assert_equal("<a href=\"/html/Xpday/paper.pdf\" target=\"_blank\">paper.pdf</a>",formatted)
271
315
 
@@ -297,13 +341,19 @@ class TestLineFormatter < Test::Unit::TestCase
297
341
 
298
342
  end
299
343
 
344
+ def test_no_target_for_img_tags
345
+ formatter = makePublicFormatter
346
+ formatted = formatter.format_line("Dont add a target to <img src=\"http://blog.nayima.be/html/logo2005small.gif\" align=left border=0 alt=\"XP Day Benelux 2005 logo\"> tags")
347
+ assert_equal("Dont add a target to <img src=\"http://blog.nayima.be/html/logo2005small.gif\" align=left border=0 alt=\"XP Day Benelux 2005 logo\"> tags",formatted)
348
+ end
349
+
300
350
  def test_tilde_in_url
301
351
  formatter = makePublicFormatter
302
352
  formatted = formatter.format_line("Read about %weblog@http://www.xs4all.nl/~mmmevers/blog% or %homepage@http://www.xs4all.nl/~mmmevers% in Dutch")
303
353
  assert_equal("Read about <a href=\"http://www.xs4all.nl/~mmmevers/blog\" target=\"_blank\">weblog</a> or <a href=\"http://www.xs4all.nl/~mmmevers\" target=\"_blank\">homepage</a> in Dutch",formatted)
304
354
  end
305
355
 
306
- def test_underscore_in_url
356
+ def test_underscore_in_url
307
357
  formatter = makeFormatter
308
358
  formatted = formatter.format_line("<p align=center>{http://www.agileopen.com@agileopen_logo.jpg}</p>")
309
359
  assert_equal('<p align=center><a href="/redirect/Xpday?url=http%3A%2F%2Fwww.agileopen.com" rel="nofollow" target="_blank"><img src="/html/Xpday/agileopen_logo.jpg" border=0 alt="agileopen_logo" ></a></p>',formatted)
@@ -365,7 +415,7 @@ class TestLineFormatter < Test::Unit::TestCase
365
415
 
366
416
  storage.find_it = false
367
417
  formatted = formatter.format_line(" a SomeLink ")
368
- assert_equal(" a SomeLink<a href=\"/edit/Xpday/SomeLink\">?</a> ",formatted)
418
+ assert_equal(" a SomeLink<a href=\"/wikiedit/Xpday/SomeLink\" rel=\"nofollow\">?</a> ",formatted)
369
419
 
370
420
  end
371
421
 
@@ -510,7 +560,13 @@ class TestLineFormatter < Test::Unit::TestCase
510
560
  assert_equal('<a href="/view/Xpday/FrontPage.rbl">The dynamic page</a>',formatted)
511
561
  end
512
562
 
513
-
563
+ def test_stack_too_deep_bug
564
+
565
+ too_long = "<a href=\" \"> </a>" * 5000
566
+ formatter = makeFormatter
567
+ formatted = formatter.format_line(too_long)
568
+ assert_equal too_long,formatted
569
+ end
514
570
 
515
571
 
516
572
 
data/test/TestRSS.rb CHANGED
@@ -3,10 +3,10 @@ $:.unshift File.expand_path(File.join(File.dirname(__FILE__),'..','lib'))
3
3
 
4
4
  require 'test/unit'
5
5
 
6
+ require "Wiki2Go/Wiki2Go"
6
7
  require "Wiki2Go/WikiFormatter"
7
8
  require "Wiki2Go/Web"
8
9
  require "Wiki2Go/FileStorage"
9
- require "Wiki2Go/Wiki2Go"
10
10
  require "Wiki2GoConfigForTest"
11
11
  require "UnitTestFiles"
12
12
 
@@ -66,7 +66,7 @@ class TestRSS < Test::Unit::TestCase
66
66
  wiki = Wiki2Go::Wiki.new(config)
67
67
  web = Wiki2Go::Web.from_page_url("http://agilesystems.nayima.be/view/Xpday/Page","view",config)
68
68
  rss = wiki.generate_rss(web,changes)
69
- # puts rss
69
+ # puts rss
70
70
  assert_same_markup_strings(expected_rss_with_absolute_urls,rss,{ '$DATE$' => Time.new.gmtime.strftime("%d %B %Y %H:%M GMT") })
71
71
  end
72
72
 
@@ -117,15 +117,16 @@ END_OF_BEFORE_ITEMS_XML
117
117
  <author>author1</author>
118
118
  <pubDate>13 September 2004 22:19 GMT</pubDate>
119
119
  <link>http://agilesystems.nayima.be/view/Xpday/title1</link>
120
- <guid isPermaLink="true">Xpday/title1</guid>
121
- <description><![CDATA[content1<img src="http://agilesystems.nayima.be/html/Xpday/image.gif" border=0 alt="image" >]]></description>
120
+ <guid isPermaLink="true">http://agilesystems.nayima.be/view/Xpday/title1</guid>
121
+ <description><![CDATA[content1
122
+ <img src="http://agilesystems.nayima.be/html/Xpday/image.gif" border=0 alt="image" >]]></description>
122
123
  </item>
123
124
  <item>
124
125
  <title>title2</title>
125
126
  <author>author2</author>
126
127
  <pubDate>12 September 2004 20:26 GMT</pubDate>
127
128
  <link>http://agilesystems.nayima.be/view/Xpday/title2</link>
128
- <guid isPermaLink="true">Xpday/title2</guid>
129
+ <guid isPermaLink="true">http://agilesystems.nayima.be/view/Xpday/title2</guid>
129
130
  <description><![CDATA[content2]]></description>
130
131
  </item>
131
132
  </channel>
@@ -136,7 +137,7 @@ end
136
137
  def errorlog
137
138
  return <<-END_OF_LOG
138
139
  I, [2005-08-13 18:19:54#1567] INFO -- : >> save.rb {"Wiki2Go_user"=>["Pascal"]}
139
- E, [2005-08-13 18:19:54#1567] ERROR -- : Blacklisted user 192.168.0.30 because of the following urls: http://blog.nayima.be
140
+ E, [2005-08-13 18:19:54#1567] ERROR -- : <Error:> Blacklisted user 192.168.0.30 because of the following urls: http://blog.nayima.be
140
141
  I, [2005-08-13 18:20:54#1567] INFO -- : << save {"Wiki2Go_user"=>["Pascal"]}
141
142
  I, [2005-08-13 18:20:54#1567] INFO -- : Response cookies = {"Wiki2Go_user"=>["Pascal"]}
142
143
  I, [2005-08-13 18:26:41#1592] INFO -- : Request cookies = {"Wiki2Go_user"=>["Pascal"]}
@@ -167,7 +168,7 @@ return <<-END_OF_EXPECTED
167
168
  <link>http://agilesystems.nayima.be/scripts/secure/admin/show_log</link>
168
169
  <author>Wiki2Go</author>
169
170
  <pubDate>13 August 2005 18:19 GMT</pubDate>
170
- <description><![CDATA[Blacklisted user 192.168.0.30 because of the following urls: http://blog.nayima.be]]></description>
171
+ <description><![CDATA[&lt;Error:&gt; Blacklisted user 192.168.0.30 because of the following urls: http://blog.nayima.be]]></description>
171
172
  </item>
172
173
  <item>
173
174
  <title>errormessage</title>