66package io .opentelemetry .instrumentation .spring .security .config .v6_0 .servlet ;
77
88import static org .assertj .core .api .Assertions .assertThat ;
9+ import static org .mockito .Mockito .mock ;
910
1011import io .opentelemetry .instrumentation .spring .security .config .v6_0 .EnduserAttributesCapturer ;
1112import java .util .Collections ;
13+ import java .util .Map ;
1214import org .junit .jupiter .api .Test ;
1315import org .junit .jupiter .api .extension .ExtendWith ;
14- import org .mockito .Mock ;
1516import org .mockito .junit .jupiter .MockitoExtension ;
1617import org .springframework .beans .factory .annotation .Autowired ;
1718import org .springframework .context .ApplicationContext ;
1819import org .springframework .context .annotation .Configuration ;
19- import org .springframework .security .config .annotation .ObjectPostProcessor ;
2020import org .springframework .security .config .annotation .authentication .builders .AuthenticationManagerBuilder ;
2121import org .springframework .security .config .annotation .web .builders .HttpSecurity ;
2222import org .springframework .security .web .DefaultSecurityFilterChain ;
@@ -29,8 +29,6 @@ class EnduserAttributesHttpSecurityCustomizerTest {
2929 @ Configuration
3030 static class TestConfiguration {}
3131
32- @ Mock ObjectPostProcessor <Object > objectPostProcessor ;
33-
3432 /**
3533 * Ensures that the {@link EnduserAttributesHttpSecurityCustomizer} registers a {@link
3634 * EnduserAttributesCapturingServletFilter} in the filter chain.
@@ -40,13 +38,7 @@ static class TestConfiguration {}
4038 @ Test
4139 void ensureFilterRegistered (@ Autowired ApplicationContext applicationContext ) throws Exception {
4240
43- AuthenticationManagerBuilder authenticationBuilder =
44- new AuthenticationManagerBuilder (objectPostProcessor );
45- HttpSecurity httpSecurity =
46- new HttpSecurity (
47- objectPostProcessor ,
48- authenticationBuilder ,
49- Collections .singletonMap (ApplicationContext .class , applicationContext ));
41+ HttpSecurity httpSecurity = createHttpSecurity (applicationContext );
5042
5143 EnduserAttributesHttpSecurityCustomizer customizer =
5244 new EnduserAttributesHttpSecurityCustomizer (new EnduserAttributesCapturer ());
@@ -58,4 +50,29 @@ void ensureFilterRegistered(@Autowired ApplicationContext applicationContext) th
5850 .filteredOn (EnduserAttributesCapturingServletFilter .class ::isInstance )
5951 .hasSize (1 );
6052 }
53+
54+ private static HttpSecurity createHttpSecurity (ApplicationContext applicationContext )
55+ throws Exception {
56+
57+ Class <?> processorClass = getObjectPostProcessorClass ();
58+ Object processor = mock (processorClass );
59+ AuthenticationManagerBuilder authenticationBuilder =
60+ AuthenticationManagerBuilder .class .getConstructor (processorClass ).newInstance (processor );
61+
62+ return HttpSecurity .class
63+ .getConstructor (processorClass , AuthenticationManagerBuilder .class , Map .class )
64+ .newInstance (
65+ processor ,
66+ authenticationBuilder ,
67+ Collections .singletonMap (ApplicationContext .class , applicationContext ));
68+ }
69+
70+ private static Class <?> getObjectPostProcessorClass () throws ClassNotFoundException {
71+ try {
72+ return Class .forName ("org.springframework.security.config.ObjectPostProcessor" );
73+ } catch (ClassNotFoundException e ) {
74+ // this was marked deprecated for removal in 6.4.2
75+ return Class .forName ("org.springframework.security.config.annotation.ObjectPostProcessor" );
76+ }
77+ }
6178}
0 commit comments