@@ -25,6 +25,7 @@ public function testBaggageFromHeaderIsSet(): void
2525 'default ' ,
2626 'test-app ' ,
2727 ['test-app ' ],
28+ [],
2829 );
2930
3031 $ request = new Request ([], [], [], [], [], ['HTTP_BAGGAGE ' => 'X-Schema=tenant1 ' ]);
@@ -50,6 +51,7 @@ public function testBaggageFromHeaderIsSetWithMultiplyParameters(): void
5051 'default ' ,
5152 'test-app ' ,
5253 ['test-app ' ],
54+ [],
5355 );
5456
5557 $ request = new Request ([], [], [], [], [], ['HTTP_BAGGAGE ' => 'X-Schema= tenant1 ,test , foo=bar ' ]);
@@ -77,6 +79,7 @@ public function testDefaultSchemaIsUsedIfHeaderMissing(): void
7779 'fallback ' ,
7880 'test-app ' ,
7981 ['test-app ' ],
82+ []
8083 );
8184
8285 $ request = new Request ();
@@ -88,4 +91,120 @@ public function testDefaultSchemaIsUsedIfHeaderMissing(): void
8891 self ::assertSame ('fallback ' , $ resolver ->getSchema ());
8992 self ::assertNull ($ resolver ->getBaggage ());
9093 }
94+
95+ public function testAppNameIsAllowed (): void
96+ {
97+ $ resolver = new BaggageSchemaResolver ();
98+ $ baggageCodec = new BaggageCodec ();
99+ $ listener = new BaggageRequestListener (
100+ $ resolver ,
101+ $ baggageCodec ,
102+ 'X-Schema ' ,
103+ 'fallback ' ,
104+ 'test-app ' ,
105+ ['test-app ' ],
106+ [],
107+ );
108+
109+ $ request = new Request ();
110+ $ kernel = $ this ->createMock (HttpKernelInterface::class);
111+ $ event = new RequestEvent ($ kernel , $ request , HttpKernelInterface::MAIN_REQUEST );
112+
113+ $ listener ->onKernelRequest ($ event );
114+
115+ $ reflection = new \ReflectionClass (BaggageRequestListener::class);
116+ $ reflectionMethod = $ reflection ->getMethod ('isAllowedAppName ' );
117+ $ reflectionMethod ->setAccessible (true );
118+
119+ self ::assertTrue ($ reflectionMethod ->invoke ($ listener ));
120+ self ::assertSame ('fallback ' , $ resolver ->getSchema ());
121+ self ::assertNull ($ resolver ->getBaggage ());
122+ }
123+
124+ public function testAppNameIsNotAllowed (): void
125+ {
126+ $ resolver = new BaggageSchemaResolver ();
127+ $ baggageCodec = new BaggageCodec ();
128+ $ listener = new BaggageRequestListener (
129+ $ resolver ,
130+ $ baggageCodec ,
131+ 'X-Schema ' ,
132+ 'fallback ' ,
133+ 'staging ' ,
134+ ['test-app ' ],
135+ [],
136+ );
137+
138+ $ request = new Request ();
139+ $ kernel = $ this ->createMock (HttpKernelInterface::class);
140+ $ event = new RequestEvent ($ kernel , $ request , HttpKernelInterface::MAIN_REQUEST );
141+
142+ $ listener ->onKernelRequest ($ event );
143+
144+ $ reflection = new \ReflectionClass (BaggageRequestListener::class);
145+ $ reflectionMethod = $ reflection ->getMethod ('isAllowedAppName ' );
146+ $ reflectionMethod ->setAccessible (true );
147+
148+ self ::assertFalse ($ reflectionMethod ->invoke ($ listener ));
149+ self ::assertNull ($ resolver ->getSchema ());
150+ self ::assertNull ($ resolver ->getBaggage ());
151+ }
152+
153+ public function testAppNameIsNotAllowedByRegex (): void
154+ {
155+ $ resolver = new BaggageSchemaResolver ();
156+ $ baggageCodec = new BaggageCodec ();
157+ $ listener = new BaggageRequestListener (
158+ $ resolver ,
159+ $ baggageCodec ,
160+ 'X-Schema ' ,
161+ 'fallback ' ,
162+ 'staging ' ,
163+ ['test-app ' ],
164+ ['/^prod$/ ' ],
165+ );
166+
167+ $ request = new Request ();
168+ $ kernel = $ this ->createMock (HttpKernelInterface::class);
169+ $ event = new RequestEvent ($ kernel , $ request , HttpKernelInterface::MAIN_REQUEST );
170+
171+ $ listener ->onKernelRequest ($ event );
172+
173+ $ reflection = new \ReflectionClass (BaggageRequestListener::class);
174+ $ reflectionMethod = $ reflection ->getMethod ('isAllowedAppName ' );
175+ $ reflectionMethod ->setAccessible (true );
176+
177+ self ::assertFalse ($ reflectionMethod ->invoke ($ listener ));
178+ self ::assertNull ($ resolver ->getSchema ());
179+ self ::assertNull ($ resolver ->getBaggage ());
180+ }
181+
182+ public function testAppNameIsAllowedByRegex (): void
183+ {
184+ $ resolver = new BaggageSchemaResolver ();
185+ $ baggageCodec = new BaggageCodec ();
186+ $ listener = new BaggageRequestListener (
187+ $ resolver ,
188+ $ baggageCodec ,
189+ 'X-Schema ' ,
190+ 'fallback ' ,
191+ 'pr-100 ' ,
192+ ['test-app ' ],
193+ ['/^pr-\d+$/ ' ],
194+ );
195+
196+ $ request = new Request ();
197+ $ kernel = $ this ->createMock (HttpKernelInterface::class);
198+ $ event = new RequestEvent ($ kernel , $ request , HttpKernelInterface::MAIN_REQUEST );
199+
200+ $ listener ->onKernelRequest ($ event );
201+
202+ $ reflection = new \ReflectionClass (BaggageRequestListener::class);
203+ $ reflectionMethod = $ reflection ->getMethod ('isAllowedAppName ' );
204+ $ reflectionMethod ->setAccessible (true );
205+
206+ self ::assertTrue ($ reflectionMethod ->invoke ($ listener ));
207+ self ::assertEquals ('fallback ' , $ resolver ->getSchema ());
208+ self ::assertNull ($ resolver ->getBaggage ());
209+ }
91210}
0 commit comments