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