@@ -70,4 +70,101 @@ public function testElasticCloudIdNotOverrideCurlEncoding()
70
70
$ this ->assertNotContains ('gzip ' , $ request ['request ' ]['client ' ]['curl ' ]);
71
71
}
72
72
}
73
+
74
+ public function getHttpPorts ()
75
+ {
76
+ return [
77
+ [ 80 , false ], // not included since 80 is standard port for HTTP
78
+ [ 443 , false ], // not included since 442 is standard port for HTTPS
79
+ [ 1234 , true ] // included since 1234 is not a standard port
80
+ ];
81
+ }
82
+
83
+ /**
84
+ * @dataProvider getHttpPorts
85
+ *
86
+ * @see https://github.com/elastic/elasticsearch-php/issues/993
87
+ */
88
+ public function testIncludePortInHostHeader (int $ port , bool $ included )
89
+ {
90
+ $ host = "localhost " ;
91
+ $ url = "localhost: $ port " ;
92
+ $ params = [
93
+ 'client ' => [
94
+ 'verbose ' => true
95
+ ]
96
+ ];
97
+ $ client = ClientBuilder::create ()
98
+ ->setConnectionParams ($ params )
99
+ ->setHosts ([$ url ])
100
+ ->includePortInHostHeader (true )
101
+ ->build ();
102
+
103
+ $ this ->assertInstanceOf (Client::class, $ client );
104
+
105
+ try {
106
+ $ result = $ client ->info ();
107
+ } catch (ElasticsearchException $ e ) {
108
+ $ request = $ client ->transport ->getLastConnection ()->getLastRequestInfo ();
109
+ $ this ->assertTrue (isset ($ request ['request ' ]['headers ' ]['Host ' ][0 ]));
110
+ $ this ->assertEquals ($ included ? $ url : $ host , $ request ['request ' ]['headers ' ]['Host ' ][0 ]);
111
+ }
112
+ }
113
+
114
+ /**
115
+ * @see https://github.com/elastic/elasticsearch-php/issues/993
116
+ */
117
+ public function testNotIncludeStandardPortInHostHeaderAsDefault ()
118
+ {
119
+ $ host = "localhost " ;
120
+ $ url = "$ host:1234 " ;
121
+ $ params = [
122
+ 'client ' => [
123
+ 'verbose ' => true
124
+ ]
125
+ ];
126
+ $ client = ClientBuilder::create ()
127
+ ->setConnectionParams ($ params )
128
+ ->setHosts ([$ url ])
129
+ ->build ();
130
+
131
+ $ this ->assertInstanceOf (Client::class, $ client );
132
+
133
+ try {
134
+ $ result = $ client ->info ();
135
+ } catch (ElasticsearchException $ e ) {
136
+ $ request = $ client ->transport ->getLastConnection ()->getLastRequestInfo ();
137
+ $ this ->assertTrue (isset ($ request ['request ' ]['headers ' ]['Host ' ][0 ]));
138
+ $ this ->assertEquals ($ host , $ request ['request ' ]['headers ' ]['Host ' ][0 ]);
139
+ }
140
+ }
141
+
142
+ /**
143
+ * @see https://github.com/elastic/elasticsearch-php/issues/993
144
+ */
145
+ public function testNotIncludeStandardPortInHostHeader ()
146
+ {
147
+ $ host = "localhost " ;
148
+ $ url = "$ host:1234 " ;
149
+ $ params = [
150
+ 'client ' => [
151
+ 'verbose ' => true
152
+ ]
153
+ ];
154
+ $ client = ClientBuilder::create ()
155
+ ->setConnectionParams ($ params )
156
+ ->setHosts ([$ url ])
157
+ ->includePortInHostHeader (false )
158
+ ->build ();
159
+
160
+ $ this ->assertInstanceOf (Client::class, $ client );
161
+
162
+ try {
163
+ $ result = $ client ->info ();
164
+ } catch (ElasticsearchException $ e ) {
165
+ $ request = $ client ->transport ->getLastConnection ()->getLastRequestInfo ();
166
+ $ this ->assertTrue (isset ($ request ['request ' ]['headers ' ]['Host ' ][0 ]));
167
+ $ this ->assertEquals ($ host , $ request ['request ' ]['headers ' ]['Host ' ][0 ]);
168
+ }
169
+ }
73
170
}
0 commit comments