9
9
namespace Test \Http \Client ;
10
10
11
11
use GuzzleHttp \Client as GuzzleClient ;
12
- use GuzzleHttp \HandlerStack ;
13
12
use GuzzleHttp \Handler \CurlHandler ;
13
+ use GuzzleHttp \HandlerStack ;
14
+ use GuzzleHttp \Middleware ;
14
15
use OC \Http \Client \Client ;
15
16
use OC \Http \Client \ClientService ;
16
17
use OC \Http \Client \DnsPinMiddleware ;
@@ -25,6 +26,9 @@ class ClientServiceTest extends \Test\TestCase {
25
26
public function testNewClient (): void {
26
27
/** @var IConfig $config */
27
28
$ config = $ this ->createMock (IConfig::class);
29
+ $ config ->method ('getSystemValueBool ' )
30
+ ->with ('dns_pinning ' , true )
31
+ ->willReturn (true );
28
32
/** @var ICertificateManager $certificateManager */
29
33
$ certificateManager = $ this ->createMock (ICertificateManager::class);
30
34
$ dnsPinMiddleware = $ this ->createMock (DnsPinMiddleware::class);
@@ -57,4 +61,52 @@ public function testNewClient(): void {
57
61
$ clientService ->newClient ()
58
62
);
59
63
}
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
+ }
60
112
}
0 commit comments