Fix NPE in HttpResponseSnippet when response has custom status

See gh-653
This commit is contained in:
Florian Ferreira
2019-10-17 16:03:21 +02:00
committed by Andy Wilkinson
parent bb7aecbfe5
commit aee641b642
4 changed files with 30 additions and 2 deletions

View File

@@ -89,6 +89,10 @@ public abstract class AbstractSnippetTests {
return SnippetConditions.httpResponse(this.templateFormat, responseStatus);
}
public HttpResponseCondition httpResponse(Integer responseStatusCode, String responseStatusReason) {
return SnippetConditions.httpResponse(this.templateFormat, responseStatusCode, responseStatusReason);
}
protected FileSystemResource snippetResource(String name) {
return new FileSystemResource(
"src/test/resources/custom-snippet-templates/" + this.templateFormat.getId() + "/" + name + ".snippet");

View File

@@ -97,4 +97,9 @@ public class HttpResponseSnippetTests extends AbstractSnippetTests {
assertThat(this.generatedSnippets.httpResponse()).contains("Title for the response");
}
@Test
public void responseWithCustomStatus() throws IOException {
new HttpResponseSnippet().document(this.operationBuilder.response().status(215).build());
assertThat(this.generatedSnippets.httpResponse()).is(httpResponse(215,"Http custom status."));
}
}

View File

@@ -71,6 +71,13 @@ public final class SnippetConditions {
return new HttpResponseCondition(status, new MarkdownCodeBlockCondition<>("http"), 2);
}
public static HttpResponseCondition httpResponse(TemplateFormat format, Integer responseStatusCode, String responseStatusReason) {
if ("adoc".equals(format.getFileExtension())) {
return new HttpResponseCondition(responseStatusCode, responseStatusReason, new AsciidoctorCodeBlockCondition<>("http", "nowrap"), 3);
}
return new HttpResponseCondition(responseStatusCode, responseStatusReason, new MarkdownCodeBlockCondition<>("http"), 2);
}
@SuppressWarnings({ "rawtypes" })
public static CodeBlockCondition<?> codeBlock(TemplateFormat format, String language) {
if ("adoc".equals(format.getFileExtension())) {
@@ -235,6 +242,12 @@ public final class SnippetConditions {
this.content("");
}
private HttpResponseCondition(Integer responseStatusCode, String responseStatusReason, CodeBlockCondition<?> delegate, int headerOffset) {
super(delegate, headerOffset);
this.content("HTTP/1.1 " + responseStatusCode + " " + responseStatusReason);
this.content("");
}
}
/**