From def39d0dd7a81a4af9ad68b62c9e9823fbc2b38e Mon Sep 17 00:00:00 2001 From: ArthurHoaro Date: Sat, 10 Aug 2019 12:31:32 +0200 Subject: Run Unit Tests against PHP 7.4 Bump PHPUnit version and fix unit test - Globals are handled differently and are persistent through tests - Tests without assertions are marked as risky: some of them are just meant to check that no error is raised. --- tests/updater/UpdaterTest.php | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'tests/updater') diff --git a/tests/updater/UpdaterTest.php b/tests/updater/UpdaterTest.php index 93bc86c1..ac87e33c 100644 --- a/tests/updater/UpdaterTest.php +++ b/tests/updater/UpdaterTest.php @@ -724,6 +724,9 @@ $GLOBALS[\'privateLinkByDefault\'] = true;'; */ public function testUpdateMethodWebThumbnailerDisabled() { + if (isset($_SESSION['warnings'])) { + unset($_SESSION['warnings']); + } $this->conf->remove('thumbnails'); $this->conf->set('thumbnail.enable_thumbnails', false); $updater = new Updater([], [], $this->conf, true, $_SESSION); @@ -740,6 +743,9 @@ $GLOBALS[\'privateLinkByDefault\'] = true;'; */ public function testUpdateMethodWebThumbnailerNothingToDo() { + if (isset($_SESSION['warnings'])) { + unset($_SESSION['warnings']); + } $updater = new Updater([], [], $this->conf, true, $_SESSION); $this->assertTrue($updater->updateMethodWebThumbnailer()); $this->assertFalse($this->conf->exists('thumbnail')); -- cgit v1.2.3 From e26e2060f5470ce8bf4c5973284bae07b8af170a Mon Sep 17 00:00:00 2001 From: ArthurHoaro Date: Fri, 17 Jan 2020 21:34:12 +0100 Subject: Add and update unit test for the new system (Bookmark + Service) See #1307 --- tests/updater/DummyUpdater.php | 13 +- tests/updater/UpdaterTest.php | 684 +---------------------------------------- 2 files changed, 18 insertions(+), 679 deletions(-) (limited to 'tests/updater') diff --git a/tests/updater/DummyUpdater.php b/tests/updater/DummyUpdater.php index 9e866f1f..07c7f5c4 100644 --- a/tests/updater/DummyUpdater.php +++ b/tests/updater/DummyUpdater.php @@ -4,6 +4,7 @@ namespace Shaarli\Updater; use Exception; use ReflectionClass; use ReflectionMethod; +use Shaarli\Bookmark\BookmarkFileService; use Shaarli\Bookmark\LinkDB; use Shaarli\Config\ConfigManager; @@ -16,14 +17,14 @@ class DummyUpdater extends Updater /** * Object constructor. * - * @param array $doneUpdates Updates which are already done. - * @param LinkDB $linkDB LinkDB instance. - * @param ConfigManager $conf Configuration Manager instance. - * @param boolean $isLoggedIn True if the user is logged in. + * @param array $doneUpdates Updates which are already done. + * @param BookmarkFileService $bookmarkService LinkDB instance. + * @param ConfigManager $conf Configuration Manager instance. + * @param boolean $isLoggedIn True if the user is logged in. */ - public function __construct($doneUpdates, $linkDB, $conf, $isLoggedIn) + public function __construct($doneUpdates, $bookmarkService, $conf, $isLoggedIn) { - parent::__construct($doneUpdates, $linkDB, $conf, $isLoggedIn); + parent::__construct($doneUpdates, $bookmarkService, $conf, $isLoggedIn); // Retrieve all update methods. // For unit test, only retrieve final methods, diff --git a/tests/updater/UpdaterTest.php b/tests/updater/UpdaterTest.php index ac87e33c..c689982b 100644 --- a/tests/updater/UpdaterTest.php +++ b/tests/updater/UpdaterTest.php @@ -1,15 +1,9 @@ assertEquals(array(), read_updates_file('')); + $this->assertEquals(array(), UpdaterUtils::read_updates_file('')); $updatesFile = $this->conf->get('resource.data_dir') . '/updates.txt'; touch($updatesFile); - $this->assertEquals(array(), read_updates_file($updatesFile)); + $this->assertEquals(array(), UpdaterUtils::read_updates_file($updatesFile)); unlink($updatesFile); } @@ -64,31 +58,31 @@ class UpdaterTest extends \PHPUnit\Framework\TestCase $updatesFile = $this->conf->get('resource.data_dir') . '/updates.txt'; $updatesMethods = array('m1', 'm2', 'm3'); - write_updates_file($updatesFile, $updatesMethods); - $readMethods = read_updates_file($updatesFile); + UpdaterUtils::write_updates_file($updatesFile, $updatesMethods); + $readMethods = UpdaterUtils::read_updates_file($updatesFile); $this->assertEquals($readMethods, $updatesMethods); // Update $updatesMethods[] = 'm4'; - write_updates_file($updatesFile, $updatesMethods); - $readMethods = read_updates_file($updatesFile); + UpdaterUtils::write_updates_file($updatesFile, $updatesMethods); + $readMethods = UpdaterUtils::read_updates_file($updatesFile); $this->assertEquals($readMethods, $updatesMethods); unlink($updatesFile); } /** - * Test errors in write_updates_file(): empty updates file. + * Test errors in UpdaterUtils::write_updates_file(): empty updates file. * * @expectedException Exception * @expectedExceptionMessageRegExp /Updates file path is not set(.*)/ */ public function testWriteEmptyUpdatesFile() { - write_updates_file('', array('test')); + UpdaterUtils::write_updates_file('', array('test')); } /** - * Test errors in write_updates_file(): not writable updates file. + * Test errors in UpdaterUtils::write_updates_file(): not writable updates file. * * @expectedException Exception * @expectedExceptionMessageRegExp /Unable to write(.*)/ @@ -99,7 +93,7 @@ class UpdaterTest extends \PHPUnit\Framework\TestCase touch($updatesFile); chmod($updatesFile, 0444); try { - @write_updates_file($updatesFile, array('test')); + @UpdaterUtils::write_updates_file($updatesFile, array('test')); } catch (Exception $e) { unlink($updatesFile); throw $e; @@ -173,660 +167,4 @@ class UpdaterTest extends \PHPUnit\Framework\TestCase $updater = new DummyUpdater($updates, array(), $this->conf, true); $updater->update(); } - - /** - * Test update mergeDeprecatedConfig: - * 1. init a config file. - * 2. init a options.php file with update value. - * 3. merge. - * 4. check updated value in config file. - */ - public function testUpdateMergeDeprecatedConfig() - { - $this->conf->setConfigFile('tests/utils/config/configPhp'); - $this->conf->reset(); - - $optionsFile = 'tests/updater/options.php'; - $options = 'conf->setConfigFile('tests/updater/config'); - - // merge configs - $updater = new Updater(array(), array(), $this->conf, true); - // This writes a new config file in tests/updater/config.php - $updater->updateMethodMergeDeprecatedConfigFile(); - - // make sure updated field is changed - $this->conf->reload(); - $this->assertTrue($this->conf->get('privacy.default_private_links')); - $this->assertFalse(is_file($optionsFile)); - // Delete the generated file. - unlink($this->conf->getConfigFileExt()); - } - - /** - * Test mergeDeprecatedConfig in without options file. - */ - public function testMergeDeprecatedConfigNoFile() - { - $updater = new Updater(array(), array(), $this->conf, true); - $updater->updateMethodMergeDeprecatedConfigFile(); - - $this->assertEquals('root', $this->conf->get('credentials.login')); - } - - /** - * Test renameDashTags update method. - */ - public function testRenameDashTags() - { - $refDB = new \ReferenceLinkDB(); - $refDB->write(self::$testDatastore); - $linkDB = new LinkDB(self::$testDatastore, true, false); - - $this->assertEmpty($linkDB->filterSearch(array('searchtags' => 'exclude'))); - $updater = new Updater(array(), $linkDB, $this->conf, true); - $updater->updateMethodRenameDashTags(); - $this->assertNotEmpty($linkDB->filterSearch(array('searchtags' => 'exclude'))); - } - - /** - * Convert old PHP config file to JSON config. - */ - public function testConfigToJson() - { - $configFile = 'tests/utils/config/configPhp'; - $this->conf->setConfigFile($configFile); - $this->conf->reset(); - - // The ConfigIO is initialized with ConfigPhp. - $this->assertTrue($this->conf->getConfigIO() instanceof ConfigPhp); - - $updater = new Updater(array(), array(), $this->conf, false); - $done = $updater->updateMethodConfigToJson(); - $this->assertTrue($done); - - // The ConfigIO has been updated to ConfigJson. - $this->assertTrue($this->conf->getConfigIO() instanceof ConfigJson); - $this->assertTrue(file_exists($this->conf->getConfigFileExt())); - - // Check JSON config data. - $this->conf->reload(); - $this->assertEquals('root', $this->conf->get('credentials.login')); - $this->assertEquals('lala', $this->conf->get('redirector.url')); - $this->assertEquals('data/datastore.php', $this->conf->get('resource.datastore')); - $this->assertEquals('1', $this->conf->get('plugins.WALLABAG_VERSION')); - - rename($configFile . '.save.php', $configFile . '.php'); - unlink($this->conf->getConfigFileExt()); - } - - /** - * Launch config conversion update with an existing JSON file => nothing to do. - */ - public function testConfigToJsonNothingToDo() - { - $filetime = filemtime($this->conf->getConfigFileExt()); - $updater = new Updater(array(), array(), $this->conf, false); - $done = $updater->updateMethodConfigToJson(); - $this->assertTrue($done); - $expected = filemtime($this->conf->getConfigFileExt()); - $this->assertEquals($expected, $filetime); - } - - /** - * Test escapeUnescapedConfig with valid data. - */ - public function testEscapeConfig() - { - $sandbox = 'sandbox/config'; - copy(self::$configFile . '.json.php', $sandbox . '.json.php'); - $this->conf = new ConfigManager($sandbox); - $title = ''; - $headerLink = ''; - $this->conf->set('general.title', $title); - $this->conf->set('general.header_link', $headerLink); - $updater = new Updater(array(), array(), $this->conf, true); - $done = $updater->updateMethodEscapeUnescapedConfig(); - $this->assertTrue($done); - $this->conf->reload(); - $this->assertEquals(escape($title), $this->conf->get('general.title')); - $this->assertEquals(escape($headerLink), $this->conf->get('general.header_link')); - unlink($sandbox . '.json.php'); - } - - /** - * Test updateMethodApiSettings(): create default settings for the API (enabled + secret). - */ - public function testUpdateApiSettings() - { - $confFile = 'sandbox/config'; - copy(self::$configFile .'.json.php', $confFile .'.json.php'); - $conf = new ConfigManager($confFile); - $updater = new Updater(array(), array(), $conf, true); - - $this->assertFalse($conf->exists('api.enabled')); - $this->assertFalse($conf->exists('api.secret')); - $updater->updateMethodApiSettings(); - $conf->reload(); - $this->assertTrue($conf->get('api.enabled')); - $this->assertTrue($conf->exists('api.secret')); - unlink($confFile .'.json.php'); - } - - /** - * Test updateMethodApiSettings(): already set, do nothing. - */ - public function testUpdateApiSettingsNothingToDo() - { - $confFile = 'sandbox/config'; - copy(self::$configFile .'.json.php', $confFile .'.json.php'); - $conf = new ConfigManager($confFile); - $conf->set('api.enabled', false); - $conf->set('api.secret', ''); - $updater = new Updater(array(), array(), $conf, true); - $updater->updateMethodApiSettings(); - $this->assertFalse($conf->get('api.enabled')); - $this->assertEmpty($conf->get('api.secret')); - unlink($confFile .'.json.php'); - } - - /** - * Test updateMethodDatastoreIds(). - */ - public function testDatastoreIds() - { - $links = array( - '20121206_182539' => array( - 'linkdate' => '20121206_182539', - 'title' => 'Geek and Poke', - 'url' => 'http://geek-and-poke.com/', - 'description' => 'desc', - 'tags' => 'dev cartoon tag1 tag2 tag3 tag4 ', - 'updated' => '20121206_190301', - 'private' => false, - ), - '20121206_172539' => array( - 'linkdate' => '20121206_172539', - 'title' => 'UserFriendly - Samba', - 'url' => 'http://ars.userfriendly.org/cartoons/?id=20010306', - 'description' => '', - 'tags' => 'samba cartoon web', - 'private' => false, - ), - '20121206_142300' => array( - 'linkdate' => '20121206_142300', - 'title' => 'UserFriendly - Web Designer', - 'url' => 'http://ars.userfriendly.org/cartoons/?id=20121206', - 'description' => 'Naming conventions... #private', - 'tags' => 'samba cartoon web', - 'private' => true, - ), - ); - $refDB = new \ReferenceLinkDB(); - $refDB->setLinks($links); - $refDB->write(self::$testDatastore); - $linkDB = new LinkDB(self::$testDatastore, true, false); - - $checksum = hash_file('sha1', self::$testDatastore); - - $this->conf->set('resource.data_dir', 'sandbox'); - $this->conf->set('resource.datastore', self::$testDatastore); - - $updater = new Updater(array(), $linkDB, $this->conf, true); - $this->assertTrue($updater->updateMethodDatastoreIds()); - - $linkDB = new LinkDB(self::$testDatastore, true, false); - - $backup = glob($this->conf->get('resource.data_dir') . '/datastore.'. date('YmdH') .'*.php'); - $backup = $backup[0]; - - $this->assertFileExists($backup); - $this->assertEquals($checksum, hash_file('sha1', $backup)); - unlink($backup); - - $this->assertEquals(3, count($linkDB)); - $this->assertTrue(isset($linkDB[0])); - $this->assertFalse(isset($linkDB[0]['linkdate'])); - $this->assertEquals(0, $linkDB[0]['id']); - $this->assertEquals('UserFriendly - Web Designer', $linkDB[0]['title']); - $this->assertEquals('http://ars.userfriendly.org/cartoons/?id=20121206', $linkDB[0]['url']); - $this->assertEquals('Naming conventions... #private', $linkDB[0]['description']); - $this->assertEquals('samba cartoon web', $linkDB[0]['tags']); - $this->assertTrue($linkDB[0]['private']); - $this->assertEquals( - DateTime::createFromFormat(LinkDB::LINK_DATE_FORMAT, '20121206_142300'), - $linkDB[0]['created'] - ); - - $this->assertTrue(isset($linkDB[1])); - $this->assertFalse(isset($linkDB[1]['linkdate'])); - $this->assertEquals(1, $linkDB[1]['id']); - $this->assertEquals('UserFriendly - Samba', $linkDB[1]['title']); - $this->assertEquals( - DateTime::createFromFormat(LinkDB::LINK_DATE_FORMAT, '20121206_172539'), - $linkDB[1]['created'] - ); - - $this->assertTrue(isset($linkDB[2])); - $this->assertFalse(isset($linkDB[2]['linkdate'])); - $this->assertEquals(2, $linkDB[2]['id']); - $this->assertEquals('Geek and Poke', $linkDB[2]['title']); - $this->assertEquals( - DateTime::createFromFormat(LinkDB::LINK_DATE_FORMAT, '20121206_182539'), - $linkDB[2]['created'] - ); - $this->assertEquals( - DateTime::createFromFormat(LinkDB::LINK_DATE_FORMAT, '20121206_190301'), - $linkDB[2]['updated'] - ); - } - - /** - * Test updateMethodDatastoreIds() with the update already applied: nothing to do. - */ - public function testDatastoreIdsNothingToDo() - { - $refDB = new \ReferenceLinkDB(); - $refDB->write(self::$testDatastore); - $linkDB = new LinkDB(self::$testDatastore, true, false); - - $this->conf->set('resource.data_dir', 'sandbox'); - $this->conf->set('resource.datastore', self::$testDatastore); - - $checksum = hash_file('sha1', self::$testDatastore); - $updater = new Updater(array(), $linkDB, $this->conf, true); - $this->assertTrue($updater->updateMethodDatastoreIds()); - $this->assertEquals($checksum, hash_file('sha1', self::$testDatastore)); - } - - /** - * Test defaultTheme update with default settings: nothing to do. - */ - public function testDefaultThemeWithDefaultSettings() - { - $sandbox = 'sandbox/config'; - copy(self::$configFile . '.json.php', $sandbox . '.json.php'); - $this->conf = new ConfigManager($sandbox); - $updater = new Updater([], [], $this->conf, true); - $this->assertTrue($updater->updateMethodDefaultTheme()); - - $this->assertEquals('tpl/', $this->conf->get('resource.raintpl_tpl')); - $this->assertEquals('default', $this->conf->get('resource.theme')); - $this->conf = new ConfigManager($sandbox); - $this->assertEquals('tpl/', $this->conf->get('resource.raintpl_tpl')); - $this->assertEquals('default', $this->conf->get('resource.theme')); - unlink($sandbox . '.json.php'); - } - - /** - * Test defaultTheme update with a custom theme in a subfolder - */ - public function testDefaultThemeWithCustomTheme() - { - $theme = 'iamanartist'; - $sandbox = 'sandbox/config'; - copy(self::$configFile . '.json.php', $sandbox . '.json.php'); - $this->conf = new ConfigManager($sandbox); - mkdir('sandbox/'. $theme); - touch('sandbox/'. $theme .'/linklist.html'); - $this->conf->set('resource.raintpl_tpl', 'sandbox/'. $theme .'/'); - $updater = new Updater([], [], $this->conf, true); - $this->assertTrue($updater->updateMethodDefaultTheme()); - - $this->assertEquals('sandbox', $this->conf->get('resource.raintpl_tpl')); - $this->assertEquals($theme, $this->conf->get('resource.theme')); - $this->conf = new ConfigManager($sandbox); - $this->assertEquals('sandbox', $this->conf->get('resource.raintpl_tpl')); - $this->assertEquals($theme, $this->conf->get('resource.theme')); - unlink($sandbox . '.json.php'); - unlink('sandbox/'. $theme .'/linklist.html'); - rmdir('sandbox/'. $theme); - } - - /** - * Test updateMethodEscapeMarkdown with markdown plugin enabled - * => setting markdown_escape set to false. - */ - public function testEscapeMarkdownSettingToFalse() - { - $sandboxConf = 'sandbox/config'; - copy(self::$configFile . '.json.php', $sandboxConf . '.json.php'); - $this->conf = new ConfigManager($sandboxConf); - - $this->conf->set('general.enabled_plugins', ['markdown']); - $updater = new Updater([], [], $this->conf, true); - $this->assertTrue($updater->updateMethodEscapeMarkdown()); - $this->assertFalse($this->conf->get('security.markdown_escape')); - - // reload from file - $this->conf = new ConfigManager($sandboxConf); - $this->assertFalse($this->conf->get('security.markdown_escape')); - } - - - /** - * Test updateMethodEscapeMarkdown with markdown plugin disabled - * => setting markdown_escape set to true. - */ - public function testEscapeMarkdownSettingToTrue() - { - $sandboxConf = 'sandbox/config'; - copy(self::$configFile . '.json.php', $sandboxConf . '.json.php'); - $this->conf = new ConfigManager($sandboxConf); - - $this->conf->set('general.enabled_plugins', []); - $updater = new Updater([], [], $this->conf, true); - $this->assertTrue($updater->updateMethodEscapeMarkdown()); - $this->assertTrue($this->conf->get('security.markdown_escape')); - - // reload from file - $this->conf = new ConfigManager($sandboxConf); - $this->assertTrue($this->conf->get('security.markdown_escape')); - } - - /** - * Test updateMethodEscapeMarkdown with nothing to do (setting already enabled) - */ - public function testEscapeMarkdownSettingNothingToDoEnabled() - { - $sandboxConf = 'sandbox/config'; - copy(self::$configFile . '.json.php', $sandboxConf . '.json.php'); - $this->conf = new ConfigManager($sandboxConf); - $this->conf->set('security.markdown_escape', true); - $updater = new Updater([], [], $this->conf, true); - $this->assertTrue($updater->updateMethodEscapeMarkdown()); - $this->assertTrue($this->conf->get('security.markdown_escape')); - } - - /** - * Test updateMethodEscapeMarkdown with nothing to do (setting already disabled) - */ - public function testEscapeMarkdownSettingNothingToDoDisabled() - { - $this->conf->set('security.markdown_escape', false); - $updater = new Updater([], [], $this->conf, true); - $this->assertTrue($updater->updateMethodEscapeMarkdown()); - $this->assertFalse($this->conf->get('security.markdown_escape')); - } - - /** - * Test updateMethodPiwikUrl with valid data - */ - public function testUpdatePiwikUrlValid() - { - $sandboxConf = 'sandbox/config'; - copy(self::$configFile . '.json.php', $sandboxConf . '.json.php'); - $this->conf = new ConfigManager($sandboxConf); - $url = 'mypiwik.tld'; - $this->conf->set('plugins.PIWIK_URL', $url); - $updater = new Updater([], [], $this->conf, true); - $this->assertTrue($updater->updateMethodPiwikUrl()); - $this->assertEquals('http://'. $url, $this->conf->get('plugins.PIWIK_URL')); - - // reload from file - $this->conf = new ConfigManager($sandboxConf); - $this->assertEquals('http://'. $url, $this->conf->get('plugins.PIWIK_URL')); - } - - /** - * Test updateMethodPiwikUrl without setting - */ - public function testUpdatePiwikUrlEmpty() - { - $updater = new Updater([], [], $this->conf, true); - $this->assertTrue($updater->updateMethodPiwikUrl()); - $this->assertEmpty($this->conf->get('plugins.PIWIK_URL')); - } - - /** - * Test updateMethodPiwikUrl: valid URL, nothing to do - */ - public function testUpdatePiwikUrlNothingToDo() - { - $url = 'https://mypiwik.tld'; - $this->conf->set('plugins.PIWIK_URL', $url); - $updater = new Updater([], [], $this->conf, true); - $this->assertTrue($updater->updateMethodPiwikUrl()); - $this->assertEquals($url, $this->conf->get('plugins.PIWIK_URL')); - } - - /** - * Test updateMethodAtomDefault with show_atom set to false - * => update to true. - */ - public function testUpdateMethodAtomDefault() - { - $sandboxConf = 'sandbox/config'; - copy(self::$configFile . '.json.php', $sandboxConf . '.json.php'); - $this->conf = new ConfigManager($sandboxConf); - $this->conf->set('feed.show_atom', false); - $updater = new Updater([], [], $this->conf, true); - $this->assertTrue($updater->updateMethodAtomDefault()); - $this->assertTrue($this->conf->get('feed.show_atom')); - // reload from file - $this->conf = new ConfigManager($sandboxConf); - $this->assertTrue($this->conf->get('feed.show_atom')); - } - /** - * Test updateMethodAtomDefault with show_atom not set. - * => nothing to do - */ - public function testUpdateMethodAtomDefaultNoExist() - { - $sandboxConf = 'sandbox/config'; - copy(self::$configFile . '.json.php', $sandboxConf . '.json.php'); - $this->conf = new ConfigManager($sandboxConf); - $updater = new Updater([], [], $this->conf, true); - $this->assertTrue($updater->updateMethodAtomDefault()); - $this->assertTrue($this->conf->get('feed.show_atom')); - } - /** - * Test updateMethodAtomDefault with show_atom set to true. - * => nothing to do - */ - public function testUpdateMethodAtomDefaultAlreadyTrue() - { - $sandboxConf = 'sandbox/config'; - copy(self::$configFile . '.json.php', $sandboxConf . '.json.php'); - $this->conf = new ConfigManager($sandboxConf); - $this->conf->set('feed.show_atom', true); - $updater = new Updater([], [], $this->conf, true); - $this->assertTrue($updater->updateMethodAtomDefault()); - $this->assertTrue($this->conf->get('feed.show_atom')); - } - - /** - * Test updateMethodDownloadSizeAndTimeoutConf, it should be set if none is already defined. - */ - public function testUpdateMethodDownloadSizeAndTimeoutConf() - { - $sandboxConf = 'sandbox/config'; - copy(self::$configFile . '.json.php', $sandboxConf . '.json.php'); - $this->conf = new ConfigManager($sandboxConf); - $updater = new Updater([], [], $this->conf, true); - $this->assertTrue($updater->updateMethodDownloadSizeAndTimeoutConf()); - $this->assertEquals(4194304, $this->conf->get('general.download_max_size')); - $this->assertEquals(30, $this->conf->get('general.download_timeout')); - - $this->conf = new ConfigManager($sandboxConf); - $this->assertEquals(4194304, $this->conf->get('general.download_max_size')); - $this->assertEquals(30, $this->conf->get('general.download_timeout')); - } - - /** - * Test updateMethodDownloadSizeAndTimeoutConf, it shouldn't be set if it is already defined. - */ - public function testUpdateMethodDownloadSizeAndTimeoutConfIgnore() - { - $sandboxConf = 'sandbox/config'; - copy(self::$configFile . '.json.php', $sandboxConf . '.json.php'); - $this->conf = new ConfigManager($sandboxConf); - $this->conf->set('general.download_max_size', 38); - $this->conf->set('general.download_timeout', 70); - $updater = new Updater([], [], $this->conf, true); - $this->assertTrue($updater->updateMethodDownloadSizeAndTimeoutConf()); - $this->assertEquals(38, $this->conf->get('general.download_max_size')); - $this->assertEquals(70, $this->conf->get('general.download_timeout')); - } - - /** - * Test updateMethodDownloadSizeAndTimeoutConf, only the maz size should be set here. - */ - public function testUpdateMethodDownloadSizeAndTimeoutConfOnlySize() - { - $sandboxConf = 'sandbox/config'; - copy(self::$configFile . '.json.php', $sandboxConf . '.json.php'); - $this->conf = new ConfigManager($sandboxConf); - $this->conf->set('general.download_max_size', 38); - $updater = new Updater([], [], $this->conf, true); - $this->assertTrue($updater->updateMethodDownloadSizeAndTimeoutConf()); - $this->assertEquals(38, $this->conf->get('general.download_max_size')); - $this->assertEquals(30, $this->conf->get('general.download_timeout')); - } - - /** - * Test updateMethodDownloadSizeAndTimeoutConf, only the time out should be set here. - */ - public function testUpdateMethodDownloadSizeAndTimeoutConfOnlyTimeout() - { - $sandboxConf = 'sandbox/config'; - copy(self::$configFile . '.json.php', $sandboxConf . '.json.php'); - $this->conf = new ConfigManager($sandboxConf); - $this->conf->set('general.download_timeout', 3); - $updater = new Updater([], [], $this->conf, true); - $this->assertTrue($updater->updateMethodDownloadSizeAndTimeoutConf()); - $this->assertEquals(4194304, $this->conf->get('general.download_max_size')); - $this->assertEquals(3, $this->conf->get('general.download_timeout')); - } - - /** - * Test updateMethodWebThumbnailer with thumbnails enabled. - */ - public function testUpdateMethodWebThumbnailerEnabled() - { - $this->conf->remove('thumbnails'); - $this->conf->set('thumbnail.enable_thumbnails', true); - $updater = new Updater([], [], $this->conf, true, $_SESSION); - $this->assertTrue($updater->updateMethodWebThumbnailer()); - $this->assertFalse($this->conf->exists('thumbnail')); - $this->assertEquals(\Shaarli\Thumbnailer::MODE_ALL, $this->conf->get('thumbnails.mode')); - $this->assertEquals(125, $this->conf->get('thumbnails.width')); - $this->assertEquals(90, $this->conf->get('thumbnails.height')); - $this->assertContains('You have enabled or changed thumbnails', $_SESSION['warnings'][0]); - } - - /** - * Test updateMethodWebThumbnailer with thumbnails disabled. - */ - public function testUpdateMethodWebThumbnailerDisabled() - { - if (isset($_SESSION['warnings'])) { - unset($_SESSION['warnings']); - } - $this->conf->remove('thumbnails'); - $this->conf->set('thumbnail.enable_thumbnails', false); - $updater = new Updater([], [], $this->conf, true, $_SESSION); - $this->assertTrue($updater->updateMethodWebThumbnailer()); - $this->assertFalse($this->conf->exists('thumbnail')); - $this->assertEquals(Thumbnailer::MODE_NONE, $this->conf->get('thumbnails.mode')); - $this->assertEquals(125, $this->conf->get('thumbnails.width')); - $this->assertEquals(90, $this->conf->get('thumbnails.height')); - $this->assertTrue(empty($_SESSION['warnings'])); - } - - /** - * Test updateMethodWebThumbnailer with thumbnails disabled. - */ - public function testUpdateMethodWebThumbnailerNothingToDo() - { - if (isset($_SESSION['warnings'])) { - unset($_SESSION['warnings']); - } - $updater = new Updater([], [], $this->conf, true, $_SESSION); - $this->assertTrue($updater->updateMethodWebThumbnailer()); - $this->assertFalse($this->conf->exists('thumbnail')); - $this->assertEquals(Thumbnailer::MODE_COMMON, $this->conf->get('thumbnails.mode')); - $this->assertEquals(90, $this->conf->get('thumbnails.width')); - $this->assertEquals(53, $this->conf->get('thumbnails.height')); - $this->assertTrue(empty($_SESSION['warnings'])); - } - - /** - * Test updateMethodSetSticky(). - */ - public function testUpdateStickyValid() - { - $blank = [ - 'id' => 1, - 'url' => 'z', - 'title' => '', - 'description' => '', - 'tags' => '', - 'created' => new DateTime(), - ]; - $links = [ - 1 => ['id' => 1] + $blank, - 2 => ['id' => 2] + $blank, - ]; - $refDB = new \ReferenceLinkDB(); - $refDB->setLinks($links); - $refDB->write(self::$testDatastore); - $linkDB = new LinkDB(self::$testDatastore, true, false); - - $updater = new Updater(array(), $linkDB, $this->conf, true); - $this->assertTrue($updater->updateMethodSetSticky()); - - $linkDB = new LinkDB(self::$testDatastore, true, false); - foreach ($linkDB as $link) { - $this->assertFalse($link['sticky']); - } - } - - /** - * Test updateMethodSetSticky(). - */ - public function testUpdateStickyNothingToDo() - { - $blank = [ - 'id' => 1, - 'url' => 'z', - 'title' => '', - 'description' => '', - 'tags' => '', - 'created' => new DateTime(), - ]; - $links = [ - 1 => ['id' => 1, 'sticky' => true] + $blank, - 2 => ['id' => 2] + $blank, - ]; - $refDB = new \ReferenceLinkDB(); - $refDB->setLinks($links); - $refDB->write(self::$testDatastore); - $linkDB = new LinkDB(self::$testDatastore, true, false); - - $updater = new Updater(array(), $linkDB, $this->conf, true); - $this->assertTrue($updater->updateMethodSetSticky()); - - $linkDB = new LinkDB(self::$testDatastore, true, false); - $this->assertTrue($linkDB[1]['sticky']); - } - - /** - * Test updateMethodRemoveRedirector(). - */ - public function testUpdateRemoveRedirector() - { - $sandboxConf = 'sandbox/config'; - copy(self::$configFile . '.json.php', $sandboxConf . '.json.php'); - $this->conf = new ConfigManager($sandboxConf); - $updater = new Updater([], null, $this->conf, true); - $this->assertTrue($updater->updateMethodRemoveRedirector()); - $this->assertFalse($this->conf->exists('redirector')); - $this->conf = new ConfigManager($sandboxConf); - $this->assertFalse($this->conf->exists('redirector')); - } } -- cgit v1.2.3 From 1a8ac737e52cb25a5c346232ee398f5908cee7d7 Mon Sep 17 00:00:00 2001 From: ArthurHoaro Date: Mon, 6 Jul 2020 08:04:35 +0200 Subject: Process main page (linklist) through Slim controller Including a bunch of improvements on the container, and helper used across new controllers. --- tests/updater/UpdaterTest.php | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'tests/updater') diff --git a/tests/updater/UpdaterTest.php b/tests/updater/UpdaterTest.php index c689982b..afc35aec 100644 --- a/tests/updater/UpdaterTest.php +++ b/tests/updater/UpdaterTest.php @@ -2,7 +2,10 @@ namespace Shaarli\Updater; use Exception; +use Shaarli\Bookmark\BookmarkFileService; +use Shaarli\Bookmark\BookmarkServiceInterface; use Shaarli\Config\ConfigManager; +use Shaarli\History; require_once 'tests/updater/DummyUpdater.php'; require_once 'tests/utils/ReferenceLinkDB.php'; @@ -29,6 +32,12 @@ class UpdaterTest extends \PHPUnit\Framework\TestCase */ protected $conf; + /** @var BookmarkServiceInterface */ + protected $bookmarkService; + + /** @var Updater */ + protected $updater; + /** * Executed before each test. */ @@ -36,6 +45,8 @@ class UpdaterTest extends \PHPUnit\Framework\TestCase { copy('tests/utils/config/configJson.json.php', self::$configFile .'.json.php'); $this->conf = new ConfigManager(self::$configFile); + $this->bookmarkService = new BookmarkFileService($this->conf, $this->createMock(History::class), true); + $this->updater = new Updater([], $this->bookmarkService, $this->conf, true); } /** @@ -167,4 +178,12 @@ class UpdaterTest extends \PHPUnit\Framework\TestCase $updater = new DummyUpdater($updates, array(), $this->conf, true); $updater->update(); } + + public function testUpdateMethodRelativeHomeLinkRename(): void + { + $this->conf->set('general.header_link', '?'); + $this->updater->updateMethodRelativeHomeLink(); + + static::assertSame(); + } } -- cgit v1.2.3 From c4ad3d4f061d05a01db25aa54dda830ba776792d Mon Sep 17 00:00:00 2001 From: ArthurHoaro Date: Tue, 7 Jul 2020 10:15:56 +0200 Subject: Process Shaarli install through Slim controller --- tests/updater/UpdaterTest.php | 42 ++++++++++++++++++++++++++++++++++++++---- 1 file changed, 38 insertions(+), 4 deletions(-) (limited to 'tests/updater') diff --git a/tests/updater/UpdaterTest.php b/tests/updater/UpdaterTest.php index afc35aec..c801d451 100644 --- a/tests/updater/UpdaterTest.php +++ b/tests/updater/UpdaterTest.php @@ -7,9 +7,6 @@ use Shaarli\Bookmark\BookmarkServiceInterface; use Shaarli\Config\ConfigManager; use Shaarli\History; -require_once 'tests/updater/DummyUpdater.php'; -require_once 'tests/utils/ReferenceLinkDB.php'; -require_once 'inc/rain.tpl.class.php'; /** * Class UpdaterTest. @@ -35,6 +32,9 @@ class UpdaterTest extends \PHPUnit\Framework\TestCase /** @var BookmarkServiceInterface */ protected $bookmarkService; + /** @var \ReferenceLinkDB */ + protected $refDB; + /** @var Updater */ protected $updater; @@ -43,6 +43,9 @@ class UpdaterTest extends \PHPUnit\Framework\TestCase */ public function setUp() { + $this->refDB = new \ReferenceLinkDB(); + $this->refDB->write(self::$testDatastore); + copy('tests/utils/config/configJson.json.php', self::$configFile .'.json.php'); $this->conf = new ConfigManager(self::$configFile); $this->bookmarkService = new BookmarkFileService($this->conf, $this->createMock(History::class), true); @@ -181,9 +184,40 @@ class UpdaterTest extends \PHPUnit\Framework\TestCase public function testUpdateMethodRelativeHomeLinkRename(): void { + $this->updater->setBasePath('/subfolder'); $this->conf->set('general.header_link', '?'); + + $this->updater->updateMethodRelativeHomeLink(); + + static::assertSame('/subfolder/', $this->conf->get('general.header_link')); + } + + public function testUpdateMethodRelativeHomeLinkDoNotRename(): void + { + $this->updater->setBasePath('/subfolder'); + $this->conf->set('general.header_link', '~/my-blog'); + $this->updater->updateMethodRelativeHomeLink(); - static::assertSame(); + static::assertSame('~/my-blog', $this->conf->get('general.header_link')); + } + + public function testUpdateMethodMigrateExistingNotesUrl(): void + { + $this->updater->setBasePath('/subfolder'); + + $this->updater->updateMethodMigrateExistingNotesUrl(); + + static::assertSame($this->refDB->getLinks()[0]->getUrl(), $this->bookmarkService->get(0)->getUrl()); + static::assertSame($this->refDB->getLinks()[1]->getUrl(), $this->bookmarkService->get(1)->getUrl()); + static::assertSame($this->refDB->getLinks()[4]->getUrl(), $this->bookmarkService->get(4)->getUrl()); + static::assertSame($this->refDB->getLinks()[6]->getUrl(), $this->bookmarkService->get(6)->getUrl()); + static::assertSame($this->refDB->getLinks()[7]->getUrl(), $this->bookmarkService->get(7)->getUrl()); + static::assertSame($this->refDB->getLinks()[8]->getUrl(), $this->bookmarkService->get(8)->getUrl()); + static::assertSame($this->refDB->getLinks()[9]->getUrl(), $this->bookmarkService->get(9)->getUrl()); + static::assertSame('/subfolder/shaare/WDWyig', $this->bookmarkService->get(42)->getUrl()); + static::assertSame('/subfolder/shaare/WDWyig', $this->bookmarkService->get(41)->getUrl()); + static::assertSame('/subfolder/shaare/0gCTjQ', $this->bookmarkService->get(10)->getUrl()); + static::assertSame('/subfolder/shaare/PCRizQ', $this->bookmarkService->get(11)->getUrl()); } } -- cgit v1.2.3 From f7f08ceec1b218e1525153e8bd3d0199f2fb1c9d Mon Sep 17 00:00:00 2001 From: ArthurHoaro Date: Tue, 28 Jul 2020 22:24:41 +0200 Subject: Fix basePath in unit tests reference DB --- tests/updater/UpdaterTest.php | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) (limited to 'tests/updater') diff --git a/tests/updater/UpdaterTest.php b/tests/updater/UpdaterTest.php index c801d451..a7dd70bf 100644 --- a/tests/updater/UpdaterTest.php +++ b/tests/updater/UpdaterTest.php @@ -2,6 +2,7 @@ namespace Shaarli\Updater; use Exception; +use PHPUnit\Framework\TestCase; use Shaarli\Bookmark\BookmarkFileService; use Shaarli\Bookmark\BookmarkServiceInterface; use Shaarli\Config\ConfigManager; @@ -12,7 +13,7 @@ use Shaarli\History; * Class UpdaterTest. * Runs unit tests against the updater class. */ -class UpdaterTest extends \PHPUnit\Framework\TestCase +class UpdaterTest extends TestCase { /** * @var string Path to test datastore. @@ -194,7 +195,6 @@ class UpdaterTest extends \PHPUnit\Framework\TestCase public function testUpdateMethodRelativeHomeLinkDoNotRename(): void { - $this->updater->setBasePath('/subfolder'); $this->conf->set('general.header_link', '~/my-blog'); $this->updater->updateMethodRelativeHomeLink(); @@ -204,8 +204,6 @@ class UpdaterTest extends \PHPUnit\Framework\TestCase public function testUpdateMethodMigrateExistingNotesUrl(): void { - $this->updater->setBasePath('/subfolder'); - $this->updater->updateMethodMigrateExistingNotesUrl(); static::assertSame($this->refDB->getLinks()[0]->getUrl(), $this->bookmarkService->get(0)->getUrl()); @@ -215,9 +213,9 @@ class UpdaterTest extends \PHPUnit\Framework\TestCase static::assertSame($this->refDB->getLinks()[7]->getUrl(), $this->bookmarkService->get(7)->getUrl()); static::assertSame($this->refDB->getLinks()[8]->getUrl(), $this->bookmarkService->get(8)->getUrl()); static::assertSame($this->refDB->getLinks()[9]->getUrl(), $this->bookmarkService->get(9)->getUrl()); - static::assertSame('/subfolder/shaare/WDWyig', $this->bookmarkService->get(42)->getUrl()); - static::assertSame('/subfolder/shaare/WDWyig', $this->bookmarkService->get(41)->getUrl()); - static::assertSame('/subfolder/shaare/0gCTjQ', $this->bookmarkService->get(10)->getUrl()); - static::assertSame('/subfolder/shaare/PCRizQ', $this->bookmarkService->get(11)->getUrl()); + static::assertSame('/shaare/WDWyig', $this->bookmarkService->get(42)->getUrl()); + static::assertSame('/shaare/WDWyig', $this->bookmarkService->get(41)->getUrl()); + static::assertSame('/shaare/0gCTjQ', $this->bookmarkService->get(10)->getUrl()); + static::assertSame('/shaare/PCRizQ', $this->bookmarkService->get(11)->getUrl()); } } -- cgit v1.2.3 From 8f60e1206e45e67c96a7630d4ff94e72fe875f09 Mon Sep 17 00:00:00 2001 From: ArthurHoaro Date: Sat, 26 Sep 2020 15:08:39 +0200 Subject: Comply with PHPUnit V8: setup/teardown functions must return void --- tests/updater/UpdaterTest.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'tests/updater') diff --git a/tests/updater/UpdaterTest.php b/tests/updater/UpdaterTest.php index a7dd70bf..277f2fb0 100644 --- a/tests/updater/UpdaterTest.php +++ b/tests/updater/UpdaterTest.php @@ -42,7 +42,7 @@ class UpdaterTest extends TestCase /** * Executed before each test. */ - public function setUp() + protected function setUp(): void { $this->refDB = new \ReferenceLinkDB(); $this->refDB->write(self::$testDatastore); -- cgit v1.2.3 From b1baca99f280570d0336b4d71ad1f9dca213a35b Mon Sep 17 00:00:00 2001 From: ArthurHoaro Date: Sun, 27 Sep 2020 14:07:08 +0200 Subject: Convert legacy PHPUnit @expected* to new ->expect* Converted automatically using https://github.com/ArthurHoaro/convert-legacy-phpunit-expect --- tests/updater/UpdaterTest.php | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) (limited to 'tests/updater') diff --git a/tests/updater/UpdaterTest.php b/tests/updater/UpdaterTest.php index 277f2fb0..5cfcd5db 100644 --- a/tests/updater/UpdaterTest.php +++ b/tests/updater/UpdaterTest.php @@ -89,10 +89,11 @@ class UpdaterTest extends TestCase * Test errors in UpdaterUtils::write_updates_file(): empty updates file. * * @expectedException Exception - * @expectedExceptionMessageRegExp /Updates file path is not set(.*)/ */ public function testWriteEmptyUpdatesFile() { + $this->expectExceptionMessageRegExp('/Updates file path is not set(.*)/'); + UpdaterUtils::write_updates_file('', array('test')); } @@ -100,10 +101,11 @@ class UpdaterTest extends TestCase * Test errors in UpdaterUtils::write_updates_file(): not writable updates file. * * @expectedException Exception - * @expectedExceptionMessageRegExp /Unable to write(.*)/ */ public function testWriteUpdatesFileNotWritable() { + $this->expectExceptionMessageRegExp('/Unable to write(.*)/'); + $updatesFile = $this->conf->get('resource.data_dir') . '/updates.txt'; touch($updatesFile); chmod($updatesFile, 0444); @@ -168,11 +170,11 @@ class UpdaterTest extends TestCase /** * Test Update failed. - * - * @expectedException \Exception */ public function testUpdateFailed() { + $this->expectException(\Exception::class); + $updates = array( 'updateMethodDummy1', 'updateMethodDummy2', -- cgit v1.2.3 From a5a9cf23acd1248585173aa32757d9720b5f2d62 Mon Sep 17 00:00:00 2001 From: ArthurHoaro Date: Tue, 29 Sep 2020 14:41:40 +0200 Subject: Compatibility with PHPUnit 9 --- tests/updater/UpdaterTest.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'tests/updater') diff --git a/tests/updater/UpdaterTest.php b/tests/updater/UpdaterTest.php index 5cfcd5db..73029e07 100644 --- a/tests/updater/UpdaterTest.php +++ b/tests/updater/UpdaterTest.php @@ -2,11 +2,11 @@ namespace Shaarli\Updater; use Exception; -use PHPUnit\Framework\TestCase; use Shaarli\Bookmark\BookmarkFileService; use Shaarli\Bookmark\BookmarkServiceInterface; use Shaarli\Config\ConfigManager; use Shaarli\History; +use Shaarli\TestCase; /** -- cgit v1.2.3 From ab58f2542072e6bf34acd862f6cfed84b33feb29 Mon Sep 17 00:00:00 2001 From: ArthurHoaro Date: Tue, 29 Sep 2020 15:00:11 +0200 Subject: Compatibility with PHP 8 --- tests/updater/DummyUpdater.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'tests/updater') diff --git a/tests/updater/DummyUpdater.php b/tests/updater/DummyUpdater.php index 07c7f5c4..3403233f 100644 --- a/tests/updater/DummyUpdater.php +++ b/tests/updater/DummyUpdater.php @@ -37,7 +37,7 @@ class DummyUpdater extends Updater * * @return bool true. */ - final private function updateMethodDummy1() + final protected function updateMethodDummy1() { return true; } @@ -47,7 +47,7 @@ class DummyUpdater extends Updater * * @return bool true. */ - final private function updateMethodDummy2() + final protected function updateMethodDummy2() { return true; } @@ -57,7 +57,7 @@ class DummyUpdater extends Updater * * @return bool true. */ - final private function updateMethodDummy3() + final protected function updateMethodDummy3() { return true; } @@ -67,7 +67,7 @@ class DummyUpdater extends Updater * * @throws Exception error. */ - final private function updateMethodException() + final protected function updateMethodException() { throw new Exception('whatever'); } -- cgit v1.2.3 From f447edb73b1bcb52e86286467d3ec7b7bdc29948 Mon Sep 17 00:00:00 2001 From: ArthurHoaro Date: Tue, 29 Sep 2020 18:41:21 +0200 Subject: Fix missing @expectedException convertion --- tests/updater/UpdaterTest.php | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) (limited to 'tests/updater') diff --git a/tests/updater/UpdaterTest.php b/tests/updater/UpdaterTest.php index 73029e07..a6280b8c 100644 --- a/tests/updater/UpdaterTest.php +++ b/tests/updater/UpdaterTest.php @@ -87,11 +87,10 @@ class UpdaterTest extends TestCase /** * Test errors in UpdaterUtils::write_updates_file(): empty updates file. - * - * @expectedException Exception */ public function testWriteEmptyUpdatesFile() { + $this->expectException(\Exception::class); $this->expectExceptionMessageRegExp('/Updates file path is not set(.*)/'); UpdaterUtils::write_updates_file('', array('test')); @@ -99,11 +98,10 @@ class UpdaterTest extends TestCase /** * Test errors in UpdaterUtils::write_updates_file(): not writable updates file. - * - * @expectedException Exception */ public function testWriteUpdatesFileNotWritable() { + $this->expectException(\Exception::class); $this->expectExceptionMessageRegExp('/Unable to write(.*)/'); $updatesFile = $this->conf->get('resource.data_dir') . '/updates.txt'; -- cgit v1.2.3