@@ -22,6 +22,7 @@ final class Api2DevdockTusConformanceServer implements AutoCloseable {
2222 private final List <JSONObject > requests ;
2323 private final HttpServer server ;
2424 private final List <String > errors ;
25+ private final List <JSONObject > requestHeaders ;
2526 private final List <String > requestMethods ;
2627 private final List <String > requestUrls ;
2728 private int nextRequestIndex ;
@@ -35,6 +36,7 @@ final class Api2DevdockTusConformanceServer implements AutoCloseable {
3536 requests .add (requestArray .getJSONObject (index ));
3637 }
3738 this .errors = new ArrayList <String >();
39+ this .requestHeaders = new ArrayList <JSONObject >();
3840 this .requestMethods = new ArrayList <String >();
3941 this .requestUrls = new ArrayList <String >();
4042 this .server = HttpServer .create (new InetSocketAddress ("127.0.0.1" , 0 ), 0 );
@@ -51,6 +53,10 @@ URL endpointUrl() throws IOException {
5153 return localUrl (endpointOrigin .toString ());
5254 }
5355
56+ URL localUrlFor (String canonicalUrl ) throws IOException {
57+ return localUrl (canonicalUrl );
58+ }
59+
5460 void assertExhausted () {
5561 assertNoErrors ();
5662 if (nextRequestIndex == requests .size ()) {
@@ -87,6 +93,7 @@ String errorSummary() {
8793
8894 JSONObject result () {
8995 return new JSONObject ()
96+ .put ("requestHeaders" , new JSONArray (requestHeaders ))
9097 .put ("requestMethods" , new JSONArray (requestMethods ))
9198 .put ("requestUrls" , new JSONArray (requestUrls ));
9299 }
@@ -156,14 +163,12 @@ private int observeRequest(HttpExchange exchange, byte[] body) throws IOExceptio
156163 + body .length
157164 );
158165 }
159- assertHeaders (
160- requestIndex ,
161- requestPlan .getJSONObject ("effectiveHeaders" ),
162- exchange .getRequestHeaders ()
163- );
166+ final JSONObject expectedHeaders = requestPlan .getJSONObject ("effectiveHeaders" );
167+ assertHeaders (requestIndex , expectedHeaders , exchange .getRequestHeaders ());
164168
165169 requestMethods .add (exchange .getRequestMethod ());
166170 requestUrls .add (actualUrl );
171+ requestHeaders .add (capturedHeaders (expectedHeaders , exchange .getRequestHeaders ()));
167172 nextRequestIndex += 1 ;
168173
169174 return requestIndex ;
@@ -190,6 +195,18 @@ private void assertHeaders(int requestIndex, JSONObject expectedHeaders, Headers
190195 }
191196 }
192197
198+ private JSONObject capturedHeaders (JSONObject expectedHeaders , Headers actualHeaders ) {
199+ final JSONObject result = new JSONObject ();
200+ for (String name : expectedHeaders .keySet ()) {
201+ final String value = actualHeaders .getFirst (name );
202+ if (value != null ) {
203+ result .put (name , value );
204+ }
205+ }
206+
207+ return result ;
208+ }
209+
193210 private void writeResponse (HttpExchange exchange , JSONObject requestPlan ) throws IOException {
194211 final JSONObject responsePlan = requestPlan .getJSONObject ("response" );
195212 final Headers headers = exchange .getResponseHeaders ();
0 commit comments