@@ -81,6 +81,58 @@ public function testNewClient(): void {
8181 );
8282 }
8383
84+ public function testNewClientWithConfig (): void {
85+ /** @var IConfig $config */
86+ $ config = $ this ->createMock (IConfig::class);
87+ $ config ->method ('getSystemValueBool ' )
88+ ->with ('dns_pinning ' , true )
89+ ->willReturn (true );
90+ /** @var ICertificateManager $certificateManager */
91+ $ certificateManager = $ this ->createMock (ICertificateManager::class);
92+ $ dnsPinMiddleware = $ this ->createMock (DnsPinMiddleware::class);
93+ $ dnsPinMiddleware
94+ ->expects ($ this ->atLeastOnce ())
95+ ->method ('addDnsPinning ' )
96+ ->willReturn (function (): void {
97+ });
98+ $ remoteHostValidator = $ this ->createMock (IRemoteHostValidator::class);
99+ $ eventLogger = $ this ->createMock (IEventLogger::class);
100+ $ logger = $ this ->createMock (LoggerInterface::class);
101+ $ serverVersion = $ this ->createMock (ServerVersion::class);
102+
103+ $ clientService = new ClientService (
104+ $ config ,
105+ $ certificateManager ,
106+ $ dnsPinMiddleware ,
107+ $ remoteHostValidator ,
108+ $ eventLogger ,
109+ $ logger ,
110+ $ serverVersion ,
111+ );
112+
113+ $ handler = new CurlHandler ();
114+ $ stack = HandlerStack::create ($ handler );
115+ $ stack ->push ($ dnsPinMiddleware ->addDnsPinning ());
116+ $ stack ->push (Middleware::tap (function (RequestInterface $ request ) use ($ eventLogger ): void {
117+ $ eventLogger ->start ('http:request ' , $ request ->getMethod () . ' request to ' . $ request ->getRequestTarget ());
118+ }, function () use ($ eventLogger ): void {
119+ $ eventLogger ->end ('http:request ' );
120+ }), 'event logger ' );
121+ $ guzzleClient = new GuzzleClient (['handler ' => $ stack , 'timeout ' => 2.0 ]);
122+
123+ $ this ->assertEquals (
124+ new Client (
125+ $ config ,
126+ $ certificateManager ,
127+ $ guzzleClient ,
128+ $ remoteHostValidator ,
129+ $ logger ,
130+ $ serverVersion ,
131+ ),
132+ $ clientService ->newClient (['timeout ' => 2.0 ])
133+ );
134+ }
135+
84136 public function testDisableDnsPinning (): void {
85137 /** @var IConfig $config */
86138 $ config = $ this ->createMock (IConfig::class);
0 commit comments