Address Observation Bean Name Collisions

Closes gh-16161
This commit is contained in:
Josh Cummings
2024-11-25 12:34:19 -07:00
parent a55021539a
commit 2b5a2eef82
6 changed files with 213 additions and 23 deletions

View File

@@ -242,6 +242,31 @@ public class ServerHttpSecurityConfigurationTests {
assertThat(contexts.next().getContextualName()).isEqualTo("security filterchain after");
}
// gh-16161
@Test
public void getWhenUsingRSocketThenObservesRequest() {
this.spring.register(ObservationRegistryConfig.class, RSocketSecurityConfig.class).autowire();
// @formatter:off
this.webClient
.get()
.uri("/hello")
.headers((headers) -> headers.setBasicAuth("user", "password"))
.exchange()
.expectStatus()
.isNotFound();
// @formatter:on
ObservationHandler<Observation.Context> handler = this.spring.getContext().getBean(ObservationHandler.class);
ArgumentCaptor<Observation.Context> captor = ArgumentCaptor.forClass(Observation.Context.class);
verify(handler, times(6)).onStart(captor.capture());
Iterator<Observation.Context> contexts = captor.getAllValues().iterator();
assertThat(contexts.next().getContextualName()).isEqualTo("http get");
assertThat(contexts.next().getContextualName()).isEqualTo("security filterchain before");
assertThat(contexts.next().getName()).isEqualTo("spring.security.authentications");
assertThat(contexts.next().getName()).isEqualTo("spring.security.authorizations");
assertThat(contexts.next().getName()).isEqualTo("spring.security.http.secured.requests");
assertThat(contexts.next().getContextualName()).isEqualTo("security filterchain after");
}
@Configuration
static class SubclassConfig extends ServerHttpSecurityConfiguration {