1212namespace Test \Http \Client ;
1313
1414use GuzzleHttp \Client as GuzzleClient ;
15- use GuzzleHttp \HandlerStack ;
1615use GuzzleHttp \Handler \CurlHandler ;
16+ use GuzzleHttp \HandlerStack ;
1717use GuzzleHttp \Middleware ;
1818use OC \Http \Client \Client ;
1919use OC \Http \Client \ClientService ;
@@ -32,6 +32,9 @@ class ClientServiceTest extends \Test\TestCase {
3232 public function testNewClient (): void {
3333 /** @var IConfig $config */
3434 $ config = $ this ->createMock (IConfig::class);
35+ $ config ->method ('getSystemValueBool ' )
36+ ->with ('dns_pinning ' , true )
37+ ->willReturn (true );
3538 /** @var ICertificateManager $certificateManager */
3639 $ certificateManager = $ this ->createMock (ICertificateManager::class);
3740 $ dnsPinMiddleware = $ this ->createMock (DnsPinMiddleware::class);
@@ -74,4 +77,52 @@ public function testNewClient(): void {
7477 $ clientService ->newClient ()
7578 );
7679 }
80+
81+ public function testDisableDnsPinning (): void {
82+ /** @var IConfig $config */
83+ $ config = $ this ->createMock (IConfig::class);
84+ $ config ->method ('getSystemValueBool ' )
85+ ->with ('dns_pinning ' , true )
86+ ->willReturn (false );
87+ /** @var ICertificateManager $certificateManager */
88+ $ certificateManager = $ this ->createMock (ICertificateManager::class);
89+ $ dnsPinMiddleware = $ this ->createMock (DnsPinMiddleware::class);
90+ $ dnsPinMiddleware
91+ ->expects ($ this ->never ())
92+ ->method ('addDnsPinning ' )
93+ ->willReturn (function () {
94+ });
95+ $ remoteHostValidator = $ this ->createMock (IRemoteHostValidator::class);
96+ $ eventLogger = $ this ->createMock (IEventLogger::class);
97+ $ logger = $ this ->createMock (LoggerInterface::class);
98+
99+ $ clientService = new ClientService (
100+ $ config ,
101+ $ certificateManager ,
102+ $ dnsPinMiddleware ,
103+ $ remoteHostValidator ,
104+ $ eventLogger ,
105+ $ logger ,
106+ );
107+
108+ $ handler = new CurlHandler ();
109+ $ stack = HandlerStack::create ($ handler );
110+ $ stack ->push (Middleware::tap (function (RequestInterface $ request ) use ($ eventLogger ) {
111+ $ eventLogger ->start ('http:request ' , $ request ->getMethod () . " request to " . $ request ->getRequestTarget ());
112+ }, function () use ($ eventLogger ) {
113+ $ eventLogger ->end ('http:request ' );
114+ }), 'event logger ' );
115+ $ guzzleClient = new GuzzleClient (['handler ' => $ stack ]);
116+
117+ $ this ->assertEquals (
118+ new Client (
119+ $ config ,
120+ $ certificateManager ,
121+ $ guzzleClient ,
122+ $ remoteHostValidator ,
123+ $ logger ,
124+ ),
125+ $ clientService ->newClient ()
126+ );
127+ }
77128}
0 commit comments