Skip to content

Commit d925a9f

Browse files
committed
Polish "Fix NPE in HttpResponseSnippet when response has custom status"
See gh-653
1 parent aee641b commit d925a9f

File tree

4 files changed

+15
-10
lines changed

4 files changed

+15
-10
lines changed

spring-restdocs-core/src/main/java/org/springframework/restdocs/http/HttpResponseSnippet.java

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2014-2018 the original author or authors.
2+
* Copyright 2014-2019 the original author or authors.
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -56,17 +56,17 @@ protected HttpResponseSnippet(Map<String, Object> attributes) {
5656
@Override
5757
protected Map<String, Object> createModel(Operation operation) {
5858
OperationResponse response = operation.getResponse();
59-
HttpStatus status = response.getStatus();
6059
Map<String, Object> model = new HashMap<>();
6160
model.put("responseBody", responseBody(response));
6261
model.put("headers", headers(response));
62+
HttpStatus status = response.getStatus();
6363
if (status != null) {
6464
model.put("statusCode", status.value());
6565
model.put("statusReason", status.getReasonPhrase());
6666
}
6767
else {
6868
model.put("statusCode", response.getStatusCode());
69-
model.put("statusReason", "Http custom status.");
69+
model.put("statusReason", "");
7070
}
7171
return model;
7272
}

spring-restdocs-core/src/test/java/org/springframework/restdocs/AbstractSnippetTests.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -89,8 +89,8 @@ public HttpResponseCondition httpResponse(HttpStatus responseStatus) {
8989
return SnippetConditions.httpResponse(this.templateFormat, responseStatus);
9090
}
9191

92-
public HttpResponseCondition httpResponse(Integer responseStatusCode, String responseStatusReason) {
93-
return SnippetConditions.httpResponse(this.templateFormat, responseStatusCode, responseStatusReason);
92+
public HttpResponseCondition httpResponse(int responseStatusCode) {
93+
return SnippetConditions.httpResponse(this.templateFormat, responseStatusCode, "");
9494
}
9595

9696
protected FileSystemResource snippetResource(String name) {

spring-restdocs-core/src/test/java/org/springframework/restdocs/http/HttpResponseSnippetTests.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,7 @@ public void responseWithCustomSnippetAttributes() throws IOException {
100100
@Test
101101
public void responseWithCustomStatus() throws IOException {
102102
new HttpResponseSnippet().document(this.operationBuilder.response().status(215).build());
103-
assertThat(this.generatedSnippets.httpResponse()).is(httpResponse(215,"Http custom status."));
103+
assertThat(this.generatedSnippets.httpResponse()).is(httpResponse(215));
104104
}
105+
105106
}

spring-restdocs-core/src/test/java/org/springframework/restdocs/test/SnippetConditions.java

+8-4
Original file line numberDiff line numberDiff line change
@@ -71,11 +71,14 @@ public static HttpResponseCondition httpResponse(TemplateFormat format, HttpStat
7171
return new HttpResponseCondition(status, new MarkdownCodeBlockCondition<>("http"), 2);
7272
}
7373

74-
public static HttpResponseCondition httpResponse(TemplateFormat format, Integer responseStatusCode, String responseStatusReason) {
74+
public static HttpResponseCondition httpResponse(TemplateFormat format, Integer responseStatusCode,
75+
String responseStatusReason) {
7576
if ("adoc".equals(format.getFileExtension())) {
76-
return new HttpResponseCondition(responseStatusCode, responseStatusReason, new AsciidoctorCodeBlockCondition<>("http", "nowrap"), 3);
77+
return new HttpResponseCondition(responseStatusCode, responseStatusReason,
78+
new AsciidoctorCodeBlockCondition<>("http", "nowrap"), 3);
7779
}
78-
return new HttpResponseCondition(responseStatusCode, responseStatusReason, new MarkdownCodeBlockCondition<>("http"), 2);
80+
return new HttpResponseCondition(responseStatusCode, responseStatusReason,
81+
new MarkdownCodeBlockCondition<>("http"), 2);
7982
}
8083

8184
@SuppressWarnings({ "rawtypes" })
@@ -242,7 +245,8 @@ private HttpResponseCondition(HttpStatus status, CodeBlockCondition<?> delegate,
242245
this.content("");
243246
}
244247

245-
private HttpResponseCondition(Integer responseStatusCode, String responseStatusReason, CodeBlockCondition<?> delegate, int headerOffset) {
248+
private HttpResponseCondition(int responseStatusCode, String responseStatusReason,
249+
CodeBlockCondition<?> delegate, int headerOffset) {
246250
super(delegate, headerOffset);
247251
this.content("HTTP/1.1 " + responseStatusCode + " " + responseStatusReason);
248252
this.content("");

0 commit comments

Comments
 (0)