| Server IP : 3.96.16.70 / Your IP : 216.73.216.15 Web Server : Apache System : Linux ip-172-31-26-103.ca-central-1.compute.internal 6.1.163-186.299.amzn2023.x86_64 #1 SMP PREEMPT_DYNAMIC Tue Feb 24 16:35:42 UTC 2026 x86_64 User : ec2-user ( 1000) PHP Version : 8.4.18 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : OFF Directory : /var/www/html/prod1.wondermakr.com/phpmyadmin/test/classes/ |
Upload File : |
<?php
declare(strict_types=1);
namespace PhpMyAdmin\Tests;
use PhpMyAdmin\ZipExtension;
use ZipArchive;
use function file_put_contents;
use function tempnam;
use function unlink;
/**
* @covers \PhpMyAdmin\ZipExtension
* @requires extension zip
*/
class ZipExtensionTest extends AbstractTestCase
{
/** @var ZipExtension */
private $zipExtension;
protected function setUp(): void
{
parent::setUp();
$this->zipExtension = new ZipExtension(new ZipArchive());
}
/**
* Test for getContents
*
* @param string $file path to zip file
* @param string|null $specific_entry regular expression to match a file
* @param mixed $output expected output
*
* @dataProvider provideTestGetContents
*/
public function testGetContents(string $file, ?string $specific_entry, $output): void
{
self::assertSame($this->zipExtension->getContents($file, $specific_entry), $output);
}
/**
* Provider for testGetZipContents
*
* @return array
*/
public static function provideTestGetContents(): array
{
return [
'null as specific entry' => [
'./test/test_data/test.zip',
null,
[
'error' => '',
'data' => 'TEST FILE' . "\n",
],
],
'an existent specific entry' => [
'./test/test_data/test.zip',
'/test.file/',
[
'error' => '',
'data' => 'TEST FILE' . "\n",
],
],
'a nonexistent specific entry' => [
'./test/test_data/test.zip',
'/foobar/',
[
'error' => 'Error in ZIP archive: Could not find "/foobar/"',
'data' => '',
],
],
];
}
/**
* Test for findFile
*
* @param string $file path to zip file
* @param string $file_regexp regular expression for the file name to match
* @param mixed $output expected output
*
* @dataProvider provideTestFindFile
*/
public function testFindFile(string $file, string $file_regexp, $output): void
{
self::assertSame($this->zipExtension->findFile($file, $file_regexp), $output);
}
/**
* Provider for testFindFileFromZipArchive
*
* @return array Test data
*/
public static function provideTestFindFile(): array
{
return [
[
'./test/test_data/test.zip',
'/test/',
'test.file',
],
];
}
/**
* Test for getNumberOfFiles
*/
public function testGetNumberOfFiles(): void
{
self::assertSame($this->zipExtension->getNumberOfFiles('./test/test_data/test.zip'), 1);
}
/**
* Test for extract
*/
public function testExtract(): void
{
self::assertFalse($this->zipExtension->extract(
'./test/test_data/test.zip',
'wrongName'
));
self::assertSame("TEST FILE\n", $this->zipExtension->extract(
'./test/test_data/test.zip',
'test.file'
));
}
/**
* Test for createFile
*/
public function testCreateSingleFile(): void
{
$file = $this->zipExtension->createFile('Test content', 'test.txt');
self::assertNotEmpty($file);
self::assertIsString($file);
$tmp = tempnam('./', 'zip-test');
self::assertNotFalse($tmp);
self::assertNotFalse(file_put_contents($tmp, $file));
$zip = new ZipArchive();
self::assertTrue($zip->open($tmp));
self::assertSame(0, $zip->locateName('test.txt'));
$zip->close();
unlink($tmp);
}
/**
* Test for createFile
*/
public function testCreateFailure(): void
{
self::assertFalse($this->zipExtension->createFile(
'Content',
[
'name1.txt',
'name2.txt',
]
));
}
/**
* Test for createFile
*/
public function testCreateMultiFile(): void
{
$file = $this->zipExtension->createFile(
[
'Content',
'Content2',
],
[
'name1.txt',
'name2.txt',
]
);
self::assertNotEmpty($file);
self::assertIsString($file);
$tmp = tempnam('./', 'zip-test');
self::assertNotFalse($tmp);
self::assertNotFalse(file_put_contents($tmp, $file));
$zip = new ZipArchive();
self::assertTrue($zip->open($tmp));
self::assertSame(0, $zip->locateName('name1.txt'));
self::assertSame(1, $zip->locateName('name2.txt'));
$zip->close();
unlink($tmp);
}
}