Adapt tests

This commit is contained in:
Philipp Holzer 2021-08-23 15:47:41 +02:00
parent 8385ee7a61
commit 3eb2abdb2a
No known key found for this signature in database
GPG key ID: 9A28B7D4FF5667BD
8 changed files with 90 additions and 43 deletions

View file

@ -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
// //

View file

@ -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'])) {

View file

@ -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

View file

@ -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);

View file

@ -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);
} }
/** /**

View file

@ -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));
} }
} }

View file

@ -0,0 +1,13 @@
<?php
namespace Friendica\Test\src\Util;
use Friendica\Test\MockedTest;
class ImagesTest extends MockedTest
{
public function testGetInfoFromURL()
{
}
}