From 2e28269baed195d58bbe169841eed176b171db76 Mon Sep 17 00:00:00 2001 From: VirtualTam Date: Wed, 11 Nov 2015 22:49:58 +0100 Subject: install: check file/directory permissions for Shaarli resources Relates to #40 Relates to #372 Additions: - FileUtils: IOException - ApplicationUtils: - check if Shaarli resources are accessible with sufficient permissions - basic test coverage - index.php: - check access permissions and redirect to an error page if needed: - before running the first installation Modifications: - LinkDB: - factorize datastore write code - check if the datastore (exists AND is writeable) OR (doesn't exist AND its parent dir is writable) - raise an IOException if needed Signed-off-by: VirtualTam --- tests/ApplicationUtilsTest.php | 69 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 tests/ApplicationUtilsTest.php (limited to 'tests/ApplicationUtilsTest.php') diff --git a/tests/ApplicationUtilsTest.php b/tests/ApplicationUtilsTest.php new file mode 100644 index 00000000..9a99c6c6 --- /dev/null +++ b/tests/ApplicationUtilsTest.php @@ -0,0 +1,69 @@ + 'cache', + 'CONFIG_FILE' => 'data/config.php', + 'DATADIR' => 'data', + 'DATASTORE' => 'data/datastore.php', + 'IPBANS_FILENAME' => 'data/ipbans.php', + 'LOG_FILE' => 'data/log.txt', + 'PAGECACHE' => 'pagecache', + 'RAINTPL_TMP' => 'tmp', + 'RAINTPL_TPL' => 'tpl', + 'UPDATECHECK_FILENAME' => 'data/lastupdatecheck.txt' + ); + $this->assertEquals( + array(), + ApplicationUtils::checkResourcePermissions($config) + ); + } + + /** + * Checks resource permissions for a non-existent Shaarli installation + */ + public function testCheckCurrentResourcePermissionsErrors() + { + $config = array( + 'CACHEDIR' => 'null/cache', + 'CONFIG_FILE' => 'null/data/config.php', + 'DATADIR' => 'null/data', + 'DATASTORE' => 'null/data/store.php', + 'IPBANS_FILENAME' => 'null/data/ipbans.php', + 'LOG_FILE' => 'null/data/log.txt', + 'PAGECACHE' => 'null/pagecache', + 'RAINTPL_TMP' => 'null/tmp', + 'RAINTPL_TPL' => 'null/tpl', + 'UPDATECHECK_FILENAME' => 'null/data/lastupdatecheck.txt' + ); + $this->assertEquals( + array( + '"null/tpl" directory is not readable', + '"null/cache" directory is not readable', + '"null/cache" directory is not writable', + '"null/data" directory is not readable', + '"null/data" directory is not writable', + '"null/pagecache" directory is not readable', + '"null/pagecache" directory is not writable', + '"null/tmp" directory is not readable', + '"null/tmp" directory is not writable' + ), + ApplicationUtils::checkResourcePermissions($config) + ); + } +} -- cgit v1.2.3