From d925a9f2195615d7dc9ddcff3cac940c845e51fb Mon Sep 17 00:00:00 2001 From: Andy Wilkinson Date: Tue, 22 Oct 2019 10:06:51 +0100 Subject: [PATCH] Polish "Fix NPE in HttpResponseSnippet when response has custom status" See gh-653 --- .../restdocs/http/HttpResponseSnippet.java | 6 +++--- .../restdocs/AbstractSnippetTests.java | 4 ++-- .../restdocs/http/HttpResponseSnippetTests.java | 3 ++- .../restdocs/test/SnippetConditions.java | 12 ++++++++---- 4 files changed, 15 insertions(+), 10 deletions(-) diff --git a/spring-restdocs-core/src/main/java/org/springframework/restdocs/http/HttpResponseSnippet.java b/spring-restdocs-core/src/main/java/org/springframework/restdocs/http/HttpResponseSnippet.java index b24f92ad..7e4a9c11 100644 --- a/spring-restdocs-core/src/main/java/org/springframework/restdocs/http/HttpResponseSnippet.java +++ b/spring-restdocs-core/src/main/java/org/springframework/restdocs/http/HttpResponseSnippet.java @@ -1,5 +1,5 @@ /* - * Copyright 2014-2018 the original author or authors. + * Copyright 2014-2019 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -56,17 +56,17 @@ public class HttpResponseSnippet extends TemplatedSnippet { @Override protected Map createModel(Operation operation) { OperationResponse response = operation.getResponse(); - HttpStatus status = response.getStatus(); Map model = new HashMap<>(); model.put("responseBody", responseBody(response)); model.put("headers", headers(response)); + HttpStatus status = response.getStatus(); if (status != null) { model.put("statusCode", status.value()); model.put("statusReason", status.getReasonPhrase()); } else { model.put("statusCode", response.getStatusCode()); - model.put("statusReason", "Http custom status."); + model.put("statusReason", ""); } return model; } diff --git a/spring-restdocs-core/src/test/java/org/springframework/restdocs/AbstractSnippetTests.java b/spring-restdocs-core/src/test/java/org/springframework/restdocs/AbstractSnippetTests.java index b27b3142..0dabb13f 100644 --- a/spring-restdocs-core/src/test/java/org/springframework/restdocs/AbstractSnippetTests.java +++ b/spring-restdocs-core/src/test/java/org/springframework/restdocs/AbstractSnippetTests.java @@ -89,8 +89,8 @@ public abstract class AbstractSnippetTests { return SnippetConditions.httpResponse(this.templateFormat, responseStatus); } - public HttpResponseCondition httpResponse(Integer responseStatusCode, String responseStatusReason) { - return SnippetConditions.httpResponse(this.templateFormat, responseStatusCode, responseStatusReason); + public HttpResponseCondition httpResponse(int responseStatusCode) { + return SnippetConditions.httpResponse(this.templateFormat, responseStatusCode, ""); } protected FileSystemResource snippetResource(String name) { diff --git a/spring-restdocs-core/src/test/java/org/springframework/restdocs/http/HttpResponseSnippetTests.java b/spring-restdocs-core/src/test/java/org/springframework/restdocs/http/HttpResponseSnippetTests.java index 41d4f1e0..30287183 100644 --- a/spring-restdocs-core/src/test/java/org/springframework/restdocs/http/HttpResponseSnippetTests.java +++ b/spring-restdocs-core/src/test/java/org/springframework/restdocs/http/HttpResponseSnippetTests.java @@ -100,6 +100,7 @@ public class HttpResponseSnippetTests extends AbstractSnippetTests { @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.")); + assertThat(this.generatedSnippets.httpResponse()).is(httpResponse(215)); } + } diff --git a/spring-restdocs-core/src/test/java/org/springframework/restdocs/test/SnippetConditions.java b/spring-restdocs-core/src/test/java/org/springframework/restdocs/test/SnippetConditions.java index 2c390581..de574f19 100644 --- a/spring-restdocs-core/src/test/java/org/springframework/restdocs/test/SnippetConditions.java +++ b/spring-restdocs-core/src/test/java/org/springframework/restdocs/test/SnippetConditions.java @@ -71,11 +71,14 @@ public final class SnippetConditions { return new HttpResponseCondition(status, new MarkdownCodeBlockCondition<>("http"), 2); } - public static HttpResponseCondition httpResponse(TemplateFormat format, Integer responseStatusCode, String responseStatusReason) { + 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 AsciidoctorCodeBlockCondition<>("http", "nowrap"), 3); } - return new HttpResponseCondition(responseStatusCode, responseStatusReason, new MarkdownCodeBlockCondition<>("http"), 2); + return new HttpResponseCondition(responseStatusCode, responseStatusReason, + new MarkdownCodeBlockCondition<>("http"), 2); } @SuppressWarnings({ "rawtypes" }) @@ -242,7 +245,8 @@ public final class SnippetConditions { this.content(""); } - private HttpResponseCondition(Integer responseStatusCode, String responseStatusReason, CodeBlockCondition delegate, int headerOffset) { + private HttpResponseCondition(int responseStatusCode, String responseStatusReason, + CodeBlockCondition delegate, int headerOffset) { super(delegate, headerOffset); this.content("HTTP/1.1 " + responseStatusCode + " " + responseStatusReason); this.content("");