Skip to content

Commit 95f2ac4

Browse files
committed
Fix tests
1 parent bd6eb2a commit 95f2ac4

File tree

4 files changed

+64
-15
lines changed

4 files changed

+64
-15
lines changed

flow-tests/vaadin-spring-tests/test-spring-security-flow-standalone-routepathaccesschecker/src/main/java/com/vaadin/flow/spring/flowsecurity/SecurityConfig.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
1313
import org.springframework.security.config.annotation.web.configurers.AbstractHttpConfigurer;
1414
import org.springframework.security.core.authority.SimpleGrantedAuthority;
15+
import org.springframework.security.core.context.SecurityContextHolderStrategy;
1516
import org.springframework.security.core.userdetails.User;
1617
import org.springframework.security.core.userdetails.UserDetails;
1718
import org.springframework.security.core.userdetails.UsernameNotFoundException;
@@ -50,11 +51,12 @@ public class SecurityConfig {
5051
@Autowired
5152
private RequestUtil requestUtil;
5253

53-
private final AuthenticationContext authenticationContext = new AuthenticationContext();
54+
@Autowired
55+
private SecurityContextHolderStrategy securityContextHolderStrategy;
5456

5557
@Bean
5658
public AuthenticationContext authenticationContext() {
57-
return authenticationContext;
59+
return new AuthenticationContext(securityContextHolderStrategy);
5860
}
5961

6062
@Bean

vaadin-spring/src/test/java/com/vaadin/flow/spring/security/AuthenticationContextTest.java

Lines changed: 32 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -24,12 +24,15 @@
2424
import java.util.Optional;
2525

2626
import org.junit.Assert;
27+
import org.junit.Before;
2728
import org.junit.Test;
2829
import org.junit.runner.RunWith;
2930
import org.mockito.ArgumentMatchers;
3031
import org.mockito.Mockito;
3132
import org.springframework.beans.factory.annotation.Autowired;
33+
import org.springframework.boot.test.context.TestConfiguration;
3234
import org.springframework.context.ApplicationContext;
35+
import org.springframework.context.annotation.Bean;
3336
import org.springframework.security.config.ObjectPostProcessor;
3437
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
3538
import org.springframework.security.config.annotation.configuration.ObjectPostProcessorConfiguration;
@@ -38,6 +41,7 @@
3841
import org.springframework.security.core.Authentication;
3942
import org.springframework.security.core.authority.SimpleGrantedAuthority;
4043
import org.springframework.security.core.context.SecurityContextHolder;
44+
import org.springframework.security.core.context.SecurityContextHolderStrategy;
4145
import org.springframework.security.core.userdetails.User;
4246
import org.springframework.security.test.context.support.WithAnonymousUser;
4347
import org.springframework.security.test.context.support.WithMockUser;
@@ -65,16 +69,34 @@
6569
import elemental.json.JsonValue;
6670

6771
@RunWith(SpringRunner.class)
68-
@ContextConfiguration(classes = ObjectPostProcessorConfiguration.class)
72+
@ContextConfiguration(classes = { ObjectPostProcessorConfiguration.class,
73+
AuthenticationContextTest.AuthenticationContextTestConfiguration.class })
6974
public class AuthenticationContextTest {
7075

76+
@TestConfiguration
77+
static class AuthenticationContextTestConfiguration {
78+
79+
@Bean
80+
SecurityContextHolderStrategy vaadinAwareSecurityContextHolderStrategy() {
81+
return new VaadinAwareSecurityContextHolderStrategy();
82+
}
83+
}
84+
7185
@Autowired
7286
ObjectPostProcessor<Object> postProcessor;
7387

7488
@Autowired
7589
ApplicationContext appCtx;
7690

77-
private final AuthenticationContext authContext = new AuthenticationContext();
91+
@Autowired
92+
SecurityContextHolderStrategy securityContextHolderStrategy;
93+
94+
private AuthenticationContext authContext;
95+
96+
@Before
97+
public void setUp() {
98+
authContext = new AuthenticationContext(securityContextHolderStrategy);
99+
}
78100

79101
@Test
80102
public void isAuthenticated_notAuthenticated_false() {
@@ -509,8 +531,8 @@ public void then(
509531
}
510532

511533
private SetupForLogoutTest getSetupForLogoutTest() {
512-
Authentication authentication = SecurityContextHolder.getContext()
513-
.getAuthentication();
534+
Authentication authentication = securityContextHolderStrategy
535+
.getContext().getAuthentication();
514536

515537
LogoutSuccessHandler successHandler = Mockito
516538
.mock(LogoutSuccessHandler.class);
@@ -555,7 +577,8 @@ public void applySecurityConfiguration_logoutHandlerConfigured()
555577
.logout(cfg -> cfg.logoutSuccessHandler(logoutSuccessHandler)
556578
.addLogoutHandler(handler1).addLogoutHandler(handler2));
557579
httpSecurity.build();
558-
AuthenticationContext authCtx = new AuthenticationContext();
580+
AuthenticationContext authCtx = new AuthenticationContext(
581+
securityContextHolderStrategy);
559582
AuthenticationContext.applySecurityConfiguration(httpSecurity, authCtx);
560583

561584
Assert.assertNotNull(authCtx.getLogoutSuccessHandler());
@@ -584,7 +607,8 @@ public void applySecurityConfiguration_unbuiltHttpSecurity_throws()
584607
.logout(cfg -> cfg.logoutSuccessHandler(logoutSuccessHandler)
585608
.addLogoutHandler(handler1).addLogoutHandler(handler2));
586609

587-
AuthenticationContext authCtx = new AuthenticationContext();
610+
AuthenticationContext authCtx = new AuthenticationContext(
611+
securityContextHolderStrategy);
588612

589613
IllegalStateException exception = Assert.assertThrows(
590614
IllegalStateException.class, () -> AuthenticationContext
@@ -597,7 +621,8 @@ public void applySecurityConfiguration_unbuiltHttpSecurity_throws()
597621
@WithMockUser(authorities = { "FOO_USER", "FOO_ADMIN" })
598622
public void supportsCustomRolePrefixes() {
599623
var prefixHolder = new VaadinRolePrefixHolder("FOO_");
600-
var authContext = new AuthenticationContext();
624+
var authContext = new AuthenticationContext(
625+
securityContextHolderStrategy);
601626
authContext.setRolePrefixHolder(prefixHolder);
602627
Assert.assertTrue(authContext.hasAnyRole("USER", "ADMIN"));
603628
Assert.assertTrue(authContext.hasAllRoles("USER", "ADMIN"));

vaadin-spring/src/test/java/com/vaadin/flow/spring/security/SpringAccessPathCheckerTest.java

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
2727
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
2828
import org.springframework.security.core.context.SecurityContextHolder;
29+
import org.springframework.security.core.context.SecurityContextHolderStrategy;
2930
import org.springframework.security.test.context.support.WithAnonymousUser;
3031
import org.springframework.security.test.context.support.WithMockUser;
3132
import org.springframework.security.web.SecurityFilterChain;
@@ -46,6 +47,9 @@ class SpringAccessPathCheckerTest {
4647
@Autowired
4748
private SpringAccessPathChecker accessPathChecker;
4849

50+
@Autowired
51+
private SecurityContextHolderStrategy securityContextHolderStrategy;
52+
4953
@Test
5054
@WithAnonymousUser
5155
void checkAccess_anonymous() {
@@ -139,7 +143,7 @@ void checkAccess_adminAndGuest() {
139143
}
140144

141145
private boolean checkAccess(String admin) {
142-
Principal principal = SecurityContextHolder.getContext()
146+
Principal principal = securityContextHolderStrategy.getContext()
143147
.getAuthentication();
144148
Function<String, Boolean> roleChecker = AuthenticationUtil
145149
.getSecurityHolderRoleChecker();
@@ -151,10 +155,17 @@ private boolean checkAccess(String admin) {
151155
@EnableWebSecurity
152156
public static class TestConfig {
153157

158+
@Bean
159+
SecurityContextHolderStrategy vaadinAwareSecurityContextHolderStrategy() {
160+
return new VaadinAwareSecurityContextHolderStrategy();
161+
}
162+
154163
@Bean
155164
SpringAccessPathChecker rootPathAccessChecker(
165+
SecurityContextHolderStrategy securityContextHolderStrategy,
156166
WebInvocationPrivilegeEvaluator evaluator) {
157-
return new SpringAccessPathChecker(evaluator);
167+
return new SpringAccessPathChecker(securityContextHolderStrategy,
168+
evaluator);
158169
}
159170

160171
@Bean
@@ -174,4 +185,4 @@ public SecurityFilterChain testingFilterChain(HttpSecurity http)
174185
}
175186
}
176187

177-
}
188+
}

vaadin-spring/src/test/java/com/vaadin/flow/spring/security/UrlMappingSpringAccessPathCheckerTest.java

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
2727
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
2828
import org.springframework.security.core.context.SecurityContextHolder;
29+
import org.springframework.security.core.context.SecurityContextHolderStrategy;
2930
import org.springframework.security.test.context.support.WithAnonymousUser;
3031
import org.springframework.security.test.context.support.WithMockUser;
3132
import org.springframework.security.web.SecurityFilterChain;
@@ -46,6 +47,9 @@ class UrlMappingSpringAccessPathCheckerTest {
4647
@Autowired
4748
private SpringAccessPathChecker accessPathChecker;
4849

50+
@Autowired
51+
private SecurityContextHolderStrategy securityContextHolderStrategy;
52+
4953
@Test
5054
@WithAnonymousUser
5155
void checkAccess_anonymous() {
@@ -139,7 +143,7 @@ void checkAccess_adminAndGuest() {
139143
}
140144

141145
private boolean checkAccess(String admin) {
142-
Principal principal = SecurityContextHolder.getContext()
146+
Principal principal = securityContextHolderStrategy.getContext()
143147
.getAuthentication();
144148
Function<String, Boolean> roleChecker = AuthenticationUtil
145149
.getSecurityHolderRoleChecker();
@@ -151,10 +155,17 @@ private boolean checkAccess(String admin) {
151155
@EnableWebSecurity
152156
public static class TestConfig {
153157

158+
@Bean
159+
SecurityContextHolderStrategy vaadinAwareSecurityContextHolderStrategy() {
160+
return new VaadinAwareSecurityContextHolderStrategy();
161+
}
162+
154163
@Bean
155164
SpringAccessPathChecker urlMappingPpathAccessChecker(
165+
SecurityContextHolderStrategy securityContextHolderStrategy,
156166
WebInvocationPrivilegeEvaluator evaluator) {
157-
return new SpringAccessPathChecker(evaluator, "/url-mapping/*");
167+
return new SpringAccessPathChecker(securityContextHolderStrategy,
168+
evaluator, "/url-mapping/*");
158169
}
159170

160171
@Bean
@@ -174,4 +185,4 @@ public SecurityFilterChain testingFilterChain(HttpSecurity http)
174185
}
175186
}
176187

177-
}
188+
}

0 commit comments

Comments
 (0)