diff --git a/instrumentation/spring/spring-security-config-6.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/spring/security/config/v6_0/servlet/HttpSecurityInstrumentationTest.java b/instrumentation/spring/spring-security-config-6.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/spring/security/config/v6_0/servlet/HttpSecurityInstrumentationTest.java index df936006c59c..3943a6409f5b 100644 --- a/instrumentation/spring/spring-security-config-6.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/spring/security/config/v6_0/servlet/HttpSecurityInstrumentationTest.java +++ b/instrumentation/spring/spring-security-config-6.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/spring/security/config/v6_0/servlet/HttpSecurityInstrumentationTest.java @@ -6,17 +6,17 @@ package io.opentelemetry.javaagent.instrumentation.spring.security.config.v6_0.servlet; import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.Mockito.mock; import io.opentelemetry.instrumentation.spring.security.config.v6_0.servlet.EnduserAttributesCapturingServletFilter; import java.util.Collections; +import java.util.Map; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; -import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.Configuration; -import org.springframework.security.config.annotation.ObjectPostProcessor; import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.web.DefaultSecurityFilterChain; @@ -29,8 +29,6 @@ class HttpSecurityInstrumentationTest { @Configuration static class TestConfiguration {} - @Mock ObjectPostProcessor objectPostProcessor; - /** * Ensures that {@link HttpSecurityInstrumentation} registers a {@link * EnduserAttributesCapturingServletFilter} in the filter chain. @@ -40,14 +38,7 @@ static class TestConfiguration {} @Test void ensureFilterRegistered(@Autowired ApplicationContext applicationContext) throws Exception { - AuthenticationManagerBuilder authenticationBuilder = - new AuthenticationManagerBuilder(objectPostProcessor); - - HttpSecurity httpSecurity = - new HttpSecurity( - objectPostProcessor, - authenticationBuilder, - Collections.singletonMap(ApplicationContext.class, applicationContext)); + HttpSecurity httpSecurity = createHttpSecurity(applicationContext); DefaultSecurityFilterChain filterChain = httpSecurity.build(); @@ -59,4 +50,29 @@ void ensureFilterRegistered(@Autowired ApplicationContext applicationContext) th .endsWith(EnduserAttributesCapturingServletFilter.class.getSimpleName())) .hasSize(1); } + + private static HttpSecurity createHttpSecurity(ApplicationContext applicationContext) + throws Exception { + + Class processorClass = getObjectPostProcessorClass(); + Object processor = mock(processorClass); + AuthenticationManagerBuilder authenticationBuilder = + AuthenticationManagerBuilder.class.getConstructor(processorClass).newInstance(processor); + + return HttpSecurity.class + .getConstructor(processorClass, AuthenticationManagerBuilder.class, Map.class) + .newInstance( + processor, + authenticationBuilder, + Collections.singletonMap(ApplicationContext.class, applicationContext)); + } + + private static Class getObjectPostProcessorClass() throws ClassNotFoundException { + try { + return Class.forName("org.springframework.security.config.ObjectPostProcessor"); + } catch (ClassNotFoundException e) { + // this was marked deprecated for removal in 6.4.2 + return Class.forName("org.springframework.security.config.annotation.ObjectPostProcessor"); + } + } } diff --git a/instrumentation/spring/spring-security-config-6.0/library/src/test/java/io/opentelemetry/instrumentation/spring/security/config/v6_0/servlet/EnduserAttributesHttpSecurityCustomizerTest.java b/instrumentation/spring/spring-security-config-6.0/library/src/test/java/io/opentelemetry/instrumentation/spring/security/config/v6_0/servlet/EnduserAttributesHttpSecurityCustomizerTest.java index d96c14653649..2223191897ad 100644 --- a/instrumentation/spring/spring-security-config-6.0/library/src/test/java/io/opentelemetry/instrumentation/spring/security/config/v6_0/servlet/EnduserAttributesHttpSecurityCustomizerTest.java +++ b/instrumentation/spring/spring-security-config-6.0/library/src/test/java/io/opentelemetry/instrumentation/spring/security/config/v6_0/servlet/EnduserAttributesHttpSecurityCustomizerTest.java @@ -6,17 +6,17 @@ package io.opentelemetry.instrumentation.spring.security.config.v6_0.servlet; import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.Mockito.mock; import io.opentelemetry.instrumentation.spring.security.config.v6_0.EnduserAttributesCapturer; import java.util.Collections; +import java.util.Map; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; -import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.Configuration; -import org.springframework.security.config.annotation.ObjectPostProcessor; import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.web.DefaultSecurityFilterChain; @@ -29,8 +29,6 @@ class EnduserAttributesHttpSecurityCustomizerTest { @Configuration static class TestConfiguration {} - @Mock ObjectPostProcessor objectPostProcessor; - /** * Ensures that the {@link EnduserAttributesHttpSecurityCustomizer} registers a {@link * EnduserAttributesCapturingServletFilter} in the filter chain. @@ -40,13 +38,7 @@ static class TestConfiguration {} @Test void ensureFilterRegistered(@Autowired ApplicationContext applicationContext) throws Exception { - AuthenticationManagerBuilder authenticationBuilder = - new AuthenticationManagerBuilder(objectPostProcessor); - HttpSecurity httpSecurity = - new HttpSecurity( - objectPostProcessor, - authenticationBuilder, - Collections.singletonMap(ApplicationContext.class, applicationContext)); + HttpSecurity httpSecurity = createHttpSecurity(applicationContext); EnduserAttributesHttpSecurityCustomizer customizer = new EnduserAttributesHttpSecurityCustomizer(new EnduserAttributesCapturer()); @@ -58,4 +50,29 @@ void ensureFilterRegistered(@Autowired ApplicationContext applicationContext) th .filteredOn(EnduserAttributesCapturingServletFilter.class::isInstance) .hasSize(1); } + + private static HttpSecurity createHttpSecurity(ApplicationContext applicationContext) + throws Exception { + + Class processorClass = getObjectPostProcessorClass(); + Object processor = mock(processorClass); + AuthenticationManagerBuilder authenticationBuilder = + AuthenticationManagerBuilder.class.getConstructor(processorClass).newInstance(processor); + + return HttpSecurity.class + .getConstructor(processorClass, AuthenticationManagerBuilder.class, Map.class) + .newInstance( + processor, + authenticationBuilder, + Collections.singletonMap(ApplicationContext.class, applicationContext)); + } + + private static Class getObjectPostProcessorClass() throws ClassNotFoundException { + try { + return Class.forName("org.springframework.security.config.ObjectPostProcessor"); + } catch (ClassNotFoundException e) { + // this was marked deprecated for removal in 6.4.2 + return Class.forName("org.springframework.security.config.annotation.ObjectPostProcessor"); + } + } }