15
15
namespace Elastic \Elasticsearch \Tests \Traits ;
16
16
17
17
use Elastic \Elasticsearch \Client ;
18
+ use Elastic \Elasticsearch \ClientInterface ;
18
19
use Elastic \Elasticsearch \Exception \ContentTypeException ;
19
20
use Elastic \Elasticsearch \Exception \MissingParameterException ;
20
21
use Elastic \Elasticsearch \Traits \EndpointTrait ;
22
+ use Elastic \Transport \TransportBuilder ;
23
+ use Http \Mock \Client as MockClient ;
21
24
use PHPUnit \Framework \TestCase ;
25
+ use Psr \Log \LoggerInterface ;
26
+ use Psr \Log \NullLogger ;
22
27
23
28
class EndpointTraitTest extends TestCase
24
29
{
30
+ protected ClientInterface $ client ;
31
+
25
32
use EndpointTrait;
26
33
27
34
public static function getQueryStrings (): array
@@ -153,4 +160,42 @@ public function testCheckRequiredParameters(array $required, array $params, bool
153
160
$ this ->checkRequiredParameters ($ required , $ params );
154
161
}
155
162
}
163
+
164
+ public function testCreateRequestContainsApiVersionIfServerlessTrue ()
165
+ {
166
+ $ logger = new NullLogger ();
167
+ $ httpClient = new MockClient ();
168
+
169
+ $ transport = TransportBuilder::create ()
170
+ ->setClient ($ httpClient )
171
+ ->build ();
172
+
173
+ $ this ->client = new Client ($ transport , $ logger );
174
+ $ this ->client ->setServerless (true );
175
+
176
+ $ request = $ this ->createRequest ('GET ' , 'localhost:9200 ' , []);
177
+
178
+ $ this ->assertEquals (Client::API_VERSION , $ request ->getHeader (Client::API_VERSION_HEADER )[0 ]);
179
+ }
180
+
181
+ public function testCreateRequestContainsCompatibilityModeIfServerlessFalse ()
182
+ {
183
+ $ logger = new NullLogger ();
184
+ $ httpClient = new MockClient ();
185
+
186
+ $ transport = TransportBuilder::create ()
187
+ ->setClient ($ httpClient )
188
+ ->build ();
189
+
190
+ $ this ->client = new Client ($ transport , $ logger );
191
+ $ this ->client ->setServerless (false );
192
+
193
+ $ request = $ this ->createRequest ('GET ' , 'localhost:9200 ' , [
194
+ 'Content-Type ' => 'application/json ' ,
195
+ 'Accept ' => 'application/json '
196
+ ]);
197
+
198
+ $ this ->assertEquals (sprintf (Client::API_COMPATIBILITY_HEADER , 'application ' , 'json ' ), $ request ->getHeader ('Content-Type ' )[0 ]);
199
+ $ this ->assertEquals (sprintf (Client::API_COMPATIBILITY_HEADER , 'application ' , 'json ' ), $ request ->getHeader ('Accept ' )[0 ]);
200
+ }
156
201
}
0 commit comments