@@ -70,8 +70,6 @@ public function test_trusted_proxy_sets_trusted_proxies_with_double_wildcard_for
7070 });
7171 }
7272
73-
74-
7573 /**
7674 * Test the most typical usage of TrustProxies:
7775 * Trusted X-Forwarded-For header
@@ -182,6 +180,44 @@ public function test_can_distrust_headers()
182180 });
183181 }
184182
183+ /**
184+ * Test to ensure it's reading text-based configurations and converting it correctly.
185+ */
186+ public function test_is_reading_text_based_configurations ()
187+ {
188+ $ request = $ this ->createProxiedRequest ();
189+
190+ // trust *all* "X-Forwarded-*" headers
191+ $ trustedProxy = $ this ->createTrustedProxy ('HEADER_X_FORWARDED_ALL ' , '192.168.1.1, 192.168.1.2 ' );
192+ $ trustedProxy ->handle ($ request , function (Request $ request ) {
193+ $ this ->assertEquals ($ request ->getTrustedHeaderSet (), Request::HEADER_X_FORWARDED_ALL ,
194+ 'Assert trusted proxy used all "X-Forwarded-*" header ' );
195+
196+ $ this ->assertEquals ($ request ->getTrustedProxies (), ['192.168.1.1 ' , '192.168.1.2 ' ],
197+ 'Assert trusted proxy using proxies as string separated by comma. ' );
198+ });
199+
200+ // or, if your proxy instead uses the "Forwarded" header
201+ $ trustedProxy = $ this ->createTrustedProxy ('HEADER_FORWARDED ' , '192.168.1.1, 192.168.1.2 ' );
202+ $ trustedProxy ->handle ($ request , function (Request $ request ) {
203+ $ this ->assertEquals ($ request ->getTrustedHeaderSet (), Request::HEADER_FORWARDED ,
204+ 'Assert trusted proxy used forwarded header ' );
205+
206+ $ this ->assertEquals ($ request ->getTrustedProxies (), ['192.168.1.1 ' , '192.168.1.2 ' ],
207+ 'Assert trusted proxy using proxies as string separated by comma. ' );
208+ });
209+
210+ // or, if you're using AWS ELB
211+ $ trustedProxy = $ this ->createTrustedProxy ('HEADER_X_FORWARDED_AWS_ELB ' , '192.168.1.1, 192.168.1.2 ' );
212+ $ trustedProxy ->handle ($ request , function (Request $ request ) {
213+ $ this ->assertEquals ($ request ->getTrustedHeaderSet (), Request::HEADER_X_FORWARDED_AWS_ELB ,
214+ 'Assert trusted proxy used AWS ELB header ' );
215+
216+ $ this ->assertEquals ($ request ->getTrustedProxies (), ['192.168.1.1 ' , '192.168.1.2 ' ],
217+ 'Assert trusted proxy using proxies as string separated by comma. ' );
218+ });
219+ }
220+
185221 ################################################################
186222 # Utility Functions
187223 ################################################################
@@ -219,8 +255,8 @@ protected function createProxiedRequest($serverOverRides = [])
219255 /**
220256 * Retrieve a TrustProxies object, with dependencies mocked.
221257 *
222- * @param array $trustedHeaders
223- * @param array $trustedProxies
258+ * @param null|string|int $trustedHeaders
259+ * @param null| array|string $trustedProxies
224260 *
225261 * @return \Fideloper\Proxy\TrustProxies
226262 */
0 commit comments