Improve handling of non-standard status codes in WebMvcTags
See gh-17998
This commit is contained in:
parent
f46a03d571
commit
a2a672de0e
|
@ -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…
Reference in New Issue