2020-10-08 19:06:18 +00:00
|
|
|
<?php
|
|
|
|
|
|
|
|
|
|
use MediaWiki\Config\ServiceOptions;
|
|
|
|
|
use MediaWiki\Http\HttpRequestFactory;
|
2022-04-27 15:42:24 +00:00
|
|
|
use MediaWiki\MainConfigNames;
|
2020-10-08 19:06:18 +00:00
|
|
|
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, [
|
2022-04-27 15:42:24 +00:00
|
|
|
MainConfigNames::HTTPTimeout => 1,
|
|
|
|
|
MainConfigNames::HTTPConnectTimeout => 1,
|
|
|
|
|
MainConfigNames::HTTPMaxTimeout => 2,
|
|
|
|
|
MainConfigNames::HTTPMaxConnectTimeout => 2,
|
|
|
|
|
MainConfigNames::LocalVirtualHosts => [],
|
|
|
|
|
MainConfigNames::LocalHTTPProxy => false,
|
2021-10-27 23:27:28 +00:00
|
|
|
]
|
2020-10-08 19:06:18 +00:00
|
|
|
);
|
|
|
|
|
|
|
|
|
|
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 );
|
|
|
|
|
}
|
|
|
|
|
|
2020-10-26 22:03:36 +00:00
|
|
|
/**
|
|
|
|
|
* @param array $config
|
|
|
|
|
*
|
|
|
|
|
* @return \GuzzleHttp\Client
|
|
|
|
|
*/
|
|
|
|
|
public function createGuzzleClient( array $config = [] ): \GuzzleHttp\Client {
|
2022-01-17 22:24:04 +00:00
|
|
|
return new NullGuzzleClient( $config );
|
2020-10-26 22:03:36 +00:00
|
|
|
}
|
|
|
|
|
|
2020-10-08 19:06:18 +00:00
|
|
|
}
|