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