Wiki2Go 1.17.5 → 1.22.0
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.
- data/bin/Wiki2Go_firewall_blacklist.rb +8 -0
- data/bin/Wiki2Go_make_cvs_repository.rb +1 -0
- data/bin/Wiki2Go_make_site.rb +1 -2
- data/bin/Wiki2Go_update_site.rb +1 -2
- data/lib/Web2Go/CGIRequest.rb +8 -2
- data/lib/Web2Go/CGIResponse.rb +17 -14
- data/lib/Web2Go/MockRequest.rb +12 -2
- data/lib/Web2Go/MockResponse.rb +10 -7
- data/lib/Web2Go/WebrickRequest.rb +106 -101
- data/lib/Web2Go/WebrickResponse.rb +4 -8
- data/lib/Wiki2Go/BlackList.rb +48 -25
- data/lib/Wiki2Go/DotGraphics.rb +1 -1
- data/lib/Wiki2Go/FileStorage.rb +266 -266
- data/lib/Wiki2Go/HTMLFormatter.rb +28 -0
- data/lib/Wiki2Go/Install/config/chonqed_blacklist.txt +418 -0
- data/lib/Wiki2Go/Install/config/passwords +1 -1
- data/lib/Wiki2Go/Install/config/url_blacklist.txt +3855 -0
- data/lib/Wiki2Go/Install/make_repository.rb +32 -26
- data/lib/Wiki2Go/Install/make_site.rb +197 -111
- data/lib/Wiki2Go/Install/site/error.html +1 -1
- data/lib/Wiki2Go/Install/site/robots.txt +10 -1
- data/lib/Wiki2Go/Install/site/style.css +129 -64
- data/lib/Wiki2Go/Install/templates/admin.htm +1 -1
- data/lib/Wiki2Go/Install/templates/admin_pages/edit.txt +2 -1
- data/lib/Wiki2Go/Install/templates/admin_pages/format_for_fck.txt +31 -0
- data/lib/Wiki2Go/Install/templates/admin_pages/passwords.txt +1 -1
- data/lib/Wiki2Go/Install/templates/edit.htm +62 -46
- data/lib/Wiki2Go/Install/templates/full_footer.htm +31 -33
- data/lib/Wiki2Go/Install/templates/header.htm +0 -1
- data/lib/Wiki2Go/Install/templates/menu.htm +29 -0
- data/lib/Wiki2Go/Install/templates/pagelist.htm +46 -43
- data/lib/Wiki2Go/Install/templates/simple_footer.htm +20 -16
- data/lib/Wiki2Go/Install/templates/versionlist.htm +52 -40
- data/lib/Wiki2Go/Install/templates/view.htm +46 -29
- data/lib/Wiki2Go/Install/templates/wikiedit.htm +63 -0
- data/lib/Wiki2Go/Install/wiki/delete.png +0 -0
- data/lib/Wiki2Go/Install/wiki/style.css +133 -63
- data/lib/Wiki2Go/LineFormatter.rb +345 -197
- data/lib/Wiki2Go/Page.rb +16 -3
- data/lib/Wiki2Go/PrivateWikiConfig.rb +5 -5
- data/lib/Wiki2Go/PublicWikiConfig.rb +83 -37
- data/lib/Wiki2Go/ReadWriteWikiConfig.rb +8 -8
- data/lib/Wiki2Go/Server.rb +6 -1
- data/lib/Wiki2Go/SpamFilter.rb +32 -41
- data/lib/Wiki2Go/Web.rb +10 -3
- data/lib/Wiki2Go/Wiki2Go.rb +301 -94
- data/lib/Wiki2Go/Wiki2GoConfig.rb +87 -6
- data/lib/Wiki2Go/Wiki2GoServlet.rb +66 -12
- data/lib/Wiki2Go/WikiFormatter.rb +60 -30
- data/lib/Wiki2Go/cgi/diff.rb +20 -0
- data/lib/Wiki2Go/cgi/secure/log_rss.rb +21 -0
- data/lib/Wiki2Go/cgi/sidebyside.rb +20 -0
- data/lib/Wiki2Go/cgi/wikiedit.rb +20 -0
- data/lib/Wiki2Go/firewall_blacklist.rb +88 -0
- data/test/All.rb +5 -2
- data/test/TestBlackList.rb +70 -14
- data/test/TestConfig.rb +5 -5
- data/test/TestDiff.rb +95 -0
- data/test/TestFormatter.rb +14 -16
- data/test/TestHTMLFormatter.rb +37 -0
- data/test/TestInstall.rb +70 -27
- data/test/TestLineFormatter.rb +71 -15
- data/test/TestRSS.rb +8 -7
- data/test/TestRepository.rb +50 -0
- data/test/TestServer.rb +3 -8
- data/test/TestSpamFilter.rb +33 -1
- data/test/TestStorage.rb +11 -0
- data/test/TestWeb.rb +2 -2
- data/test/TestWiki2Go.rb +766 -166
- data/test/TestWiki2GoServlet.rb +1122 -524
- data/test/UnitTestFiles.rb +7 -3
- data/test/Wiki2GoConfigForTest.rb +40 -6
- data/test/checksite.rb +17 -50
- data/test/test_firewall_blacklist.rb +131 -0
- data/test/test_page.rb +45 -0
- data/test/testdata/Registration.rbl.txt +7 -0
- data/test/testdata/config/url_blacklist.txt +38822 -0
- data/test/testdata/expected_changes.html +1 -2
- data/test/testdata/expected_edit.html +108 -59
- data/test/testdata/expected_full_rss.xml +2 -2
- data/test/testdata/expected_out.html +97 -61
- data/test/testdata/expected_put.html +88 -53
- data/test/testdata/expected_save.html +88 -52
- data/test/testdata/expected_savehtml.html +88 -52
- data/test/testdata/expected_search.html +68 -53
- data/test/testdata/expected_upload.html +88 -53
- data/test/testdata/expected_versions.html +97 -82
- data/test/testdata/expected_view.html +97 -61
- data/test/testdata/firewall/iptables.config +37 -0
- data/test/testdata/firewall/user_blacklist.txt +162 -0
- data/test/testdata/logs/wiki.log +652 -0
- data/test/testdata/logs/wiki.log.0 +113 -0
- data/test/testdata/logs/wiki.log.1 +113 -0
- data/test/testdata/logs/wiki.log.2 +113 -0
- data/test/testdata/logs/wiki.log.3 +115 -0
- data/test/testdata/logs/wiki.log.4 +5 -0
- data/test/testdata/logs/wiki.log.5 +7 -0
- data/test/testdata/logs/wiki.log.6 +5 -0
- data/test/testdata/logs/wiki.log.7 +118 -0
- data/test/testdata/logs/wiki.log.8 +12 -0
- data/test/testdata/site/html/Xpday/rss.xml +53 -103
- data/test/testdata/texts/Bugs/FrontPage.txt +6 -0
- data/test/testdata/texts/Bugs/NoHidden.spam +17850 -0
- data/test/testdata/texts/Bugs/PairProgrammingParties.spam +102 -0
- data/test/testdata/texts/Bugs/PairProgrammingParties.txt +99 -0
- metadata +53 -7
- data/test/TestMail.rb +0 -29
- data/test/gc.log +0 -2
    
        data/test/TestFormatter.rb
    CHANGED
    
    | @@ -11,19 +11,17 @@ require "Wiki2Go/WhiteList" | |
