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
|
<?php
use MediaWiki\Config\ServiceOptions;
use MediaWiki\Http\HttpRequestFactory;
use MediaWiki\MainConfigNames;
use PHPUnit\Framework\Assert;
use PHPUnit\Framework\AssertionFailedError;
use Psr\Log\NullLogger;
/**
* A simple {@link HttpRequestFactory} implementation that can be used to prevent
* HTTP requests in tests. All attempts to create requests will fail.
*
* Use MockHttpTrait for creating a mock factory and controlling responses.
*
* @author Daniel Kinzler
* @license GPL-2.0-or-later
*/
class NullHttpRequestFactory extends HttpRequestFactory {
public function __construct() {
$options = new ServiceOptions(
self::CONSTRUCTOR_OPTIONS, [
MainConfigNames::HTTPTimeout => 1,
MainConfigNames::HTTPConnectTimeout => 1,
MainConfigNames::HTTPMaxTimeout => 2,
MainConfigNames::HTTPMaxConnectTimeout => 2,
MainConfigNames::LocalVirtualHosts => [],
MainConfigNames::LocalHTTPProxy => false,
]
);
parent::__construct( $options, new NullLogger() );
}
/**
* Always fails.
*
* @param string $url
* @param array $options
* @param string $caller
*
* @throws AssertionFailedError always
*/
public function create( $url, array $options = [], $caller = __METHOD__ ) {
Assert::fail( "HTTP request blocked: $url by $caller. Use MockHttpTrait." );
}
/**
* Returns a NullMultiHttpClient that will fail to make any requests.
*
* @param array $options
*
* @return NullMultiHttpClient
*/
public function createMultiClient( $options = [] ) {
return new NullMultiHttpClient( $options );
}
/**
* @param array $config
*
* @return \GuzzleHttp\Client
*/
public function createGuzzleClient( array $config = [] ): \GuzzleHttp\Client {
return new NullGuzzleClient( $config );
}
}
|