<?php namespace Shaarli; use PHPUnit\Framework\TestCase; use Shaarli\Config\ConfigManager; use WebThumbnailer\Application\ConfigManager as WTConfigManager; /** * Class ThumbnailerTest * * We only make 1 thumb test because: * * 1. the thumbnailer library is itself tested * 2. we don't want to make too many external requests during the tests */ class ThumbnailerTest extends TestCase { const WIDTH = 190; const HEIGHT = 210; /** * @var Thumbnailer; */ protected $thumbnailer; /** * @var ConfigManager */ protected $conf; public function setUp() { $this->conf = new ConfigManager('tests/utils/config/configJson'); $this->conf->set('thumbnails.mode', Thumbnailer::MODE_ALL); $this->conf->set('thumbnails.width', self::WIDTH); $this->conf->set('thumbnails.height', self::HEIGHT); $this->conf->set('dev.debug', true); $this->thumbnailer = new Thumbnailer($this->conf); // cache files in the sandbox WTConfigManager::addFile('tests/utils/config/wt.json'); } public function tearDown() { $this->rrmdirContent('sandbox/'); } /** * Test a thumbnail with a custom size in 'all' mode. */ public function testThumbnailAllValid() { $thumb = $this->thumbnailer->get('https://github.com/shaarli/Shaarli/'); $this->assertNotFalse($thumb); $image = imagecreatefromstring(file_get_contents($thumb)); $this->assertEquals(self::WIDTH, imagesx($image)); $this->assertEquals(self::HEIGHT, imagesy($image)); } /** * Test a thumbnail with a custom size in 'common' mode. */ public function testThumbnailCommonValid() { $this->conf->set('thumbnails.mode', Thumbnailer::MODE_COMMON); $thumb = $this->thumbnailer->get('https://imgur.com/jlFgGpe'); $this->assertNotFalse($thumb); $image = imagecreatefromstring(file_get_contents($thumb)); $this->assertEquals(self::WIDTH, imagesx($image)); $this->assertEquals(self::HEIGHT, imagesy($image)); } /** * Test a thumbnail in 'common' mode which isn't include in common websites. */ public function testThumbnailCommonInvalid() { $this->conf->set('thumbnails.mode', Thumbnailer::MODE_COMMON); $thumb = $this->thumbnailer->get('https://github.com/shaarli/Shaarli/'); $this->assertFalse($thumb); } /** * Test a thumbnail that can't be retrieved. */ public function testThumbnailNotValid() { $oldlog = ini_get('error_log'); ini_set('error_log', '/dev/null'); $thumbnailer = new Thumbnailer(new ConfigManager()); $thumb = $thumbnailer->get('nope'); $this->assertFalse($thumb); ini_set('error_log', $oldlog); } protected function rrmdirContent($dir) { if (is_dir($dir)) { $objects = scandir($dir); foreach ($objects as $object) { if ($object != "." && $object != "..") { if (is_dir($dir."/".$object)) $this->rrmdirContent($dir."/".$object); else unlink($dir."/".$object); } } } } }