| 11 11 | 
             
            require "Wiki2GoConfigForTest"
         | 
| 12 12 | 
             
            require "UnitTestFiles"
         | 
| 13 13 |  | 
| 14 | 
            -
             | 
| 15 | 
            -
               | 
| 14 | 
            +
            module TestFormatter_local
         | 
| 15 | 
            +
              class MockStorage
         | 
| 16 | 
            +
                attr_accessor :find_it
         | 
| 16 17 |  | 
| 17 | 
            -
             | 
| 18 | 
            -
             | 
| 19 | 
            -
             | 
| 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 | 
            -
             | 
| 26 | 
            -
             | 
| 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", | 
| 143 | 
            -
                assert_equal('<a href="/view/Xpday/aPage? | 
| 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 | 
            -
             | 
| 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  | 
| 69 | 
            -
                wiki_dir = scratch_dir(' | 
| 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 | 
            -
             | 
| 78 | 
            -
                 | 
| 79 | 
            -
                 | 
| 80 | 
            -
                 | 
| 81 | 
            -
                 | 
| 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 | 
            -
                 | 
| 87 | 
            -
                 | 
| 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 | 
            -
                 | 
| 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 | 
            -
                 | 
| 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 |  | 
    
        data/test/TestLineFormatter.rb
    CHANGED
    
    | @@ -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("< | 
| 66 | 
            -
                assert_equal("< | 
| 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("< | 
| 69 | 
            -
                assert_equal("< | 
| 64 | 
            +
                formatted = formatter.format_line("<div name=\"hello>\"/>")
         | 
| 65 | 
            +
                assert_equal("<div name=\"hello>\"/>",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 | 
            -
             | 
| 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>\" rel=\"tag\"/>")
         | 
| 85 | 
            +
                assert_equal("<a href=\"hello>\" 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(" < & > ")
         | 
| @@ -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' + '@' + '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' + '@' + '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' + '@' + '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' + '@' + '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 | 
            -
             | 
| 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=\"/ | 
| 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 | 
            -
            # | 
| 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 | 
| 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[<Error:> 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> 
         |