-
-
Notifications
You must be signed in to change notification settings - Fork 3.6k
Expand file tree
/
Copy pathOpenDocumentTest.php
More file actions
50 lines (40 loc) · 1.67 KB
/
Copy pathOpenDocumentTest.php
File metadata and controls
50 lines (40 loc) · 1.67 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<?php
declare(strict_types=1);
namespace PhpMyAdmin\Tests;
use DateTime;
use PhpMyAdmin\OpenDocument;
use PhpMyAdmin\ZipExtension;
use PHPUnit\Framework\Attributes\CoversClass;
use PHPUnit\Framework\Attributes\RequiresPhpExtension;
use ZipArchive;
use function file_put_contents;
use function tempnam;
use function unlink;
#[CoversClass(OpenDocument::class)]
#[RequiresPhpExtension('zip')]
class OpenDocumentTest extends AbstractTestCase
{
public function testCreateDocument(): void
{
$document = OpenDocument::create('application/vnd.oasis.opendocument.text', '<data>');
$tmpFile = tempnam('./', 'open-document-test');
self::assertNotFalse($tmpFile);
self::assertNotFalse(file_put_contents($tmpFile, $document), 'The temp file should be written');
$zipExtension = new ZipExtension(new ZipArchive());
self::assertSame([
'error' => '',
'data' => 'application/vnd.oasis.opendocument.text',
], $zipExtension->getContents($tmpFile));
self::assertSame(['error' => '', 'data' => '<data>'], $zipExtension->getContents($tmpFile, '/content\.xml/'));
$dateTimeCreation = (new DateTime())->format('Y-m-d\TH:i');
self::assertStringContainsString(
// Do not use a full version or seconds could be out of sync and cause flaky test failures
'<meta:creation-date>' . $dateTimeCreation,
$zipExtension->getContents($tmpFile, '/meta\.xml/')['data'],
);
self::assertSame(5, $zipExtension->getNumberOfFiles($tmpFile));
// Unset to close any file that were left open.
unset($zipExtension);
self::assertTrue(unlink($tmpFile));
}
}