forked from cloudinary/cloudinary_php
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathFileUtilsTest.php
More file actions
104 lines (86 loc) · 3.22 KB
/
FileUtilsTest.php
File metadata and controls
104 lines (86 loc) · 3.22 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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
<?php
/**
* This file is part of the Cloudinary PHP package.
*
* (c) Cloudinary
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Cloudinary\Test\Unit\Utils;
use Cloudinary\Api\Exception\GeneralError;
use Cloudinary\FileUtils;
use Cloudinary\Tag\ImageTag;
use PHPUnit\Framework\TestCase;
/**
* Class FileUtilsTest
*/
final class FileUtilsTest extends TestCase
{
public function testIsLocalFilePath()
{
$remoteFiles = [
'ftp://ftp.cloudinary.com/images/old_logo.png',
'http://cloudinary.com/images/old_logo.png',
'https://cloudinary.com/images/old_logo.png',
's3://s3-us-west-2.amazonaws.com/cloudinary/images/old_logo.png',
'gs://cloudinary/images/old_logo.png',
'data:image/gif;charset=utf-8;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7',
'data:image/gif;param1=value1;param2=value2;' .
'base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7',
'data:image/svg+xml;charset=utf-8;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPg',
'data:application/vnd.openxmlformats-officedocument.wordprocessingml.document;charset=utf-8;' .
'base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPg',
ImageTag::BLANK,
];
foreach ($remoteFiles as $file) {
self::assertFalse(FileUtils::isLocalFilePath($file));
}
$localFiles = [
'/etc/passwd',
'/usr/local',
'C:\\\\Program Files\\Program\\image.jpg',
];
foreach ($localFiles as $file) {
self::assertTrue(FileUtils::isLocalFilePath($file));
}
}
public function testSplitFilenameExtension()
{
$files = [
['file.ext', [null, 'file', 'ext']],
['file', [null, 'file', null]],
['file.not_ext', [null, 'file.not_ext', null]],
['path/to/file.ext', ['path/to', 'file', 'ext']],
];
foreach ($files as $file) {
self::assertEquals($file[1], FileUtils::splitPathFilenameExtension($file[0]));
}
}
public function testSafeFileOpenWithExistingFile()
{
$existingFile = __DIR__ . '/../../assets/sample.png';
$resource = FileUtils::safeFileOpen($existingFile, 'rb');
self::assertIsResource($resource);
self::assertEquals('stream', get_resource_type($resource));
fclose($resource);
}
public function testSafeFileOpenWithNonExistingFile()
{
$nonExistingFile = __DIR__ . '/../../assets/non_existing_file.txt';
$this->expectException(GeneralError::class);
FileUtils::safeFileOpen($nonExistingFile, 'rb');
}
public function testSafeFileOpenWithNonExistingFolder()
{
$nonExistingFile = 'foo/bar';
$this->expectException(GeneralError::class);
FileUtils::safeFileOpen($nonExistingFile, 'rb');
}
public function testSafeFileOpenWithEmptyPath()
{
$this->expectException(GeneralError::class);
$this->expectExceptionMessage('Path cannot be empty');
FileUtils::safeFileOpen('', 'rb');
}
}