assertSame( $expect, MWHttpRequest::isValidURI( $uri ), $message ); } public function testSetReverseProxy() { $req = TestingAccessWrapper::newFromObject( MediaWikiServices::getInstance()->getHttpRequestFactory()->create( 'https://example.org/path?query=string' ) ); $req->setReverseProxy( 'http://localhost:1234' ); $this->assertSame( 'http://localhost:1234/path?query=string', $req->url ); $this->assertSame( 'example.org', $req->reqHeaders['Host'] ); } public function testItInjectsTelemetryHeaders() { $telemetry = $this->createMock( TelemetryHeadersInterface::class ); $telemetry->expects( $this->once() ) ->method( 'getRequestHeaders' ) ->willReturn( [ 'X-Request-Id' => 'request_identifier', 'tracestate' => 'tracestate_value', 'traceparent' => 'traceparent_value', ] ); $httpRequest = $this->getMockForAbstractClass( MWHttpRequest::class, [ 'http://localhost/test', [ 'timeout' => 30, 'connectTimeout' => 30 ] ] ); $httpRequest->addTelemetry( $telemetry ); $accessWrapper = TestingAccessWrapper::newFromObject( $httpRequest ); $requestHeaders = $accessWrapper->reqHeaders; $this->assertEquals( 'request_identifier', $requestHeaders['X-Request-Id'] ); $this->assertEquals( 'tracestate_value', $requestHeaders['tracestate'] ); $this->assertEquals( 'traceparent_value', $requestHeaders['traceparent'] ); } }