23
23
*/
24
24
package com .intuit .karate .core ;
25
25
26
- import com .intuit .karate .http .HttpServer ;
27
- import com .intuit .karate .http .HttpServerHandler ;
28
- import com .intuit .karate .http .Request ;
29
- import com .intuit .karate .http .Response ;
30
- import com .intuit .karate .http .ServerHandler ;
31
- import com .intuit .karate .http .SslContextFactory ;
26
+ import com .intuit .karate .http .*;
32
27
import com .linecorp .armeria .server .HttpService ;
33
28
import com .linecorp .armeria .server .Server ;
34
29
import com .linecorp .armeria .server .ServerBuilder ;
@@ -69,6 +64,7 @@ public static class Builder {
69
64
Map <String , Object > args ;
70
65
String prefix = null ;
71
66
MockInterceptor interceptor = null ;
67
+ boolean keepOriginalHeaders ;
72
68
73
69
public Builder watch (boolean value ) {
74
70
watch = value ;
@@ -122,6 +118,11 @@ public Builder interceptor(MockInterceptor value) {
122
118
return this ;
123
119
}
124
120
121
+ public Builder keepOriginalHeaders (boolean value ) {
122
+ keepOriginalHeaders = value ;
123
+ return this ;
124
+ }
125
+
125
126
public MockServer build () {
126
127
ServerBuilder sb = Server .builder ();
127
128
sb .requestTimeoutMillis (0 );
@@ -135,8 +136,21 @@ public MockServer build() {
135
136
} else {
136
137
sb .http (port );
137
138
}
139
+
138
140
ServerHandler handler = watch ? new ReloadingMockHandler (features , args , prefix , interceptor ) : new MockHandler (prefix , features , args , interceptor );
139
- HttpService service = new HttpServerHandler (handler );
141
+
142
+ HttpServerHandler .Builder serverHandlerBuilder = HttpServerHandler .Builder .builder ();
143
+ serverHandlerBuilder .handler (handler );
144
+
145
+ if (keepOriginalHeaders ) {
146
+ HttpHeaderTracking headerTracking = new GenericHttpHeaderTracking ();
147
+ sb .http1HeaderNaming (http2HeaderName ->
148
+ headerTracking .getOriginalHeader (String .valueOf (http2HeaderName )));
149
+
150
+ serverHandlerBuilder .httpHeaderTracking (headerTracking );
151
+ }
152
+
153
+ HttpService service = serverHandlerBuilder .build ();
140
154
sb .service ("prefix:" + (prefix == null ? "/" : prefix ), service );
141
155
return new MockServer (sb );
142
156
}
0 commit comments