phpmyadmin/test/classes/FileTest.php
William Desportes d82eb1b24a
Mark extensions to skip tests on minimal php setups
This will help people packaging phpMyAdmin and also make our test suite runnable by more people.

Tested on alpine with the minimal extensions:
php-dom php-iconv php-mysqli php-json php-mbstring php-iconv php-session

[PHP Modules]
Core
date
dom
filter
hash
iconv
json
libxml
mbstring
mysqli
mysqlnd
openssl
pcre
readline
Reflection
session
SPL
standard
zlib



Signed-off-by: William Desportes <williamdes@wdes.fr>
2020-05-25 23:20:53 +02:00

97 lines
2.0 KiB
PHP

<?php
/**
* tests for File class
*/
declare(strict_types=1);
namespace PhpMyAdmin\Tests;
use PhpMyAdmin\File;
use function bin2hex;
use function file_get_contents;
/**
* tests for PhpMyAdmin\File class
*/
class FileTest extends AbstractTestCase
{
/**
* Setup function for test cases
*/
protected function setUp(): void
{
parent::setUp();
parent::loadDefaultConfig();
$GLOBALS['charset_conversion'] = false;
}
/**
* Test for File::getCompression
*
* @param string $file file string
* @param string $mime expected mime
*
* @dataProvider compressedFiles
*/
public function testMIME($file, $mime): void
{
$arr = new File($file);
$this->assertEquals($mime, $arr->getCompression());
}
/**
* Test for File::getContent
*
* @param string $file file string
*
* @dataProvider compressedFiles
*/
public function testBinaryContent($file): void
{
$data = '0x' . bin2hex(file_get_contents($file));
$file = new File($file);
$this->assertEquals($data, $file->getContent());
}
/**
* Test for File::read
*
* @param string $file file string
*
* @dataProvider compressedFiles
* @requires extension bz2 1
* @requires extension zip
*/
public function testReadCompressed($file): void
{
$file = new File($file);
$file->setDecompressContent(true);
$file->open();
$this->assertEquals("TEST FILE\n", $file->read(100));
$file->close();
}
/**
* Data provider for tests
*
* @return array Test data
*/
public function compressedFiles()
{
return [
[
'./test/test_data/test.gz',
'application/gzip',
],
[
'./test/test_data/test.bz2',
'application/bzip2',
],
[
'./test/test_data/test.zip',
'application/zip',
],
];
}
}