14eb5e174Slisps<?php 24eb5e174Slisps 3*0c3a5702SAndreas Gohruse dokuwiki\ChangeLog\MediaChangeLog; 4*0c3a5702SAndreas Gohruse dokuwiki\ChangeLog\PageChangeLog; 5*0c3a5702SAndreas Gohr 64eb5e174Slisps/** 74eb5e174Slisps * Tests for requesting revisioninfo of a revision of a page with getRevisionInfo() 84eb5e174Slisps * 94eb5e174Slisps * This class uses the files: 104eb5e174Slisps * - data/pages/mailinglist.txt 114eb5e174Slisps * - data/meta/mailinglist.changes 124eb5e174Slisps */ 1381e7bffeSlispsclass changelog_getlastrevisionat_test extends DokuWikiTest { 144eb5e174Slisps 154eb5e174Slisps private $pageid = 'mailinglist'; 164eb5e174Slisps 174eb5e174Slisps function setup() { 184eb5e174Slisps parent::setup(); 194eb5e174Slisps global $cache_revinfo; 204eb5e174Slisps $cache =& $cache_revinfo; 214eb5e174Slisps if(isset($cache['nonexist'])) { 224eb5e174Slisps unset($cache['nonexist']); 234eb5e174Slisps } 244eb5e174Slisps if(isset($cache['mailinglist'])) { 254eb5e174Slisps unset($cache['mailinglist']); 264eb5e174Slisps } 274eb5e174Slisps } 284eb5e174Slisps 294eb5e174Slisps 304eb5e174Slisps /** 314eb5e174Slisps * no nonexist.changes meta file available 324eb5e174Slisps */ 334eb5e174Slisps function test_changemetadatanotexists() { 344eb5e174Slisps $rev = 1362525899; 354eb5e174Slisps $id = 'nonexist'; 364eb5e174Slisps $revsexpected = false; 374eb5e174Slisps 384eb5e174Slisps $pagelog = new PageChangeLog($id, $chunk_size = 8192); 394eb5e174Slisps $revs = $pagelog->getLastRevisionAt($rev); 404eb5e174Slisps $this->assertEquals($revsexpected, $revs); 414eb5e174Slisps } 424eb5e174Slisps 434eb5e174Slisps /** 444eb5e174Slisps * start at exact current revision of mailinglist page 454eb5e174Slisps * 464eb5e174Slisps */ 474eb5e174Slisps function test_startatexactcurrentrev() { 484eb5e174Slisps $rev = 1385051947; 494eb5e174Slisps $revsexpected = ''; 504eb5e174Slisps 514eb5e174Slisps //set a known timestamp 524eb5e174Slisps touch(wikiFN($this->pageid), $rev); 534eb5e174Slisps 544eb5e174Slisps $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192); 554eb5e174Slisps $revs = $pagelog->getLastRevisionAt($rev); 564eb5e174Slisps $this->assertEquals($revsexpected, $revs); 574eb5e174Slisps 584eb5e174Slisps } 594eb5e174Slisps 604eb5e174Slisps /** 614eb5e174Slisps * test a future revision 624eb5e174Slisps * 634eb5e174Slisps */ 644eb5e174Slisps function test_futurerev() { 654eb5e174Slisps $rev = 1385051947; 664eb5e174Slisps $revsexpected = ''; 674eb5e174Slisps 684eb5e174Slisps //set a known timestamp 694eb5e174Slisps touch(wikiFN($this->pageid), $rev); 704eb5e174Slisps 714eb5e174Slisps $rev +=1; 724eb5e174Slisps 734eb5e174Slisps $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192); 744eb5e174Slisps $revs = $pagelog->getLastRevisionAt($rev); 754eb5e174Slisps $this->assertEquals($revsexpected, $revs); 764eb5e174Slisps 774eb5e174Slisps } 784eb5e174Slisps 794eb5e174Slisps /** 804eb5e174Slisps * start at exact last revision of mailinglist page 814eb5e174Slisps * 824eb5e174Slisps */ 834eb5e174Slisps function test_exactlastrev() { 844eb5e174Slisps $rev = 1360110636; 854eb5e174Slisps $revsexpected = 1360110636; 864eb5e174Slisps 874eb5e174Slisps $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192); 884eb5e174Slisps $revs = $pagelog->getLastRevisionAt($rev); 894eb5e174Slisps $this->assertEquals($revsexpected, $revs); 904eb5e174Slisps } 914eb5e174Slisps 924eb5e174Slisps 934eb5e174Slisps /** 944eb5e174Slisps * Request not existing revision 954eb5e174Slisps * 964eb5e174Slisps */ 974eb5e174Slisps function test_olderrev() { 984eb5e174Slisps $rev = 1; 994eb5e174Slisps $revexpected = false; 1004eb5e174Slisps 1014eb5e174Slisps $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192); 1024eb5e174Slisps $revfound = $pagelog->getLastRevisionAt($rev); 1034eb5e174Slisps $this->assertEquals($revexpected, $revfound); 1044eb5e174Slisps } 1054eb5e174Slisps 1064eb5e174Slisps /** 1074eb5e174Slisps * Start at non existing revision somewhere between existing revisions 1084eb5e174Slisps */ 1094eb5e174Slisps function test_notexistingrev() { 1104eb5e174Slisps $rev = 1362525890; 1114eb5e174Slisps $revexpected = 1362525359; 1124eb5e174Slisps 1134eb5e174Slisps $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192); 1144eb5e174Slisps $revfound = $pagelog->getLastRevisionAt($rev); 1154eb5e174Slisps $this->assertEquals($revexpected, $revfound); 1164eb5e174Slisps } 1174eb5e174Slisps 1184eb5e174Slisps /** 1194eb5e174Slisps * request nonexisting page 1204eb5e174Slisps * 1214eb5e174Slisps */ 1224eb5e174Slisps function test_notexistingpage() { 1234eb5e174Slisps $rev = 1385051947; 1244eb5e174Slisps $currentexpected = false; 1254eb5e174Slisps 1264eb5e174Slisps $pagelog = new PageChangeLog('nonexistingpage', $chunk_size = 8192); 1274eb5e174Slisps $current = $pagelog->getLastRevisionAt($rev); 1284eb5e174Slisps $this->assertEquals($currentexpected, $current); 1294eb5e174Slisps } 130aaaabdedSlisps 131aaaabdedSlisps /** 132aaaabdedSlisps * test get correct revision on deleted media 133aaaabdedSlisps * 134aaaabdedSlisps */ 135cad89f56Slisps function test_deletedimage() { 136cad89f56Slisps global $conf; 137cad89f56Slisps global $AUTH_ACL; 138cad89f56Slisps 139cad89f56Slisps //we need to have a user with AUTH_DELETE rights 140cad89f56Slisps //save settings 141cad89f56Slisps $oldSuperUser = $conf['superuser']; 142cad89f56Slisps $oldUseacl = $conf['useacl']; 143cad89f56Slisps $oldRemoteUser = $_SERVER['REMOTE_USER']; 144cad89f56Slisps 145cad89f56Slisps $conf['superuser'] = 'admin'; 146cad89f56Slisps $conf['useacl'] = 1; 147cad89f56Slisps $_SERVER['REMOTE_USER'] = 'admin'; 148cad89f56Slisps 149cad89f56Slisps $image = 'wiki:imageat.png'; 150cad89f56Slisps 151cad89f56Slisps $ret = copy(mediaFn('wiki:kind_zu_katze.png'),mediaFn($image)); 152cad89f56Slisps 153aaaabdedSlisps $revexpected = @filemtime(mediaFn($image)); 154aaaabdedSlisps $rev = $revexpected + 10; 155aaaabdedSlisps 1567f48c40eSMichael Hamann $this->waitForTick(true); 1577f48c40eSMichael Hamann 158cad89f56Slisps $ret = media_delete($image, 0); 159aaaabdedSlisps 160*0c3a5702SAndreas Gohr $medialog = new MediaChangeLog($image); 161aaaabdedSlisps $current = $medialog->getLastRevisionAt($rev); 1627f48c40eSMichael Hamann // as we wait for a tick, we should get something greater than the timestamp 1637f48c40eSMichael Hamann $this->assertGreaterThan($revexpected, $current); 1647f48c40eSMichael Hamann // however, it should be less than the current time or equal to it 1657f48c40eSMichael Hamann $this->assertLessThanOrEqual(time(), $current); 166aaaabdedSlisps 167cad89f56Slisps //restore settings 168cad89f56Slisps $_SERVER['REMOTE_USER'] = $oldRemoteUser; 169cad89f56Slisps $conf['superuser'] = $oldSuperUser; 170cad89f56Slisps $conf['useacl'] = $oldUseacl; 171aaaabdedSlisps } 1724eb5e174Slisps} 173