<?php declare(strict_types=1); namespace JKingWeb\NewsSync; use \org\bovigo\vfs\vfsStream; class TestConf extends \PHPUnit\Framework\TestCase { use Test\Tools; static $vfs; static $path; static function setUpBeforeClass() { self::$vfs = vfsStream::setup("root", null, [ 'confGood' => '<?php return Array("lang" => "xx");', 'confNotArray' => '<?php return 0;', 'confCorrupt' => '<?php return 0', 'confNotPHP' => 'DEAD BEEF', 'confEmpty' => '', 'confUnreadable' => '', ]); self::$path = self::$vfs->url()."/"; // set up a file without read access chmod(self::$path."confUnreadable", 0000); } static function tearDownAfterClass() { self::$path = null; self::$vfs = null; } function testLoadDefaultValues() { $this->assertInstanceOf(Conf::class, new Conf()); } /** * @depends testLoadDefaultValues */ function testImportFromArray() { $arr = ['lang' => "xx"]; $conf = new Conf(); $conf->import($arr); $this->assertEquals("xx", $conf->lang); } /** * @depends testImportFromArray */ function testImportFromFile() { $conf = new Conf(); $conf->importFile(self::$path."confGood"); $this->assertEquals("xx", $conf->lang); $conf = new Conf(self::$path."confGood"); $this->assertEquals("xx", $conf->lang); } /** * @depends testImportFromFile */ function testImportFromMissingFile() { $this->assertException("fileMissing", "Conf"); $conf = new Conf(self::$path."confMissing"); } /** * @depends testImportFromFile */ function testImportFromEmptyFile() { $this->assertException("fileCorrupt", "Conf"); $conf = new Conf(self::$path."confEmpty"); } /** * @depends testImportFromFile */ function testImportFromFileWithoutReadPermission() { $this->assertException("fileUnreadable", "Conf"); $conf = new Conf(self::$path."confUnreadable"); } /** * @depends testImportFromFile */ function testImportFromFileWhichIsNotAnArray() { $this->assertException("fileCorrupt", "Conf"); $conf = new Conf(self::$path."confNotArray"); } /** * @depends testImportFromFile */ function testImportFromFileWhichIsNotPhp() { $this->assertException("fileCorrupt", "Conf"); // this should not print the output of the non-PHP file $conf = new Conf(self::$path."confNotPHP"); } /** * @depends testImportFromFile */ function testImportFromCorruptFile() { $this->assertException("fileCorrupt", "Conf"); $conf = new Conf(self::$path."confCorrupt"); } }