From c84399e7055712066f7f2955e682c119671e8fbe Mon Sep 17 00:00:00 2001 From: rishal Date: Fri, 30 Dec 2022 14:34:45 +0100 Subject: [PATCH] Add toString method for EndpointRequestMatcher See gh-33690 --- .../security/servlet/EndpointRequest.java | 18 ++++++++++++ .../servlet/EndpointRequestTests.java | 28 +++++++++++++++++++ 2 files changed, 46 insertions(+) diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/security/servlet/EndpointRequest.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/security/servlet/EndpointRequest.java index 3c5299f3bfd..69afad40911 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/security/servlet/EndpointRequest.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/security/servlet/EndpointRequest.java @@ -273,6 +273,24 @@ public final class EndpointRequest { .collect(Collectors.toList()); } + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + if (this.includes.isEmpty()) { + sb.append("EndpointRequest [includes='[").append("*").append("]'"); + } + else { + sb.append("EndpointRequest [includes='") + .append(this.includes.stream().map(this::getEndpointId).collect(Collectors.toList())) + .append("'"); + } + sb.append(", Excludes='") + .append(this.excludes.stream().map(this::getEndpointId).collect(Collectors.toList())).append("'"); + sb.append(", IncludeLinks='").append(this.includeLinks).append("'"); + sb.append("]"); + return sb.toString(); + } + } /** diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/security/servlet/EndpointRequestTests.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/security/servlet/EndpointRequestTests.java index 68ab2af9b9b..7bb3cf50c3c 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/security/servlet/EndpointRequestTests.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/security/servlet/EndpointRequestTests.java @@ -216,6 +216,34 @@ class EndpointRequestTests { assertMatcher(matcher, (PathMappedEndpoints) null).doesNotMatch("/actuator/bar"); } + @Test + void toStringIncludedEndpoints() { + RequestMatcher matcher = EndpointRequest.to("foo", "bar"); + assertThat(matcher.toString()) + .isEqualTo("EndpointRequest [includes='[foo, bar]', Excludes='[]', IncludeLinks='false']"); + } + + @Test + void toStringEmptyIncludedEndpoints() { + RequestMatcher matcher = EndpointRequest.toAnyEndpoint(); + assertThat(matcher.toString()) + .isEqualTo("EndpointRequest [includes='[*]', Excludes='[]', IncludeLinks='true']"); + } + + @Test + void toStringIncludedEndpointsClasses() { + RequestMatcher matcher = EndpointRequest.to(FooEndpoint.class).excluding("bar"); + assertThat(matcher.toString()) + .isEqualTo("EndpointRequest [includes='[foo]', Excludes='[bar]', IncludeLinks='false']"); + } + + @Test + void toStringIncludedExcludedEndpoints() { + RequestMatcher matcher = EndpointRequest.toAnyEndpoint().excluding("bar").excludingLinks(); + assertThat(matcher.toString()) + .isEqualTo("EndpointRequest [includes='[*]', Excludes='[bar]', IncludeLinks='false']"); + } + private RequestMatcherAssert assertMatcher(RequestMatcher matcher) { return assertMatcher(matcher, mockPathMappedEndpoints("/actuator")); }