Version 1
[yaffs-website] / vendor / dnoegel / php-xdg-base-dir / tests / XdgTest.php
diff --git a/vendor/dnoegel/php-xdg-base-dir/tests/XdgTest.php b/vendor/dnoegel/php-xdg-base-dir/tests/XdgTest.php
new file mode 100644 (file)
index 0000000..92c2e07
--- /dev/null
@@ -0,0 +1,116 @@
+<?php
+
+class XdgTest extends PHPUnit_Framework_TestCase
+{
+    /**
+     * @return \XdgBaseDir\Xdg
+     */
+    public function getXdg()
+    {
+        return new \XdgBaseDir\Xdg();
+    }
+
+    public function testGetHomeDir()
+    {
+         putenv('HOME=/fake-dir');
+         $this->assertEquals('/fake-dir', $this->getXdg()->getHomeDir());
+    }
+
+    public function testGetFallbackHomeDir()
+    {
+        putenv('HOME=');
+        putenv('HOMEDRIVE=C:');
+        putenv('HOMEPATH=fake-dir');
+        $this->assertEquals('C:/fake-dir', $this->getXdg()->getHomeDir());
+    }
+
+    public function testXdgPutCache()
+    {
+        putenv('XDG_DATA_HOME=tmp/');
+        putenv('XDG_CONFIG_HOME=tmp/');
+        putenv('XDG_CACHE_HOME=tmp/');
+        $this->assertEquals('tmp/', $this->getXdg()->getHomeCacheDir());
+    }
+
+    public function testXdgPutData()
+    {
+        putenv('XDG_DATA_HOME=tmp/');
+        $this->assertEquals('tmp/', $this->getXdg()->getHomeDataDir());
+    }
+
+    public function testXdgPutConfig()
+    {
+        putenv('XDG_CONFIG_HOME=tmp/');
+        $this->assertEquals('tmp/', $this->getXdg()->getHomeConfigDir());
+    }
+
+    public function testXdgDataDirsShouldIncludeHomeDataDir()
+    {
+        putenv('XDG_DATA_HOME=tmp/');
+        putenv('XDG_CONFIG_HOME=tmp/');
+
+        $this->assertArrayHasKey('tmp/', array_flip($this->getXdg()->getDataDirs()));
+    }
+
+    public function testXdgConfigDirsShouldIncludeHomeConfigDir()
+    {
+        putenv('XDG_CONFIG_HOME=tmp/');
+
+        $this->assertArrayHasKey('tmp/', array_flip($this->getXdg()->getConfigDirs()));
+    }
+
+    /**
+     * If XDG_RUNTIME_DIR is set, it should be returned
+     */
+    public function testGetRuntimeDir()
+    {
+        putenv('XDG_RUNTIME_DIR=/tmp/');
+        $runtimeDir = $this->getXdg()->getRuntimeDir();
+
+        $this->assertEquals(is_dir($runtimeDir), true);
+    }
+
+    /**
+     * In strict mode, an exception should be shown if XDG_RUNTIME_DIR does not exist
+     *
+     * @expectedException \RuntimeException
+     */
+    public function testGetRuntimeDirShouldThrowException()
+    {
+        putenv('XDG_RUNTIME_DIR=');
+        $this->getXdg()->getRuntimeDir(true);
+    }
+
+    /**
+     * In fallback mode a directory should be created
+     */
+    public function testGetRuntimeDirShouldCreateDirectory()
+    {
+        putenv('XDG_RUNTIME_DIR=');
+        $dir = $this->getXdg()->getRuntimeDir(false);
+        $permission = decoct(fileperms($dir) & 0777);
+        $this->assertEquals(700, $permission);
+    }
+
+    /**
+     * Ensure, that the fallback directories are created with correct permission
+     */
+    public function testGetRuntimeShouldDeleteDirsWithWrongPermission()
+    {
+        $runtimeDir = sys_get_temp_dir() . DIRECTORY_SEPARATOR . XdgBaseDir\Xdg::RUNTIME_DIR_FALLBACK . getenv('USER');
+
+        rmdir($runtimeDir);
+        mkdir($runtimeDir, 0764, true);
+
+        // Permission should be wrong now
+        $permission = decoct(fileperms($runtimeDir) & 0777);
+        $this->assertEquals(764, $permission);
+
+        putenv('XDG_RUNTIME_DIR=');
+        $dir = $this->getXdg()->getRuntimeDir(false);
+
+        // Permission should be fixed
+        $permission = decoct(fileperms($dir) & 0777);
+        $this->assertEquals(700, $permission);
+    }
+}