mirror of
https://github.com/friendica/friendica
synced 2024-11-10 03:02:54 +00:00
Adapt tests
This commit is contained in:
parent
8385ee7a61
commit
3eb2abdb2a
8 changed files with 90 additions and 43 deletions
11
src/DI.php
11
src/DI.php
|
@ -39,6 +39,17 @@ abstract class DI
|
||||||
self::$dice = $dice;
|
self::$dice = $dice;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns a clone of the current dice instance
|
||||||
|
* This usefull for overloading the current instance with mocked methods during tests
|
||||||
|
*
|
||||||
|
* @return Dice
|
||||||
|
*/
|
||||||
|
public static function getDice()
|
||||||
|
{
|
||||||
|
return clone self::$dice;
|
||||||
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// common instances
|
// common instances
|
||||||
//
|
//
|
||||||
|
|
|
@ -92,11 +92,6 @@ class HTTPClient implements IHTTPClient
|
||||||
return CurlResult::createErrorCurl($url);
|
return CurlResult::createErrorCurl($url);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Network::isRedirectBlocked($url)) {
|
|
||||||
$this->logger->info('Domain should not be redirected.', ['url' => $url]);
|
|
||||||
return CurlResult::createErrorCurl($url);
|
|
||||||
}
|
|
||||||
|
|
||||||
$conf = [];
|
$conf = [];
|
||||||
|
|
||||||
if (!empty($opts['cookiejar'])) {
|
if (!empty($opts['cookiejar'])) {
|
||||||
|
|
|
@ -107,7 +107,6 @@ interface IHTTPClient
|
||||||
*
|
*
|
||||||
* @return string A canonical URL
|
* @return string A canonical URL
|
||||||
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
|
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
|
||||||
* @see ParseUrl::getSiteinfo
|
|
||||||
*/
|
*/
|
||||||
public function finalUrl(string $url);
|
public function finalUrl(string $url);
|
||||||
}
|
}
|
||||||
|
|
Binary file not shown.
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 24 KiB |
|
@ -26,7 +26,7 @@ use Dice\Dice;
|
||||||
use Friendica\Core\Config\Cache;
|
use Friendica\Core\Config\Cache;
|
||||||
use Friendica\DI;
|
use Friendica\DI;
|
||||||
use Friendica\Network\IHTTPResult;
|
use Friendica\Network\IHTTPResult;
|
||||||
use Friendica\Network\IHTTPRequest;
|
use Friendica\Network\IHTTPClient;
|
||||||
use Friendica\Test\MockedTest;
|
use Friendica\Test\MockedTest;
|
||||||
use Friendica\Test\Util\VFSTrait;
|
use Friendica\Test\Util\VFSTrait;
|
||||||
use Mockery;
|
use Mockery;
|
||||||
|
@ -331,7 +331,7 @@ class InstallerTest extends MockedTest
|
||||||
->andReturn('test Error');
|
->andReturn('test Error');
|
||||||
|
|
||||||
// Mocking the CURL Request
|
// Mocking the CURL Request
|
||||||
$networkMock = Mockery::mock(IHTTPRequest::class);
|
$networkMock = Mockery::mock(IHTTPClient::class);
|
||||||
$networkMock
|
$networkMock
|
||||||
->shouldReceive('fetchFull')
|
->shouldReceive('fetchFull')
|
||||||
->with('https://test/install/testrewrite')
|
->with('https://test/install/testrewrite')
|
||||||
|
@ -342,7 +342,7 @@ class InstallerTest extends MockedTest
|
||||||
->andReturn($IHTTPResult);
|
->andReturn($IHTTPResult);
|
||||||
|
|
||||||
$this->dice->shouldReceive('create')
|
$this->dice->shouldReceive('create')
|
||||||
->with(IHTTPRequest::class)
|
->with(IHTTPClient::class)
|
||||||
->andReturn($networkMock);
|
->andReturn($networkMock);
|
||||||
|
|
||||||
DI::init($this->dice);
|
DI::init($this->dice);
|
||||||
|
@ -378,7 +378,7 @@ class InstallerTest extends MockedTest
|
||||||
->andReturn('204');
|
->andReturn('204');
|
||||||
|
|
||||||
// Mocking the CURL Request
|
// Mocking the CURL Request
|
||||||
$networkMock = Mockery::mock(IHTTPRequest::class);
|
$networkMock = Mockery::mock(IHTTPClient::class);
|
||||||
$networkMock
|
$networkMock
|
||||||
->shouldReceive('fetchFull')
|
->shouldReceive('fetchFull')
|
||||||
->with('https://test/install/testrewrite')
|
->with('https://test/install/testrewrite')
|
||||||
|
@ -389,7 +389,7 @@ class InstallerTest extends MockedTest
|
||||||
->andReturn($IHTTPResultW);
|
->andReturn($IHTTPResultW);
|
||||||
|
|
||||||
$this->dice->shouldReceive('create')
|
$this->dice->shouldReceive('create')
|
||||||
->with(IHTTPRequest::class)
|
->with(IHTTPClient::class)
|
||||||
->andReturn($networkMock);
|
->andReturn($networkMock);
|
||||||
|
|
||||||
DI::init($this->dice);
|
DI::init($this->dice);
|
||||||
|
|
|
@ -34,7 +34,7 @@ use Friendica\Factory\ConfigFactory;
|
||||||
use Friendica\Model\Config\Config;
|
use Friendica\Model\Config\Config;
|
||||||
use Friendica\Model\Storage;
|
use Friendica\Model\Storage;
|
||||||
use Friendica\Core\Session;
|
use Friendica\Core\Session;
|
||||||
use Friendica\Network\HTTPRequest;
|
use Friendica\Network\HTTPClient;
|
||||||
use Friendica\Test\DatabaseTest;
|
use Friendica\Test\DatabaseTest;
|
||||||
use Friendica\Test\Util\Database\StaticDatabase;
|
use Friendica\Test\Util\Database\StaticDatabase;
|
||||||
use Friendica\Test\Util\VFSTrait;
|
use Friendica\Test\Util\VFSTrait;
|
||||||
|
@ -55,7 +55,7 @@ class StorageManagerTest extends DatabaseTest
|
||||||
private $logger;
|
private $logger;
|
||||||
/** @var L10n */
|
/** @var L10n */
|
||||||
private $l10n;
|
private $l10n;
|
||||||
/** @var HTTPRequest */
|
/** @var HTTPClient */
|
||||||
private $httpRequest;
|
private $httpRequest;
|
||||||
|
|
||||||
protected function setUp(): void
|
protected function setUp(): void
|
||||||
|
@ -84,7 +84,7 @@ class StorageManagerTest extends DatabaseTest
|
||||||
|
|
||||||
$this->l10n = \Mockery::mock(L10n::class);
|
$this->l10n = \Mockery::mock(L10n::class);
|
||||||
|
|
||||||
$this->httpRequest = \Mockery::mock(HTTPRequest::class);
|
$this->httpRequest = \Mockery::mock(HTTPClient::class);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -3,58 +3,87 @@
|
||||||
namespace Friendica\Test\src\Network;
|
namespace Friendica\Test\src\Network;
|
||||||
|
|
||||||
use Dice\Dice;
|
use Dice\Dice;
|
||||||
use Friendica\App\BaseURL;
|
|
||||||
use Friendica\Core\Config\IConfig;
|
|
||||||
use Friendica\DI;
|
use Friendica\DI;
|
||||||
use Friendica\Network\HTTPRequest;
|
use Friendica\Network\HTTPClient;
|
||||||
use Friendica\Network\IHTTPRequest;
|
use Friendica\Network\IHTTPClient;
|
||||||
use Friendica\Test\MockedTest;
|
use Friendica\Test\MockedTest;
|
||||||
use Friendica\Util\Images;
|
use Friendica\Util\Images;
|
||||||
use Friendica\Util\Profiler;
|
use Friendica\Util\Profiler;
|
||||||
|
use GuzzleHttp\Client;
|
||||||
use GuzzleHttp\Handler\MockHandler;
|
use GuzzleHttp\Handler\MockHandler;
|
||||||
|
use GuzzleHttp\HandlerStack;
|
||||||
use GuzzleHttp\Psr7\Response;
|
use GuzzleHttp\Psr7\Response;
|
||||||
|
use mattwright\URLResolver;
|
||||||
use Psr\Log\NullLogger;
|
use Psr\Log\NullLogger;
|
||||||
|
|
||||||
require_once __DIR__ . '/../../../static/dbstructure.config.php';
|
require_once __DIR__ . '/../../../static/dbstructure.config.php';
|
||||||
|
|
||||||
class HTTPRequestTest extends MockedTest
|
class HTTPRequestTest extends MockedTest
|
||||||
{
|
{
|
||||||
public function testImageFetch()
|
/** @var HandlerStack */
|
||||||
|
protected $handler;
|
||||||
|
|
||||||
|
protected function setUp(): void
|
||||||
{
|
{
|
||||||
$mock = new MockHandler([
|
parent::setUp();
|
||||||
new Response(200, [
|
|
||||||
'Server' => 'tsa_b',
|
|
||||||
'Content-Type' => 'image/png',
|
|
||||||
'Cache-Control' => 'max-age=604800, must-revalidate',
|
|
||||||
'Content-Length' => 24875,
|
|
||||||
], file_get_contents(__DIR__ . '/../../datasets/curl/image.content'))
|
|
||||||
]);
|
|
||||||
|
|
||||||
$config = \Mockery::mock(IConfig::class);
|
$this->handler = HandlerStack::create();
|
||||||
$config->shouldReceive('get')->with('system', 'curl_range_bytes', 0)->once()->andReturn(null);
|
|
||||||
$config->shouldReceive('get')->with('system', 'verifyssl')->once();
|
|
||||||
$config->shouldReceive('get')->with('system', 'proxy')->once();
|
|
||||||
$config->shouldReceive('get')->with('system', 'ipv4_resolve', false)->once()->andReturnFalse();
|
|
||||||
$config->shouldReceive('get')->with('system', 'blocklist', [])->once()->andReturn([]);
|
|
||||||
|
|
||||||
$baseUrl = \Mockery::mock(BaseURL::class);
|
$client = new Client(['handler' => $this->handler]);
|
||||||
$baseUrl->shouldReceive('get')->andReturn('http://friendica.local');
|
|
||||||
|
$resolver = \Mockery::mock(URLResolver::class);
|
||||||
|
|
||||||
$profiler = \Mockery::mock(Profiler::class);
|
$profiler = \Mockery::mock(Profiler::class);
|
||||||
$profiler->shouldReceive('startRecording')->andReturnTrue();
|
$profiler->shouldReceive('startRecording')->andReturnTrue();
|
||||||
$profiler->shouldReceive('stopRecording')->andReturnTrue();
|
$profiler->shouldReceive('stopRecording')->andReturnTrue();
|
||||||
|
|
||||||
$httpRequest = new HTTPRequest(new NullLogger(), $profiler, $config, $baseUrl);
|
$httpClient = new HTTPClient(new NullLogger(), $profiler, $client, $resolver);
|
||||||
|
|
||||||
self::assertInstanceOf(IHTTPRequest::class, $httpRequest);
|
$dice = DI::getDice();
|
||||||
|
$newDice = \Mockery::mock($dice)->makePartial();
|
||||||
|
$newDice->shouldReceive('create')->with(IHTTPClient::class)->andReturn($httpClient);
|
||||||
|
DI::init($newDice);
|
||||||
|
}
|
||||||
|
|
||||||
$dice = \Mockery::mock(Dice::class);
|
public function dataImages()
|
||||||
$dice->shouldReceive('create')->with(IHTTPRequest::class)->andReturn($httpRequest)->once();
|
{
|
||||||
$dice->shouldReceive('create')->with(BaseURL::class)->andReturn($baseUrl);
|
return [
|
||||||
$dice->shouldReceive('create')->with(IConfig::class)->andReturn($config)->once();
|
'image1' => [
|
||||||
|
'url' => 'https://pbs.twimg.com/profile_images/2365515285/9re7kx4xmc0eu9ppmado.png',
|
||||||
|
'headers' => [
|
||||||
|
'Server' => 'tsa_b',
|
||||||
|
'Content-Type' => 'image/png',
|
||||||
|
'Cache-Control' => 'max-age=604800,must-revalidate',
|
||||||
|
'Last-Modified' => 'Thu,04Nov201001:42:54GMT',
|
||||||
|
'Content-Length' => '24875',
|
||||||
|
'Access-Control-Allow-Origin' => '*',
|
||||||
|
'Access-Control-Expose-Headers' => 'Content-Length',
|
||||||
|
'Date' => 'Mon,23Aug202112:39:00GMT',
|
||||||
|
'Connection' => 'keep-alive',
|
||||||
|
],
|
||||||
|
'data' => file_get_contents(__DIR__ . '/../../datasets/curl/image.content'),
|
||||||
|
'assertion' => [
|
||||||
|
'0' => '400',
|
||||||
|
'1' => '400',
|
||||||
|
'2' => '3',
|
||||||
|
'3' => 'width="400" height="400"',
|
||||||
|
'bits' => '8',
|
||||||
|
'mime' => 'image/png',
|
||||||
|
'size' => '24875',
|
||||||
|
]
|
||||||
|
]
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
DI::init($dice);
|
/**
|
||||||
|
* @dataProvider dataImages
|
||||||
|
*/
|
||||||
|
public function testGetInfoFromURL(string $url, array $headers, string $data, array $assertion)
|
||||||
|
{
|
||||||
|
$this->handler->setHandler(new MockHandler([
|
||||||
|
new Response(200, $headers, $data),
|
||||||
|
]));
|
||||||
|
|
||||||
print_r(Images::getInfoFromURL('https://pbs.twimg.com/profile_images/2365515285/9re7kx4xmc0eu9ppmado.png'));
|
self::assertArraySubset($assertion, Images::getInfoFromURL($url));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
13
tests/src/Util/ImagesTest.php
Normal file
13
tests/src/Util/ImagesTest.php
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Friendica\Test\src\Util;
|
||||||
|
|
||||||
|
use Friendica\Test\MockedTest;
|
||||||
|
|
||||||
|
class ImagesTest extends MockedTest
|
||||||
|
{
|
||||||
|
public function testGetInfoFromURL()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in a new issue