|
|
|
@ -25,9 +25,15 @@ import org.springframework.mock.web.MockHttpServletResponse; |
|
|
|
import org.springframework.security.authentication.TestAuthentication; |
|
|
|
import org.springframework.security.authentication.TestAuthentication; |
|
|
|
import org.springframework.security.core.context.SecurityContext; |
|
|
|
import org.springframework.security.core.context.SecurityContext; |
|
|
|
import org.springframework.security.core.context.SecurityContextHolder; |
|
|
|
import org.springframework.security.core.context.SecurityContextHolder; |
|
|
|
|
|
|
|
import org.springframework.security.core.context.SecurityContextHolderStrategy; |
|
|
|
import org.springframework.security.core.context.SecurityContextImpl; |
|
|
|
import org.springframework.security.core.context.SecurityContextImpl; |
|
|
|
|
|
|
|
|
|
|
|
import static org.assertj.core.api.Assertions.assertThat; |
|
|
|
import static org.assertj.core.api.Assertions.assertThat; |
|
|
|
|
|
|
|
import static org.assertj.core.api.Assertions.assertThatIllegalArgumentException; |
|
|
|
|
|
|
|
import static org.mockito.BDDMockito.given; |
|
|
|
|
|
|
|
import static org.mockito.Mockito.mock; |
|
|
|
|
|
|
|
import static org.mockito.Mockito.verify; |
|
|
|
|
|
|
|
import static org.mockito.Mockito.verifyNoMoreInteractions; |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
/** |
|
|
|
* @author Rob Winch |
|
|
|
* @author Rob Winch |
|
|
|
@ -42,6 +48,15 @@ class RequestAttributeSecurityContextRepositoryTests { |
|
|
|
|
|
|
|
|
|
|
|
private SecurityContext expectedSecurityContext = new SecurityContextImpl(TestAuthentication.authenticatedUser()); |
|
|
|
private SecurityContext expectedSecurityContext = new SecurityContextImpl(TestAuthentication.authenticatedUser()); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Test |
|
|
|
|
|
|
|
void setSecurityContextHolderStrategyWhenNullThenThrowsIllegalArgumentException() { |
|
|
|
|
|
|
|
// @formatter:off
|
|
|
|
|
|
|
|
assertThatIllegalArgumentException() |
|
|
|
|
|
|
|
.isThrownBy(() -> this.repository.setSecurityContextHolderStrategy(null)) |
|
|
|
|
|
|
|
.withMessage("securityContextHolderStrategy cannot be null"); |
|
|
|
|
|
|
|
// @formatter:on
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@Test |
|
|
|
@Test |
|
|
|
void saveContextAndLoadContextThenFound() { |
|
|
|
void saveContextAndLoadContextThenFound() { |
|
|
|
this.repository.saveContext(this.expectedSecurityContext, this.request, this.response); |
|
|
|
this.repository.saveContext(this.expectedSecurityContext, this.request, this.response); |
|
|
|
@ -82,4 +97,16 @@ class RequestAttributeSecurityContextRepositoryTests { |
|
|
|
assertThat(context).isEqualTo(SecurityContextHolder.createEmptyContext()); |
|
|
|
assertThat(context).isEqualTo(SecurityContextHolder.createEmptyContext()); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Test |
|
|
|
|
|
|
|
void loadContextWhenCustomSecurityContextHolderStrategySetThenUsed() { |
|
|
|
|
|
|
|
SecurityContextHolderStrategy securityContextHolderStrategy = mock(SecurityContextHolderStrategy.class); |
|
|
|
|
|
|
|
given(securityContextHolderStrategy.createEmptyContext()).willReturn(new SecurityContextImpl()); |
|
|
|
|
|
|
|
this.repository.setSecurityContextHolderStrategy(securityContextHolderStrategy); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Supplier<SecurityContext> deferredContext = this.repository.loadContext(this.request); |
|
|
|
|
|
|
|
assertThat(deferredContext.get()).isNotNull(); |
|
|
|
|
|
|
|
verify(securityContextHolderStrategy).createEmptyContext(); |
|
|
|
|
|
|
|
verifyNoMoreInteractions(securityContextHolderStrategy); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|