Merge pull request #17998 from dreis2211

* gh-17998:
  Improve handling of non-standard status codes in WebMvcTags

Closes gh-17998
pull/18164/head
Andy Wilkinson 5 years ago
commit 9b8decf99c

@ -175,22 +175,21 @@ public final class WebMvcTags {
*/
public static Tag outcome(HttpServletResponse response) {
if (response != null) {
HttpStatus status = extractStatus(response);
if (status != null) {
if (status.is1xxInformational()) {
HttpStatus.Series series = HttpStatus.Series.resolve(response.getStatus());
if (series != null) {
switch (series) {
case INFORMATIONAL:
return OUTCOME_INFORMATIONAL;
}
if (status.is2xxSuccessful()) {
case SUCCESSFUL:
return OUTCOME_SUCCESS;
}
if (status.is3xxRedirection()) {
case REDIRECTION:
return OUTCOME_REDIRECTION;
}
if (status.is4xxClientError()) {
case CLIENT_ERROR:
return OUTCOME_CLIENT_ERROR;
case SERVER_ERROR:
return OUTCOME_SERVER_ERROR;
}
}
return OUTCOME_SERVER_ERROR;
}
return OUTCOME_UNKNOWN;
}

@ -136,6 +136,13 @@ class WebMvcTagsTests {
assertThat(tag.getValue()).isEqualTo("CLIENT_ERROR");
}
@Test
void outcomeTagIsClientErrorWhenResponseIsNonStandardInClientSeries() {
this.response.setStatus(490);
Tag tag = WebMvcTags.outcome(this.response);
assertThat(tag.getValue()).isEqualTo("CLIENT_ERROR");
}
@Test
void outcomeTagIsServerErrorWhenResponseIs5xx() {
this.response.setStatus(500);
@ -143,4 +150,11 @@ class WebMvcTagsTests {
assertThat(tag.getValue()).isEqualTo("SERVER_ERROR");
}
@Test
void outcomeTagIsUnknownWhenResponseStatusIsInUnknownSeries() {
this.response.setStatus(701);
Tag tag = WebMvcTags.outcome(this.response);
assertThat(tag.getValue()).isEqualTo("UNKNOWN");
}
}

Loading…
Cancel
Save