xref: /dokuwiki/_test/tests/inc/changelog_getlastrevisionat.test.php (revision 7f48c40e3df676e1687a06caf63827e2dbdea626)
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