/home/aloic1/public_html/core/vendor/intervention/imagecache/tests/ImageCacheTest.php
<?php
namespace Intervention\Image\Test;
use Carbon\Carbon;
use Illuminate\Cache\Repository;
use Illuminate\Filesystem\Filesystem;
use Intervention\Image\Image;
use Intervention\Image\ImageCache;
use Intervention\Image\ImageManager;
use PHPUnit\Framework\TestCase;
class ImageCacheTest extends TestCase
{
public function tearDown(): void
{
$this->emptyCacheDirectory();
}
private function emptyCacheDirectory()
{
$files = new Filesystem();
foreach ($files->directories('storage/cache') as $directory) {
$files->deleteDirectory($directory);
}
}
public function testConstructor()
{
$img = new ImageCache();
$this->assertInstanceOf(ImageCache::class, $img);
$this->assertInstanceOf(ImageManager::class, $img->manager);
$this->assertInstanceOf(Repository::class, $img->cache);
}
public function testConstructorWithInjection()
{
// add new default cache
$manager = $this->createMock(ImageManager::class);
$cache = $this->createMock(Repository::class);
$img = new ImageCache($manager, $cache);
$this->assertInstanceOf(ImageCache::class, $img);
$this->assertInstanceOf(ImageManager::class, $img->manager);
$this->assertInstanceOf(Repository::class, $img->cache);
}
public function testMagicMethodCalls()
{
$img = new ImageCache();
$img->test1(1, 2, 3);
$img->test2(null);
$img->test3([1, 2, 3]);
$this->assertIsArray($img->calls);
$this->assertEquals(count($img->calls), 3);
$this->assertIsString($img->calls[0]['name']);
$this->assertIsString($img->calls[1]['name']);
$this->assertIsString($img->calls[2]['name']);
$this->assertIsArray($img->calls[0]['arguments']);
$this->assertIsArray($img->calls[1]['arguments']);
$this->assertIsArray($img->calls[2]['arguments']);
$this->assertEquals($img->calls[0]['name'], 'test1');
$this->assertEquals($img->calls[1]['name'], 'test2');
$this->assertEquals($img->calls[2]['name'], 'test3');
$this->assertEquals($img->calls[0]['arguments'][0], 1);
$this->assertEquals($img->calls[0]['arguments'][1], 2);
$this->assertEquals($img->calls[0]['arguments'][2], 3);
$this->assertTrue(is_null($img->calls[1]['arguments'][0]));
$this->assertIsArray($img->calls[2]['arguments'][0]);
$this->assertEquals($img->calls[2]['arguments'][0][0], 1);
$this->assertEquals($img->calls[2]['arguments'][0][1], 2);
$this->assertEquals($img->calls[2]['arguments'][0][2], 3);
}
public function testChecksum()
{
// checksum of empty image
$sum = 'ad7b81dea42cf2ef7525c274471e3ce6';
$img = new ImageCache();
$this->assertEquals($sum, $img->checksum());
// checksum of test image resized to 300x200
$sum = '9b3c716836cb438c4619eb0452740019';
$img = new ImageCache();
$img->make('foo/bar.jpg');
$img->resize(300, 200);
$this->assertEquals($sum, $img->checksum());
}
public function testChecksumWithClosure()
{
// closure must be serializable
$sum = '639d464bbda684f3d56410d1715076ba';
$img = new ImageCache();
$img->canvas(300, 200, 'fff');
$img->text('foo', 0, 0, function ($font) {
$font->valign('top');
$font->size(32);
});
$this->assertEquals($img->checksum(), $sum);
// checksum must differ, if values in closure change
$sum = '8b76a94baf81bb6f49451635612aeba5';
$img = new ImageCache();
$img->canvas(300, 200, 'fff');
$img->text('foo', 0, 0, function ($font) {
$font->valign('top');
$font->size(30);
});
$this->assertEquals($img->checksum(), $sum);
}
public function testChecksumWithProperty()
{
// checksum of test image resized to 300x200
$sum = '9b3c716836cb438c4619eb0452740019';
$img = new ImageCache();
$img->make('foo/bar.jpg');
$img->resize(300, 200);
$this->assertEquals($sum, $img->checksum());
// different checksum with property
$sum = '299243f98e2de9939ea59e5884ab1b8b';
$img = new ImageCache();
$img->setProperty('foo', 'bar');
$img->make('foo/bar.jpg');
$img->resize(300, 200);
$this->assertEquals($sum, $img->checksum());
}
public function testProcess()
{
$image = $this->getMockBuilder(Image::class)
->setMethods(['resize', 'blur'])
->getMock();
$manager = $this->getMockBuilder(ImageManager::class)
->setMethods(['make'])
->getMock();
$image->expects($this->once())
->method('resize')
->with($this->equalTo(300), $this->equalTo(200))
->willReturn($image);
$image->expects($this->once())
->method('blur')
->with($this->equalTo(2))
->willReturn($image);
$manager->expects($this->once())
->method('make')
->with($this->equalTo('foo/bar.jpg'))
->willReturn($image);
$cache = $this->createMock(Repository::class);
$img = new ImageCache($manager, $cache);
$img->make('foo/bar.jpg');
$img->resize(300, 200);
$img->blur(2);
$result = $img->process();
$this->assertEquals(count($img->calls), 0);
$this->assertInstanceOf(Image::class, $result);
$this->assertEquals('e795d413cf6598f49a8e773ce2e07589', $result->cachekey);
}
public function testGetImageFromCache()
{
$lifetime = 12;
$checksum = '2fff960136929390427f9409eac34c42';
$imagedata = 'mocked image data';
$manager = $this->getMockBuilder(ImageManager::class)->getMock();
$cache = $this->createMock(Repository::class);
$cache->expects($this->once())
->method('get')
->with($this->equalTo($checksum))
->willReturn($imagedata);
$img = new ImageCache($manager, $cache);
$img->make('foo/bar.jpg');
$img->resize(100, 150);
$result = $img->get($lifetime);
$this->assertEquals($imagedata, $result);
}
public function testGetImageFromCacheAsObject()
{
$lifetime = 12;
$checksum = '2fff960136929390427f9409eac34c42';
$imagedata = 'mocked image data';
$image = $this->getMockBuilder(Image::class)->getMock();
$manager = $this->getMockBuilder(ImageManager::class)->getMock();
$manager->expects($this->once())
->method('make')
->with($this->equalTo($imagedata))
->willReturn($image);
$cache = $this->createMock(Repository::class);
$cache->expects($this->once())
->method('get')
->with($this->equalTo($checksum))
->willReturn($imagedata);
$img = new ImageCache($manager, $cache);
$img->make('foo/bar.jpg');
$img->resize(100, 150);
$result = $img->get($lifetime, true);
$this->assertInstanceOf(Image::class, $result);
}
public function testGetImageNotFromCache()
{
$lifetime = 12;
$checksum = '2fff960136929390427f9409eac34c42';
$imagedata = 'mocked image data';
$image = $this->getMockBuilder(Image::class)
->setMethods(['resize', 'encode'])
->getMock();
$image->expects($this->once())
->method('resize')
->with($this->equalTo(100), $this->equalTo(150))
->willReturn($image);
$image->expects($this->once())
->method('encode')
->willReturn($imagedata);
$manager = $this->getMockBuilder(ImageManager::class)->getMock();
$manager->expects($this->once())
->method('make')
->with($this->equalTo('foo/bar.jpg'))
->willReturn($image);
$cache = $this->createMock(Repository::class);
$cache->expects($this->once())
->method('get')
->with($this->equalTo($checksum))
->willReturn(false);
$cache->expects($this->once())
->method('put')
->willReturn(false);
$img = new ImageCache($manager, $cache);
$img->make('foo/bar.jpg');
$img->resize(100, 150);
$result = $img->get($lifetime);
$this->assertEquals($imagedata, $result);
}
public function testGetImageNotFromCacheAsObject()
{
$lifetime = 12;
$checksum = '2fff960136929390427f9409eac34c42';
$imagedata = 'mocked image data';
$image = $this->getMockBuilder(Image::class)
->setMethods(['resize', 'encode'])
->getMock();
$image->expects($this->once())
->method('resize')
->with($this->equalTo(100), $this->equalTo(150))
->willReturn($image);
$image->expects($this->once())
->method('encode')
->willReturn($imagedata);
$manager = $this->getMockBuilder(ImageManager::class)->getMock();
$manager->expects($this->once())
->method('make')
->with($this->equalTo('foo/bar.jpg'))
->willReturn($image);
$cache = $this->createMock(Repository::class);
$cache->expects($this->once())
->method('get')
->with($this->equalTo($checksum))
->willReturn(false);
$cache->expects($this->once())
->method('put')
->willReturn(false);
$img = new ImageCache($manager, $cache);
$img->make('foo/bar.jpg');
$img->resize(100, 150);
$result = $img->get($lifetime, true);
$this->assertEquals($image, $result);
}
public function testOriginalFileChanged()
{
$filename = __DIR__ . '/files/foo.bar';
// create tmp file
touch($filename);
// get original checksum
$img = new ImageCache();
$img->make($filename);
$img->resize(300, 200);
$checksum_original = $img->checksum();
// get modified checksum
clearstatcache();
$modified = touch($filename, 10);
// get modified checksum
$img = new ImageCache();
$img->make($filename);
$img->resize(300, 200);
$checksum_modified = $img->checksum();
// delete tmp file
unlink($filename);
$this->assertTrue($modified);
$this->assertNotEquals($checksum_original, $checksum_modified);
}
public function testBinaryInput()
{
$data = file_get_contents(__DIR__ . '/files/test.png');
$img = new ImageCache();
$result = $img->make($data);
$this->assertInstanceOf(ImageCache::class, $result);
}
}
@LwBee Strong Bypass
Upload File
Create New File