11987d368SPhy<?php 2*bf6f54b8SAndreas Gohr 31987d368SPhy/** 4*bf6f54b8SAndreas Gohr * Class parserutils_set_metadata_test 51987d368SPhy */ 61987d368SPhyclass parserutils_set_metadata_test extends DokuWikiTest { 71987d368SPhy // the id used for this test case 81987d368SPhy private $id; 91987d368SPhy 10*bf6f54b8SAndreas Gohr /** 11*bf6f54b8SAndreas Gohr * Set up fake user environment with for the gieven user 12*bf6f54b8SAndreas Gohr * 13*bf6f54b8SAndreas Gohr * @param string $user 14*bf6f54b8SAndreas Gohr */ 15*bf6f54b8SAndreas Gohr function helper_prepare_user($user = '1') { 161987d368SPhy global $INFO, $USERINFO; 17*bf6f54b8SAndreas Gohr 18*bf6f54b8SAndreas Gohr // prepare fake users 19*bf6f54b8SAndreas Gohr static $users = [ 20*bf6f54b8SAndreas Gohr '1' => [ 211987d368SPhy 'pass' => '179ad45c6ce2cb97cf1029e212046e81', 221987d368SPhy 'name' => 'Tester1', 231987d368SPhy 'mail' => 'tester1@example.com', 241987d368SPhy 'grps' => array('admin', 'user'), 25*bf6f54b8SAndreas Gohr ] 26*bf6f54b8SAndreas Gohr , 27*bf6f54b8SAndreas Gohr 'tester2' => [ 28*bf6f54b8SAndreas Gohr 'pass' => '179ad45c6ce2cb97cf1029e212046e81', 29*bf6f54b8SAndreas Gohr 'name' => 'Tester2', 30*bf6f54b8SAndreas Gohr 'mail' => 'tester2@example.com', 31*bf6f54b8SAndreas Gohr 'grps' => array('user'), 32*bf6f54b8SAndreas Gohr ] 33*bf6f54b8SAndreas Gohr ]; 34*bf6f54b8SAndreas Gohr if(!isset($users[$user])) throw new RuntimeException('requested non-existing user'); 35*bf6f54b8SAndreas Gohr 36*bf6f54b8SAndreas Gohr // set up globals 37*bf6f54b8SAndreas Gohr $_SERVER['REMOTE_ADDR'] = '1.2.3.4'; 38*bf6f54b8SAndreas Gohr $USERINFO = $users[$user]; 391987d368SPhy $INFO['userinfo'] = $USERINFO; 40*bf6f54b8SAndreas Gohr $_SERVER['REMOTE_USER'] = $user; 411987d368SPhy } 42*bf6f54b8SAndreas Gohr 431987d368SPhy /** 441987d368SPhy * test array merge, including contributors with numeric keys and array data overwritting 451987d368SPhy */ 461987d368SPhy function test_array_replace(){ 471987d368SPhy // prepare user 48*bf6f54b8SAndreas Gohr $this->helper_prepare_user('1'); 491987d368SPhy 501987d368SPhy // prepare page 511987d368SPhy $this->id = 'test:set_metadata_array_replace'; 521987d368SPhy saveWikiText($this->id, 'Test', 'Test data setup'); 531987d368SPhy $meta = p_get_metadata($this->id); 541987d368SPhy 551987d368SPhy $this->assertEquals('1', $meta['user'], 'Initial page has wrong user ID'); 561987d368SPhy // $this->assertEquals(empty($meta['contributor']), true, 'Initial page should have no contributors'); 571987d368SPhy 581987d368SPhy // first revision with numeric user 59*bf6f54b8SAndreas Gohr $this->waitForTick(); 601987d368SPhy saveWikiText($this->id, 'Test1', 'Test first edit'); 611987d368SPhy $meta = p_get_metadata($this->id); 621987d368SPhy 631987d368SPhy $last_edit_date = $meta['date']['modified']; 641987d368SPhy $this->assertEquals(array('1'=>'Tester1'), $meta['contributor'], 'First edit contributors error'); 651987d368SPhy 661987d368SPhy // second revision with alphabetic user 67*bf6f54b8SAndreas Gohr $this->waitForTick(); 68*bf6f54b8SAndreas Gohr $this->helper_prepare_user('tester2'); 691987d368SPhy saveWikiText($this->id, 'Test2', 'Test second edit'); 701987d368SPhy $meta = p_get_metadata($this->id); 711987d368SPhy 721987d368SPhy $this->assertNotEquals($last_edit_date, $meta['date']['modified'], 'First edit date merge error'); 731987d368SPhy $this->assertEquals(array('tester2'=>'Tester2', '1'=>'Tester1'), $meta['contributor'], 'Second edit contributors error'); 741987d368SPhy 751987d368SPhy // third revision with the first user 76*bf6f54b8SAndreas Gohr $this->waitForTick(); 77*bf6f54b8SAndreas Gohr $this->helper_prepare_user('1'); 781987d368SPhy saveWikiText($this->id, 'Test3', 'Test third edit'); 791987d368SPhy $meta = p_get_metadata($this->id); 801987d368SPhy 811987d368SPhy $this->assertEquals(array('tester2'=>'Tester2', '1'=>'Tester1'), $meta['contributor'], 'Third edit contributors error'); 821987d368SPhy } 831987d368SPhy} 84