1<?php 2 3/** 4 * Tests for requesting revisioninfo of a revision of a page with getRevisionInfo() 5 * 6 * This class uses the files: 7 * - data/pages/mailinglist.txt 8 * - data/meta/mailinglist.changes 9 */ 10class changelog_getlastrevisionat_test extends DokuWikiTest { 11 12 private $pageid = 'mailinglist'; 13 14 function setup() { 15 parent::setup(); 16 global $cache_revinfo; 17 $cache =& $cache_revinfo; 18 if(isset($cache['nonexist'])) { 19 unset($cache['nonexist']); 20 } 21 if(isset($cache['mailinglist'])) { 22 unset($cache['mailinglist']); 23 } 24 } 25 26 27 /** 28 * no nonexist.changes meta file available 29 */ 30 function test_changemetadatanotexists() { 31 $rev = 1362525899; 32 $id = 'nonexist'; 33 $revsexpected = false; 34 35 $pagelog = new PageChangeLog($id, $chunk_size = 8192); 36 $revs = $pagelog->getLastRevisionAt($rev); 37 $this->assertEquals($revsexpected, $revs); 38 } 39 40 /** 41 * start at exact current revision of mailinglist page 42 * 43 */ 44 function test_startatexactcurrentrev() { 45 $rev = 1385051947; 46 $revsexpected = ''; 47 48 //set a known timestamp 49 touch(wikiFN($this->pageid), $rev); 50 51 $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192); 52 $revs = $pagelog->getLastRevisionAt($rev); 53 $this->assertEquals($revsexpected, $revs); 54 55 } 56 57 /** 58 * test a future revision 59 * 60 */ 61 function test_futurerev() { 62 $rev = 1385051947; 63 $revsexpected = ''; 64 65 //set a known timestamp 66 touch(wikiFN($this->pageid), $rev); 67 68 $rev +=1; 69 70 $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192); 71 $revs = $pagelog->getLastRevisionAt($rev); 72 $this->assertEquals($revsexpected, $revs); 73 74 } 75 76 /** 77 * start at exact last revision of mailinglist page 78 * 79 */ 80 function test_exactlastrev() { 81 $rev = 1360110636; 82 $revsexpected = 1360110636; 83 84 $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192); 85 $revs = $pagelog->getLastRevisionAt($rev); 86 $this->assertEquals($revsexpected, $revs); 87 } 88 89 90 /** 91 * Request not existing revision 92 * 93 */ 94 function test_olderrev() { 95 $rev = 1; 96 $revexpected = false; 97 98 $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192); 99 $revfound = $pagelog->getLastRevisionAt($rev); 100 $this->assertEquals($revexpected, $revfound); 101 } 102 103 /** 104 * Start at non existing revision somewhere between existing revisions 105 */ 106 function test_notexistingrev() { 107 $rev = 1362525890; 108 $revexpected = 1362525359; 109 110 $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192); 111 $revfound = $pagelog->getLastRevisionAt($rev); 112 $this->assertEquals($revexpected, $revfound); 113 } 114 115 /** 116 * request nonexisting page 117 * 118 */ 119 function test_notexistingpage() { 120 $rev = 1385051947; 121 $currentexpected = false; 122 123 $pagelog = new PageChangeLog('nonexistingpage', $chunk_size = 8192); 124 $current = $pagelog->getLastRevisionAt($rev); 125 $this->assertEquals($currentexpected, $current); 126 } 127 128 /** 129 * test get correct revision on deleted media 130 * 131 */ 132 function test_deletedimage() { 133 global $conf; 134 global $AUTH_ACL; 135 136 //we need to have a user with AUTH_DELETE rights 137 //save settings 138 $oldSuperUser = $conf['superuser']; 139 $oldUseacl = $conf['useacl']; 140 $oldRemoteUser = $_SERVER['REMOTE_USER']; 141 142 $conf['superuser'] = 'admin'; 143 $conf['useacl'] = 1; 144 $_SERVER['REMOTE_USER'] = 'admin'; 145 146 $image = 'wiki:imageat.png'; 147 148 $ret = copy(mediaFn('wiki:kind_zu_katze.png'),mediaFn($image)); 149 150 $revexpected = @filemtime(mediaFn($image)); 151 $rev = $revexpected + 10; 152 153 $ret = media_delete($image, 0); 154 155 $medialog = new MediaChangelog($image); 156 $current = $medialog->getLastRevisionAt($rev); 157 $this->assertEquals($revexpected, $current); 158 159 //restore settings 160 $_SERVER['REMOTE_USER'] = $oldRemoteUser; 161 $conf['superuser'] = $oldSuperUser; 162 $conf['useacl'] = $oldUseacl; 163 } 164} 165