1*0ad8f9f1SAndreas Gohr<?php 2*0ad8f9f1SAndreas Gohr 3*0ad8f9f1SAndreas Gohrnamespace dokuwiki\plugin\upgrade\test; 4*0ad8f9f1SAndreas Gohr 5*0ad8f9f1SAndreas Gohruse DokuWikiTest; 6*0ad8f9f1SAndreas Gohr 7*0ad8f9f1SAndreas Gohr/** 8*0ad8f9f1SAndreas Gohr * General tests for the upgrade plugin 9*0ad8f9f1SAndreas Gohr * 10*0ad8f9f1SAndreas Gohr * @group plugin_upgrade 11*0ad8f9f1SAndreas Gohr * @group plugins 12*0ad8f9f1SAndreas Gohr */ 13*0ad8f9f1SAndreas Gohrclass GeneralTest extends DokuWikiTest 14*0ad8f9f1SAndreas Gohr{ 15*0ad8f9f1SAndreas Gohr 16*0ad8f9f1SAndreas Gohr /** 17*0ad8f9f1SAndreas Gohr * Simple test to make sure the plugin.info.txt is in correct format 18*0ad8f9f1SAndreas Gohr */ 19*0ad8f9f1SAndreas Gohr public function testPluginInfo(): void 20*0ad8f9f1SAndreas Gohr { 21*0ad8f9f1SAndreas Gohr $file = __DIR__ . '/../plugin.info.txt'; 22*0ad8f9f1SAndreas Gohr $this->assertFileExists($file); 23*0ad8f9f1SAndreas Gohr 24*0ad8f9f1SAndreas Gohr $info = confToHash($file); 25*0ad8f9f1SAndreas Gohr 26*0ad8f9f1SAndreas Gohr $this->assertArrayHasKey('base', $info); 27*0ad8f9f1SAndreas Gohr $this->assertArrayHasKey('author', $info); 28*0ad8f9f1SAndreas Gohr $this->assertArrayHasKey('email', $info); 29*0ad8f9f1SAndreas Gohr $this->assertArrayHasKey('date', $info); 30*0ad8f9f1SAndreas Gohr $this->assertArrayHasKey('name', $info); 31*0ad8f9f1SAndreas Gohr $this->assertArrayHasKey('desc', $info); 32*0ad8f9f1SAndreas Gohr $this->assertArrayHasKey('url', $info); 33*0ad8f9f1SAndreas Gohr 34*0ad8f9f1SAndreas Gohr $this->assertEquals('upgrade', $info['base']); 35*0ad8f9f1SAndreas Gohr $this->assertRegExp('/^https?:\/\//', $info['url']); 36*0ad8f9f1SAndreas Gohr $this->assertTrue(mail_isvalid($info['email'])); 37*0ad8f9f1SAndreas Gohr $this->assertRegExp('/^\d\d\d\d-\d\d-\d\d$/', $info['date']); 38*0ad8f9f1SAndreas Gohr $this->assertTrue(false !== strtotime($info['date'])); 39*0ad8f9f1SAndreas Gohr } 40*0ad8f9f1SAndreas Gohr 41*0ad8f9f1SAndreas Gohr /** 42*0ad8f9f1SAndreas Gohr * Test to ensure that every conf['...'] entry in conf/default.php has a corresponding meta['...'] entry in 43*0ad8f9f1SAndreas Gohr * conf/metadata.php. 44*0ad8f9f1SAndreas Gohr */ 45*0ad8f9f1SAndreas Gohr public function testPluginConf(): void 46*0ad8f9f1SAndreas Gohr { 47*0ad8f9f1SAndreas Gohr $conf_file = __DIR__ . '/../conf/default.php'; 48*0ad8f9f1SAndreas Gohr $meta_file = __DIR__ . '/../conf/metadata.php'; 49*0ad8f9f1SAndreas Gohr 50*0ad8f9f1SAndreas Gohr if (!file_exists($conf_file) && !file_exists($meta_file)) { 51*0ad8f9f1SAndreas Gohr self::markTestSkipped('No config files exist -> skipping test'); 52*0ad8f9f1SAndreas Gohr } 53*0ad8f9f1SAndreas Gohr 54*0ad8f9f1SAndreas Gohr if (file_exists($conf_file)) { 55*0ad8f9f1SAndreas Gohr include($conf_file); 56*0ad8f9f1SAndreas Gohr } 57*0ad8f9f1SAndreas Gohr if (file_exists($meta_file)) { 58*0ad8f9f1SAndreas Gohr include($meta_file); 59*0ad8f9f1SAndreas Gohr } 60*0ad8f9f1SAndreas Gohr 61*0ad8f9f1SAndreas Gohr $this->assertEquals( 62*0ad8f9f1SAndreas Gohr gettype($conf), 63*0ad8f9f1SAndreas Gohr gettype($meta), 64*0ad8f9f1SAndreas Gohr 'Both ' . DOKU_PLUGIN . 'upgrade/conf/default.php and ' . DOKU_PLUGIN . 'upgrade/conf/metadata.php have to exist and contain the same keys.' 65*0ad8f9f1SAndreas Gohr ); 66*0ad8f9f1SAndreas Gohr 67*0ad8f9f1SAndreas Gohr if ($conf !== null && $meta !== null) { 68*0ad8f9f1SAndreas Gohr foreach ($conf as $key => $value) { 69*0ad8f9f1SAndreas Gohr $this->assertArrayHasKey( 70*0ad8f9f1SAndreas Gohr $key, 71*0ad8f9f1SAndreas Gohr $meta, 72*0ad8f9f1SAndreas Gohr 'Key $meta[\'' . $key . '\'] missing in ' . DOKU_PLUGIN . 'upgrade/conf/metadata.php' 73*0ad8f9f1SAndreas Gohr ); 74*0ad8f9f1SAndreas Gohr } 75*0ad8f9f1SAndreas Gohr 76*0ad8f9f1SAndreas Gohr foreach ($meta as $key => $value) { 77*0ad8f9f1SAndreas Gohr $this->assertArrayHasKey( 78*0ad8f9f1SAndreas Gohr $key, 79*0ad8f9f1SAndreas Gohr $conf, 80*0ad8f9f1SAndreas Gohr 'Key $conf[\'' . $key . '\'] missing in ' . DOKU_PLUGIN . 'upgrade/conf/default.php' 81*0ad8f9f1SAndreas Gohr ); 82*0ad8f9f1SAndreas Gohr } 83*0ad8f9f1SAndreas Gohr } 84*0ad8f9f1SAndreas Gohr 85*0ad8f9f1SAndreas Gohr } 86*0ad8f9f1SAndreas Gohr} 87