Skip to content

Commit c6db67a

Browse files
committed
Merge pull request #161 from jdamick/header_fixes
Headers substitutions were not being expanded by the value name
2 parents c6b36fa + 74e23ef commit c6db67a

File tree

3 files changed

+16
-5
lines changed

3 files changed

+16
-5
lines changed

core/src/main/java/feign/RequestTemplate.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -205,7 +205,7 @@ public RequestTemplate resolve(Map<String, ?> unencoded) {
205205
for (String value : valuesOrEmpty(headers, field)) {
206206
String resolved;
207207
if (value.indexOf('{') == 0) {
208-
resolved = String.valueOf(unencoded.get(field));
208+
resolved = expand(value, unencoded);
209209
} else {
210210
resolved = value;
211211
}

core/src/test/java/feign/DefaultContractTest.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -245,10 +245,10 @@ public void headerParamsParseIntoIndexToName() throws Exception {
245245
HeaderParams.class.getDeclaredMethod("logout", String.class));
246246

247247
assertThat(md.template())
248-
.hasHeaders(entry("Auth-Token", asList("{Auth-Token}", "Foo")));
248+
.hasHeaders(entry("Auth-Token", asList("{authToken}", "Foo")));
249249

250250
assertThat(md.indexToName())
251-
.containsExactly(entry(0, asList("Auth-Token")));
251+
.containsExactly(entry(0, asList("authToken")));
252252
}
253253

254254
@Test
@@ -343,8 +343,8 @@ void login(
343343
interface HeaderParams {
344344

345345
@RequestLine("POST /")
346-
@Headers({"Auth-Token: {Auth-Token}", "Auth-Token: Foo"})
347-
void logout(@Param("Auth-Token") String token);
346+
@Headers({"Auth-Token: {authToken}", "Auth-Token: Foo"})
347+
void logout(@Param("authToken") String token);
348348
}
349349

350350
interface CustomExpander {

core/src/test/java/feign/RequestTemplateTest.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,17 @@ public void resolveTemplateWithBaseAndParameterizedIterableQuery() {
126126
);
127127
}
128128

129+
@Test
130+
public void resolveTemplateWithHeaderSubstitutions() {
131+
RequestTemplate template = new RequestTemplate().method("GET")
132+
.header("Auth-Token", "{authToken}");
133+
134+
template.resolve(mapOf("authToken", "1234"));
135+
136+
assertThat(template)
137+
.hasHeaders(entry("Auth-Token", asList("1234")));
138+
}
139+
129140
@Test
130141
public void resolveTemplateWithMixedRequestLineParams() throws Exception {
131142
RequestTemplate template = new RequestTemplate().method("GET")//

0 commit comments

Comments
 (0)