PHP Classes

File: vendor/dnoegel/php-xdg-base-dir/tests/XdgTest.php

Recommend this page to a friend!
  Classes of Renato De Oliveira Lucena   PHP Pokemon Script   vendor/dnoegel/php-xdg-base-dir/tests/XdgTest.php   Download  
File: vendor/dnoegel/php-xdg-base-dir/tests/XdgTest.php
Role: Class source
Content type: text/plain
Description: Class source
Class: PHP Pokemon Script
Provides an API to manage a database of Pokemons
Author: By
Last change:
Date: 6 years ago
Size: 3,262 bytes
 

Contents

Class file image Download
<?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);
    }
}