99namespace Test \Http \Client ;
1010
1111use GuzzleHttp \Client as GuzzleClient ;
12- use GuzzleHttp \HandlerStack ;
1312use GuzzleHttp \Handler \CurlHandler ;
13+ use GuzzleHttp \HandlerStack ;
14+ use GuzzleHttp \Middleware ;
1415use OC \Http \Client \Client ;
1516use OC \Http \Client \ClientService ;
1617use OC \Http \Client \DnsPinMiddleware ;
@@ -25,6 +26,9 @@ class ClientServiceTest extends \Test\TestCase {
2526 public function testNewClient (): void {
2627 /** @var IConfig $config */
2728 $ config = $ this ->createMock (IConfig::class);
29+ $ config ->method ('getSystemValueBool ' )
30+ ->with ('dns_pinning ' , true )
31+ ->willReturn (true );
2832 /** @var ICertificateManager $certificateManager */
2933 $ certificateManager = $ this ->createMock (ICertificateManager::class);
3034 $ dnsPinMiddleware = $ this ->createMock (DnsPinMiddleware::class);
@@ -57,4 +61,52 @@ public function testNewClient(): void {
5761 $ clientService ->newClient ()
5862 );
5963 }
64+
65+ public function testDisableDnsPinning (): void {
66+ /** @var IConfig $config */
67+ $ config = $ this ->createMock (IConfig::class);
68+ $ config ->method ('getSystemValueBool ' )
69+ ->with ('dns_pinning ' , true )
70+ ->willReturn (false );
71+ /** @var ICertificateManager $certificateManager */
72+ $ certificateManager = $ this ->createMock (ICertificateManager::class);
73+ $ dnsPinMiddleware = $ this ->createMock (DnsPinMiddleware::class);
74+ $ dnsPinMiddleware
75+ ->expects ($ this ->never ())
76+ ->method ('addDnsPinning ' )
77+ ->willReturn (function () {
78+ });
79+ $ remoteHostValidator = $ this ->createMock (IRemoteHostValidator::class);
80+ $ eventLogger = $ this ->createMock (IEventLogger::class);
81+ $ logger = $ this ->createMock (LoggerInterface::class);
82+
83+ $ clientService = new ClientService (
84+ $ config ,
85+ $ certificateManager ,
86+ $ dnsPinMiddleware ,
87+ $ remoteHostValidator ,
88+ $ eventLogger ,
89+ $ logger ,
90+ );
91+
92+ $ handler = new CurlHandler ();
93+ $ stack = HandlerStack::create ($ handler );
94+ $ stack ->push (Middleware::tap (function (RequestInterface $ request ) use ($ eventLogger ) {
95+ $ eventLogger ->start ('http:request ' , $ request ->getMethod () . " request to " . $ request ->getRequestTarget ());
96+ }, function () use ($ eventLogger ) {
97+ $ eventLogger ->end ('http:request ' );
98+ }), 'event logger ' );
99+ $ guzzleClient = new GuzzleClient (['handler ' => $ stack ]);
100+
101+ $ this ->assertEquals (
102+ new Client (
103+ $ config ,
104+ $ certificateManager ,
105+ $ guzzleClient ,
106+ $ remoteHostValidator ,
107+ $ logger ,
108+ ),
109+ $ clientService ->newClient ()
110+ );
111+ }
60112}
0 commit comments