diff --git a/spring-session-core/spring-session-core.gradle b/spring-session-core/spring-session-core.gradle index 62028fe9..afe33d59 100644 --- a/spring-session-core/spring-session-core.gradle +++ b/spring-session-core/spring-session-core.gradle @@ -19,6 +19,7 @@ dependencies { testImplementation "io.projectreactor:reactor-test" testImplementation "org.mockito:mockito-core" + testImplementation "org.mockito:mockito-junit-jupiter" testImplementation "org.mockito:mockito-inline" testImplementation "edu.umd.cs.mtc:multithreadedtc" testImplementation "org.springframework:spring-test" diff --git a/spring-session-core/src/test/java/org/springframework/session/security/SpringSessionBackedSessionRegistryTest.java b/spring-session-core/src/test/java/org/springframework/session/security/SpringSessionBackedSessionRegistryTest.java index 2fe9d134..35ef46c5 100644 --- a/spring-session-core/src/test/java/org/springframework/session/security/SpringSessionBackedSessionRegistryTest.java +++ b/spring-session-core/src/test/java/org/springframework/session/security/SpringSessionBackedSessionRegistryTest.java @@ -1,5 +1,5 @@ /* - * Copyright 2014-2021 the original author or authors. + * Copyright 2014-2022 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -24,12 +24,12 @@ import java.util.LinkedHashMap; import java.util.List; import java.util.Map; -import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.ArgumentCaptor; import org.mockito.InjectMocks; import org.mockito.Mock; -import org.mockito.MockitoAnnotations; +import org.mockito.junit.jupiter.MockitoExtension; import org.springframework.security.core.AuthenticatedPrincipal; import org.springframework.security.core.Authentication; @@ -44,10 +44,12 @@ import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.BDDMockito.given; import static org.mockito.BDDMockito.mock; import static org.mockito.BDDMockito.verify; +import static org.mockito.Mockito.withSettings; /** * Tests for {@link SpringSessionBackedSessionRegistry}. */ +@ExtendWith(MockitoExtension.class) class SpringSessionBackedSessionRegistryTest { private static final String SESSION_ID = "sessionId"; @@ -66,11 +68,6 @@ class SpringSessionBackedSessionRegistryTest { @InjectMocks private SpringSessionBackedSessionRegistry sessionRegistry; - @BeforeEach - void setUp() { - MockitoAnnotations.initMocks(this); - } - @Test void sessionInformationForExistingSession() { Session session = createSession(SESSION_ID, USER_NAME, NOW); @@ -157,7 +154,7 @@ class SpringSessionBackedSessionRegistryTest { private Session createSession(String sessionId, String userName, Instant lastAccessed) { MapSession session = new MapSession(sessionId); session.setLastAccessedTime(lastAccessed); - Authentication authentication = mock(Authentication.class); + Authentication authentication = mock(Authentication.class, withSettings().lenient()); given(authentication.getName()).willReturn(userName); SecurityContextImpl securityContext = new SecurityContextImpl(); securityContext.setAuthentication(authentication); diff --git a/spring-session-core/src/test/java/org/springframework/session/web/http/OnCommittedResponseWrapperTests.java b/spring-session-core/src/test/java/org/springframework/session/web/http/OnCommittedResponseWrapperTests.java index d675232d..953e0551 100644 --- a/spring-session-core/src/test/java/org/springframework/session/web/http/OnCommittedResponseWrapperTests.java +++ b/spring-session-core/src/test/java/org/springframework/session/web/http/OnCommittedResponseWrapperTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2014-2019 the original author or authors. + * Copyright 2014-2022 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -26,18 +26,20 @@ import jakarta.servlet.http.HttpServletResponse; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.Mock; -import org.mockito.MockitoAnnotations; +import org.mockito.junit.jupiter.MockitoExtension; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.BDDMockito.given; import static org.mockito.Mockito.verify; +@ExtendWith(MockitoExtension.class) class OnCommittedResponseWrapperTests { private static final String NL = "\r\n"; - @Mock + @Mock(lenient = true) HttpServletResponse delegate; @Mock @@ -52,7 +54,6 @@ class OnCommittedResponseWrapperTests { @BeforeEach void setup() throws Exception { - MockitoAnnotations.initMocks(this); this.response = new OnCommittedResponseWrapper(this.delegate) { @Override protected void onResponseCommitted() { diff --git a/spring-session-core/src/test/java/org/springframework/session/web/http/SessionEventHttpSessionListenerAdapterTests.java b/spring-session-core/src/test/java/org/springframework/session/web/http/SessionEventHttpSessionListenerAdapterTests.java index 2cac5e95..35993bc4 100644 --- a/spring-session-core/src/test/java/org/springframework/session/web/http/SessionEventHttpSessionListenerAdapterTests.java +++ b/spring-session-core/src/test/java/org/springframework/session/web/http/SessionEventHttpSessionListenerAdapterTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2014-2021 the original author or authors. + * Copyright 2014-2022 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -25,10 +25,11 @@ import jakarta.servlet.http.HttpSessionListener; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.ArgumentCaptor; import org.mockito.Captor; import org.mockito.Mock; -import org.mockito.MockitoAnnotations; +import org.mockito.junit.jupiter.MockitoExtension; import org.springframework.mock.web.MockServletContext; import org.springframework.session.MapSession; @@ -47,6 +48,7 @@ import static org.mockito.Mockito.verifyNoMoreInteractions; * @author Rob Winch * @since 1.1 */ +@ExtendWith(MockitoExtension.class) class SessionEventHttpSessionListenerAdapterTests { @Mock @@ -69,7 +71,6 @@ class SessionEventHttpSessionListenerAdapterTests { @BeforeEach void setup() { - MockitoAnnotations.initMocks(this); this.listener = new SessionEventHttpSessionListenerAdapter(Arrays.asList(this.listener1, this.listener2)); this.listener.setServletContext(new MockServletContext()); diff --git a/spring-session-core/src/test/java/org/springframework/session/web/http/SessionRepositoryFilterTests.java b/spring-session-core/src/test/java/org/springframework/session/web/http/SessionRepositoryFilterTests.java index e736c523..e70d0c63 100644 --- a/spring-session-core/src/test/java/org/springframework/session/web/http/SessionRepositoryFilterTests.java +++ b/spring-session-core/src/test/java/org/springframework/session/web/http/SessionRepositoryFilterTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2014-2019 the original author or authors. + * Copyright 2014-2022 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -45,8 +45,9 @@ import jakarta.servlet.http.HttpSessionContext; import org.assertj.core.data.Offset; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.Mock; -import org.mockito.MockitoAnnotations; +import org.mockito.junit.jupiter.MockitoExtension; import org.springframework.core.Ordered; import org.springframework.core.annotation.AnnotationAwareOrderComparator; @@ -78,6 +79,7 @@ import static org.mockito.Mockito.verifyNoMoreInteractions; /** * Tests for {@link SessionRepositoryFilter}. */ +@ExtendWith(MockitoExtension.class) @SuppressWarnings("deprecation") class SessionRepositoryFilterTests { @@ -98,7 +100,6 @@ class SessionRepositoryFilterTests { @BeforeEach void setup() { - MockitoAnnotations.initMocks(this); this.sessions = new HashMap<>(); this.sessionRepository = new MapSessionRepository(this.sessions); this.filter = new SessionRepositoryFilter<>(this.sessionRepository); diff --git a/spring-session-core/src/test/java/org/springframework/session/web/server/session/SpringSessionWebSessionStoreTests.java b/spring-session-core/src/test/java/org/springframework/session/web/server/session/SpringSessionWebSessionStoreTests.java index 77073619..6f14e514 100644 --- a/spring-session-core/src/test/java/org/springframework/session/web/server/session/SpringSessionWebSessionStoreTests.java +++ b/spring-session-core/src/test/java/org/springframework/session/web/server/session/SpringSessionWebSessionStoreTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2014-2019 the original author or authors. + * Copyright 2014-2022 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -23,8 +23,9 @@ import java.util.Set; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.Mock; -import org.mockito.MockitoAnnotations; +import org.mockito.junit.jupiter.MockitoExtension; import reactor.core.publisher.Mono; import org.springframework.session.ReactiveSessionRepository; @@ -43,9 +44,10 @@ import static org.mockito.Mockito.verify; * @author Rob Winch * @author Vedran Pavic */ +@ExtendWith(MockitoExtension.class) class SpringSessionWebSessionStoreTests { - @Mock + @Mock(lenient = true) private ReactiveSessionRepository sessionRepository; @Mock @@ -58,7 +60,6 @@ class SpringSessionWebSessionStoreTests { @BeforeEach void setup() { - MockitoAnnotations.initMocks(this); this.webSessionStore = new SpringSessionWebSessionStore<>(this.sessionRepository); given(this.sessionRepository.findById(any())).willReturn(Mono.just(this.findByIdSession)); given(this.sessionRepository.createSession()).willReturn(Mono.just(this.createSession)); diff --git a/spring-session-core/src/test/java/org/springframework/session/web/socket/handler/WebSocketConnectHandlerDecoratorFactoryTests.java b/spring-session-core/src/test/java/org/springframework/session/web/socket/handler/WebSocketConnectHandlerDecoratorFactoryTests.java index 13e387a0..efde4253 100644 --- a/spring-session-core/src/test/java/org/springframework/session/web/socket/handler/WebSocketConnectHandlerDecoratorFactoryTests.java +++ b/spring-session-core/src/test/java/org/springframework/session/web/socket/handler/WebSocketConnectHandlerDecoratorFactoryTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2014-2019 the original author or authors. + * Copyright 2014-2022 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -18,10 +18,11 @@ package org.springframework.session.web.socket.handler; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.ArgumentCaptor; import org.mockito.Captor; import org.mockito.Mock; -import org.mockito.MockitoAnnotations; +import org.mockito.junit.jupiter.MockitoExtension; import org.springframework.context.ApplicationEvent; import org.springframework.context.ApplicationEventPublisher; @@ -35,6 +36,7 @@ import static org.mockito.BDDMockito.willThrow; import static org.mockito.Mockito.any; import static org.mockito.Mockito.verify; +@ExtendWith(MockitoExtension.class) class WebSocketConnectHandlerDecoratorFactoryTests { @Mock @@ -53,7 +55,6 @@ class WebSocketConnectHandlerDecoratorFactoryTests { @BeforeEach void setup() { - MockitoAnnotations.initMocks(this); this.factory = new WebSocketConnectHandlerDecoratorFactory(this.eventPublisher); } diff --git a/spring-session-core/src/test/java/org/springframework/session/web/socket/handler/WebSocketRegistryListenerTests.java b/spring-session-core/src/test/java/org/springframework/session/web/socket/handler/WebSocketRegistryListenerTests.java index b46a93e7..ec4ed194 100644 --- a/spring-session-core/src/test/java/org/springframework/session/web/socket/handler/WebSocketRegistryListenerTests.java +++ b/spring-session-core/src/test/java/org/springframework/session/web/socket/handler/WebSocketRegistryListenerTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2014-2019 the original author or authors. + * Copyright 2014-2022 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -22,8 +22,9 @@ import java.util.Map; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.Mock; -import org.mockito.MockitoAnnotations; +import org.mockito.junit.jupiter.MockitoExtension; import org.springframework.messaging.Message; import org.springframework.messaging.MessageHeaders; @@ -44,15 +45,16 @@ import static org.mockito.BDDMockito.given; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; +@ExtendWith(MockitoExtension.class) class WebSocketRegistryListenerTests { - @Mock + @Mock(lenient = true) private WebSocketSession wsSession; - @Mock + @Mock(lenient = true) private WebSocketSession wsSession2; - @Mock + @Mock(lenient = true) private Message message; @Mock @@ -74,7 +76,6 @@ class WebSocketRegistryListenerTests { @BeforeEach void setup() { - MockitoAnnotations.initMocks(this); String sessionId = "session-id"; MapSession session = new MapSession(sessionId); diff --git a/spring-session-core/src/test/java/org/springframework/session/web/socket/server/SessionRepositoryMessageInterceptorTests.java b/spring-session-core/src/test/java/org/springframework/session/web/socket/server/SessionRepositoryMessageInterceptorTests.java index 559c984d..ae576207 100644 --- a/spring-session-core/src/test/java/org/springframework/session/web/socket/server/SessionRepositoryMessageInterceptorTests.java +++ b/spring-session-core/src/test/java/org/springframework/session/web/socket/server/SessionRepositoryMessageInterceptorTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2014-2019 the original author or authors. + * Copyright 2014-2022 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -27,9 +27,10 @@ import jakarta.servlet.http.HttpSession; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.ArgumentMatcher; import org.mockito.Mock; -import org.mockito.MockitoAnnotations; +import org.mockito.junit.jupiter.MockitoExtension; import org.springframework.http.server.ServletServerHttpRequest; import org.springframework.messaging.Message; @@ -51,9 +52,10 @@ import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verifyNoMoreInteractions; +@ExtendWith(MockitoExtension.class) class SessionRepositoryMessageInterceptorTests { - @Mock + @Mock(lenient = true) SessionRepository sessionRepository; @Mock @@ -70,7 +72,6 @@ class SessionRepositoryMessageInterceptorTests { @BeforeEach void setup() { - MockitoAnnotations.initMocks(this); this.interceptor = new SessionRepositoryMessageInterceptor<>(this.sessionRepository); this.headers = SimpMessageHeaderAccessor.create(); this.headers.setSessionId("session"); diff --git a/spring-session-data-mongodb/src/integration-test/java/org/springframework/session/data/mongo/integration/AbstractMongoRepositoryITest.java b/spring-session-data-mongodb/src/integration-test/java/org/springframework/session/data/mongo/integration/AbstractMongoRepositoryITest.java index 144e8d31..b2ec99bc 100644 --- a/spring-session-data-mongodb/src/integration-test/java/org/springframework/session/data/mongo/integration/AbstractMongoRepositoryITest.java +++ b/spring-session-data-mongodb/src/integration-test/java/org/springframework/session/data/mongo/integration/AbstractMongoRepositoryITest.java @@ -401,8 +401,8 @@ public abstract class AbstractMongoRepositoryITest extends AbstractITest { @Bean public MongoOperations mongoOperations(MongoDBContainer mongoContainer) { - MongoClient mongo = MongoClients.create( - "mongodb://" + mongoContainer.getContainerIpAddress() + ":" + mongoContainer.getFirstMappedPort()); + MongoClient mongo = MongoClients + .create("mongodb://" + mongoContainer.getHost() + ":" + mongoContainer.getFirstMappedPort()); return new MongoTemplate(mongo, "test"); } diff --git a/spring-session-data-mongodb/src/integration-test/java/org/springframework/session/data/mongo/integration/MongoDbDeleteJacksonSessionVerificationTest.java b/spring-session-data-mongodb/src/integration-test/java/org/springframework/session/data/mongo/integration/MongoDbDeleteJacksonSessionVerificationTest.java index f9640ecc..7b0364b6 100644 --- a/spring-session-data-mongodb/src/integration-test/java/org/springframework/session/data/mongo/integration/MongoDbDeleteJacksonSessionVerificationTest.java +++ b/spring-session-data-mongodb/src/integration-test/java/org/springframework/session/data/mongo/integration/MongoDbDeleteJacksonSessionVerificationTest.java @@ -157,9 +157,8 @@ public class MongoDbDeleteJacksonSessionVerificationTest { @Bean MapReactiveUserDetailsService userDetailsService() { - return new MapReactiveUserDetailsService(User.withDefaultPasswordEncoder() // - .username("admin") // - .password("password") // + return new MapReactiveUserDetailsService(User.withUsername("admin") // + .password("{noop}password") // .roles("USER,ADMIN") // .build()); } @@ -188,8 +187,8 @@ public class MongoDbDeleteJacksonSessionVerificationTest { @Bean ReactiveMongoOperations mongoOperations(MongoDBContainer mongoContainer) { - MongoClient mongo = MongoClients.create( - "mongodb://" + mongoContainer.getContainerIpAddress() + ":" + mongoContainer.getFirstMappedPort()); + MongoClient mongo = MongoClients + .create("mongodb://" + mongoContainer.getHost() + ":" + mongoContainer.getFirstMappedPort()); return new ReactiveMongoTemplate(mongo, "DB_Name_DeleteJacksonSessionVerificationTest"); } diff --git a/spring-session-data-mongodb/src/integration-test/java/org/springframework/session/data/mongo/integration/MongoDbLogoutVerificationTest.java b/spring-session-data-mongodb/src/integration-test/java/org/springframework/session/data/mongo/integration/MongoDbLogoutVerificationTest.java index 55f17eaa..dd4aa511 100644 --- a/spring-session-data-mongodb/src/integration-test/java/org/springframework/session/data/mongo/integration/MongoDbLogoutVerificationTest.java +++ b/spring-session-data-mongodb/src/integration-test/java/org/springframework/session/data/mongo/integration/MongoDbLogoutVerificationTest.java @@ -157,9 +157,8 @@ public class MongoDbLogoutVerificationTest { @Bean MapReactiveUserDetailsService userDetailsService() { - return new MapReactiveUserDetailsService(User.withDefaultPasswordEncoder() // - .username("admin") // - .password("password") // + return new MapReactiveUserDetailsService(User.withUsername("admin") // + .password("{noop}password") // .roles("USER,ADMIN") // .build()); } @@ -183,8 +182,8 @@ public class MongoDbLogoutVerificationTest { @Bean ReactiveMongoOperations mongoOperations(MongoDBContainer mongoContainer) { - MongoClient mongo = MongoClients.create( - "mongodb://" + mongoContainer.getContainerIpAddress() + ":" + mongoContainer.getFirstMappedPort()); + MongoClient mongo = MongoClients + .create("mongodb://" + mongoContainer.getHost() + ":" + mongoContainer.getFirstMappedPort()); return new ReactiveMongoTemplate(mongo, "test"); } diff --git a/spring-session-data-mongodb/src/main/java/org/springframework/session/data/mongo/JacksonMongoSessionConverter.java b/spring-session-data-mongodb/src/main/java/org/springframework/session/data/mongo/JacksonMongoSessionConverter.java index 29104911..98663420 100644 --- a/spring-session-data-mongodb/src/main/java/org/springframework/session/data/mongo/JacksonMongoSessionConverter.java +++ b/spring-session-data-mongodb/src/main/java/org/springframework/session/data/mongo/JacksonMongoSessionConverter.java @@ -1,5 +1,5 @@ /* - * Copyright 2014-2016 the original author or authors. + * Copyright 2014-2022 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -29,7 +29,7 @@ import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.Module; import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.PropertyNamingStrategy; +import com.fasterxml.jackson.databind.PropertyNamingStrategies; import com.mongodb.BasicDBObject; import com.mongodb.DBObject; import org.apache.commons.logging.Log; @@ -168,7 +168,7 @@ public class JacksonMongoSessionConverter extends AbstractMongoSessionConverter } - private static class MongoIdNamingStrategy extends PropertyNamingStrategy.PropertyNamingStrategyBase { + private static class MongoIdNamingStrategy extends PropertyNamingStrategies.NamingBase { @Override public String translate(String propertyName) { diff --git a/spring-session-data-mongodb/src/test/java/org/springframework/session/data/mongo/AbstractMongoSessionConverterTest.java b/spring-session-data-mongodb/src/test/java/org/springframework/session/data/mongo/AbstractMongoSessionConverterTest.java index 8169e1fb..7fa2bcbf 100644 --- a/spring-session-data-mongodb/src/test/java/org/springframework/session/data/mongo/AbstractMongoSessionConverterTest.java +++ b/spring-session-data-mongodb/src/test/java/org/springframework/session/data/mongo/AbstractMongoSessionConverterTest.java @@ -1,5 +1,5 @@ /* - * Copyright 2017 the original author or authors. + * Copyright 2014-2022 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -49,7 +49,7 @@ public abstract class AbstractMongoSessionConverterTest { MongoSession deserialized = convertToSession(dbObject); // then - assertThat(deserialized).isEqualToComparingFieldByField(toSerialize); + assertThat(deserialized).usingRecursiveComparison().isEqualTo(toSerialize); } @Test @@ -67,14 +67,12 @@ public abstract class AbstractMongoSessionConverterTest { MongoSession deserialized = convertToSession(serialized); // then - assertThat(deserialized).isEqualToComparingOnlyGivenFields(toSerialize, "id", "createdMillis", "accessedMillis", - "intervalSeconds", "expireAt"); + assertThat(deserialized).usingRecursiveComparison().isEqualTo(toSerialize); SecurityContextImpl springSecurityContextBefore = toSerialize.getAttribute("SPRING_SECURITY_CONTEXT"); SecurityContextImpl springSecurityContextAfter = deserialized.getAttribute("SPRING_SECURITY_CONTEXT"); - assertThat(springSecurityContextBefore).isEqualToComparingOnlyGivenFields(springSecurityContextAfter, - "authentication.principal", "authentication.authorities", "authentication.authenticated"); + assertThat(springSecurityContextBefore).usingRecursiveComparison().isEqualTo(springSecurityContextAfter); assertThat(springSecurityContextAfter.getAuthentication().getPrincipal()).isEqualTo("john_the_springer"); assertThat(springSecurityContextAfter.getAuthentication().getCredentials()).isNull(); } diff --git a/spring-session-data-redis/spring-session-data-redis.gradle b/spring-session-data-redis/spring-session-data-redis.gradle index 6b701b8d..1d7d00f2 100644 --- a/spring-session-data-redis/spring-session-data-redis.gradle +++ b/spring-session-data-redis/spring-session-data-redis.gradle @@ -13,6 +13,7 @@ dependencies { testImplementation "org.assertj:assertj-core" testImplementation "org.mockito:mockito-core" + testImplementation "org.mockito:mockito-junit-jupiter" testImplementation "org.springframework:spring-test" testImplementation "io.projectreactor:reactor-test" testImplementation "jakarta.servlet:jakarta.servlet-api" diff --git a/spring-session-data-redis/src/integration-test/java/org/springframework/session/data/redis/AbstractRedisITests.java b/spring-session-data-redis/src/integration-test/java/org/springframework/session/data/redis/AbstractRedisITests.java index 45859d3f..f5616ac0 100644 --- a/spring-session-data-redis/src/integration-test/java/org/springframework/session/data/redis/AbstractRedisITests.java +++ b/spring-session-data-redis/src/integration-test/java/org/springframework/session/data/redis/AbstractRedisITests.java @@ -42,8 +42,8 @@ public abstract class AbstractRedisITests { @Bean public LettuceConnectionFactory redisConnectionFactory() { - RedisStandaloneConfiguration configuration = new RedisStandaloneConfiguration( - redisContainer().getContainerIpAddress(), redisContainer().getFirstMappedPort()); + RedisStandaloneConfiguration configuration = new RedisStandaloneConfiguration(redisContainer().getHost(), + redisContainer().getFirstMappedPort()); return new LettuceConnectionFactory(configuration); } diff --git a/spring-session-data-redis/src/main/java/org/springframework/session/data/redis/config/ConfigureNotifyKeyspaceEventsAction.java b/spring-session-data-redis/src/main/java/org/springframework/session/data/redis/config/ConfigureNotifyKeyspaceEventsAction.java index 2927d535..2a9c539f 100644 --- a/spring-session-data-redis/src/main/java/org/springframework/session/data/redis/config/ConfigureNotifyKeyspaceEventsAction.java +++ b/spring-session-data-redis/src/main/java/org/springframework/session/data/redis/config/ConfigureNotifyKeyspaceEventsAction.java @@ -1,5 +1,5 @@ /* - * Copyright 2014-2021 the original author or authors. + * Copyright 2014-2022 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -65,13 +65,13 @@ public class ConfigureNotifyKeyspaceEventsAction implements ConfigureRedisAction customizedNotifyOptions += "x"; } if (!notifyOptions.equals(customizedNotifyOptions)) { - connection.setConfig(CONFIG_NOTIFY_KEYSPACE_EVENTS, customizedNotifyOptions); + connection.serverCommands().setConfig(CONFIG_NOTIFY_KEYSPACE_EVENTS, customizedNotifyOptions); } } private String getNotifyOptions(RedisConnection connection) { try { - Properties config = connection.getConfig(CONFIG_NOTIFY_KEYSPACE_EVENTS); + Properties config = connection.serverCommands().getConfig(CONFIG_NOTIFY_KEYSPACE_EVENTS); if (config.isEmpty()) { return ""; } diff --git a/spring-session-data-redis/src/test/java/org/springframework/session/data/redis/RedisIndexedSessionRepositoryTests.java b/spring-session-data-redis/src/test/java/org/springframework/session/data/redis/RedisIndexedSessionRepositoryTests.java index 73e1f690..07cd09d5 100644 --- a/spring-session-data-redis/src/test/java/org/springframework/session/data/redis/RedisIndexedSessionRepositoryTests.java +++ b/spring-session-data-redis/src/test/java/org/springframework/session/data/redis/RedisIndexedSessionRepositoryTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2014-2019 the original author or authors. + * Copyright 2014-2022 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -30,10 +30,11 @@ import java.util.concurrent.TimeUnit; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.ArgumentCaptor; import org.mockito.Captor; import org.mockito.Mock; -import org.mockito.MockitoAnnotations; +import org.mockito.junit.jupiter.MockitoExtension; import org.springframework.context.ApplicationEventPublisher; import org.springframework.data.redis.connection.DefaultMessage; @@ -65,6 +66,7 @@ import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verifyNoMoreInteractions; +@ExtendWith(MockitoExtension.class) class RedisIndexedSessionRepositoryTests { @Mock @@ -97,7 +99,6 @@ class RedisIndexedSessionRepositoryTests { @BeforeEach void setup() { - MockitoAnnotations.initMocks(this); this.redisRepository = new RedisIndexedSessionRepository(this.redisOperations); this.redisRepository.setDefaultSerializer(this.defaultSerializer); diff --git a/spring-session-data-redis/src/test/java/org/springframework/session/data/redis/RedisSessionExpirationPolicyTests.java b/spring-session-data-redis/src/test/java/org/springframework/session/data/redis/RedisSessionExpirationPolicyTests.java index acad2b67..c9d57c7e 100644 --- a/spring-session-data-redis/src/test/java/org/springframework/session/data/redis/RedisSessionExpirationPolicyTests.java +++ b/spring-session-data-redis/src/test/java/org/springframework/session/data/redis/RedisSessionExpirationPolicyTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2014-2021 the original author or authors. + * Copyright 2014-2022 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -22,8 +22,9 @@ import java.util.concurrent.TimeUnit; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.Mock; -import org.mockito.MockitoAnnotations; +import org.mockito.junit.jupiter.MockitoExtension; import org.springframework.data.redis.core.BoundHashOperations; import org.springframework.data.redis.core.BoundSetOperations; @@ -39,6 +40,7 @@ import static org.mockito.Mockito.verify; /** * @author Rob Winch */ +@ExtendWith(MockitoExtension.class) class RedisSessionExpirationPolicyTests { // Wed Apr 15 10:28:32 CDT 2015 @@ -47,7 +49,7 @@ class RedisSessionExpirationPolicyTests { // Wed Apr 15 10:27:32 CDT 2015 private static final Long ONE_MINUTE_AGO = 1429111652346L; - @Mock + @Mock(lenient = true) RedisOperations sessionRedisOperations; @Mock @@ -65,7 +67,6 @@ class RedisSessionExpirationPolicyTests { @BeforeEach void setup() { - MockitoAnnotations.initMocks(this); RedisIndexedSessionRepository repository = new RedisIndexedSessionRepository(this.sessionRedisOperations); this.policy = new RedisSessionExpirationPolicy(this.sessionRedisOperations, repository::getExpirationsKey, repository::getSessionKey); diff --git a/spring-session-data-redis/src/test/java/org/springframework/session/data/redis/RedisSessionRepositoryTests.java b/spring-session-data-redis/src/test/java/org/springframework/session/data/redis/RedisSessionRepositoryTests.java index 3ea51709..8e5c2a02 100644 --- a/spring-session-data-redis/src/test/java/org/springframework/session/data/redis/RedisSessionRepositoryTests.java +++ b/spring-session-data-redis/src/test/java/org/springframework/session/data/redis/RedisSessionRepositoryTests.java @@ -26,10 +26,11 @@ import java.util.Map; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.ArgumentCaptor; import org.mockito.Captor; import org.mockito.Mock; -import org.mockito.MockitoAnnotations; +import org.mockito.junit.jupiter.MockitoExtension; import org.springframework.data.redis.core.HashOperations; import org.springframework.data.redis.core.RedisOperations; @@ -52,13 +53,14 @@ import static org.mockito.Mockito.verifyNoMoreInteractions; * * @author Vedran Pavic */ +@ExtendWith(MockitoExtension.class) class RedisSessionRepositoryTests { private static final String TEST_SESSION_ID = "session-id"; private static final String TEST_SESSION_KEY = getSessionKey(TEST_SESSION_ID); - @Mock + @Mock(lenient = true) private RedisOperations sessionRedisOperations; @Mock @@ -71,7 +73,6 @@ class RedisSessionRepositoryTests { @BeforeEach void setUp() { - MockitoAnnotations.initMocks(this); given(this.sessionRedisOperations.opsForHash()).willReturn(this.sessionHashOperations); this.sessionRepository = new RedisSessionRepository(this.sessionRedisOperations); } diff --git a/spring-session-data-redis/src/test/java/org/springframework/session/data/redis/config/annotation/web/http/EnableRedisKeyspaceNotificationsInitializerTests.java b/spring-session-data-redis/src/test/java/org/springframework/session/data/redis/config/annotation/web/http/EnableRedisKeyspaceNotificationsInitializerTests.java index 3f863547..9729400b 100644 --- a/spring-session-data-redis/src/test/java/org/springframework/session/data/redis/config/annotation/web/http/EnableRedisKeyspaceNotificationsInitializerTests.java +++ b/spring-session-data-redis/src/test/java/org/springframework/session/data/redis/config/annotation/web/http/EnableRedisKeyspaceNotificationsInitializerTests.java @@ -20,13 +20,15 @@ import java.util.Properties; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.ArgumentCaptor; import org.mockito.Captor; import org.mockito.Mock; -import org.mockito.MockitoAnnotations; +import org.mockito.junit.jupiter.MockitoExtension; import org.springframework.data.redis.connection.RedisConnection; import org.springframework.data.redis.connection.RedisConnectionFactory; +import org.springframework.data.redis.connection.RedisServerCommands; import org.springframework.session.data.redis.config.ConfigureNotifyKeyspaceEventsAction; import static org.assertj.core.api.Assertions.assertThat; @@ -36,6 +38,7 @@ import static org.mockito.BDDMockito.given; import static org.mockito.Mockito.never; import static org.mockito.Mockito.verify; +@ExtendWith(MockitoExtension.class) class EnableRedisKeyspaceNotificationsInitializerTests { private static final String CONFIG_NOTIFY_KEYSPACE_EVENTS = "notify-keyspace-events"; @@ -46,6 +49,9 @@ class EnableRedisKeyspaceNotificationsInitializerTests { @Mock RedisConnection connection; + @Mock + RedisServerCommands commands; + @Captor ArgumentCaptor options; @@ -53,8 +59,8 @@ class EnableRedisKeyspaceNotificationsInitializerTests { @BeforeEach void setup() { - MockitoAnnotations.initMocks(this); given(this.connectionFactory.getConnection()).willReturn(this.connection); + given(this.connection.serverCommands()).willReturn(this.commands); this.initializer = new RedisIndexedHttpSessionConfiguration.EnableRedisKeyspaceNotificationsInitializer( this.connectionFactory, new ConfigureNotifyKeyspaceEventsAction()); @@ -102,7 +108,7 @@ class EnableRedisKeyspaceNotificationsInitializerTests { this.initializer.afterPropertiesSet(); - verify(this.connection, never()).setConfig(anyString(), anyString()); + verify(this.commands, never()).setConfig(anyString(), anyString()); } @Test @@ -156,11 +162,11 @@ class EnableRedisKeyspaceNotificationsInitializerTests { this.initializer.afterPropertiesSet(); - verify(this.connection, never()).setConfig(anyString(), anyString()); + verify(this.commands, never()).setConfig(anyString(), anyString()); } private void assertOptionsContains(String... expectedValues) { - verify(this.connection).setConfig(eq(CONFIG_NOTIFY_KEYSPACE_EVENTS), this.options.capture()); + verify(this.commands).setConfig(eq(CONFIG_NOTIFY_KEYSPACE_EVENTS), this.options.capture()); for (String expectedValue : expectedValues) { assertThat(this.options.getValue()).contains(expectedValue); } @@ -170,7 +176,7 @@ class EnableRedisKeyspaceNotificationsInitializerTests { private void setConfigNotification(String value) { Properties properties = new Properties(); properties.setProperty(CONFIG_NOTIFY_KEYSPACE_EVENTS, value); - given(this.connection.getConfig(CONFIG_NOTIFY_KEYSPACE_EVENTS)).willReturn(properties); + given(this.commands.getConfig(CONFIG_NOTIFY_KEYSPACE_EVENTS)).willReturn(properties); } } diff --git a/spring-session-data-redis/src/test/java/org/springframework/session/data/redis/config/annotation/web/http/RedisHttpSessionConfigurationClassPathXmlApplicationContextTests.java b/spring-session-data-redis/src/test/java/org/springframework/session/data/redis/config/annotation/web/http/RedisHttpSessionConfigurationClassPathXmlApplicationContextTests.java index c9bf121b..8baeb515 100644 --- a/spring-session-data-redis/src/test/java/org/springframework/session/data/redis/config/annotation/web/http/RedisHttpSessionConfigurationClassPathXmlApplicationContextTests.java +++ b/spring-session-data-redis/src/test/java/org/springframework/session/data/redis/config/annotation/web/http/RedisHttpSessionConfigurationClassPathXmlApplicationContextTests.java @@ -23,6 +23,7 @@ import org.junit.jupiter.api.extension.ExtendWith; import org.springframework.data.redis.connection.RedisConnection; import org.springframework.data.redis.connection.RedisConnectionFactory; +import org.springframework.data.redis.connection.RedisServerCommands; import org.springframework.data.redis.connection.SubscriptionListener; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit.jupiter.SpringExtension; @@ -50,8 +51,10 @@ public class RedisHttpSessionConfigurationClassPathXmlApplicationContextTests { static RedisConnectionFactory connectionFactory() { RedisConnectionFactory factory = mock(RedisConnectionFactory.class); RedisConnection connection = mock(RedisConnection.class); + RedisServerCommands commands = mock(RedisServerCommands.class); given(factory.getConnection()).willReturn(connection); - given(connection.getConfig(anyString())).willReturn(new Properties()); + given(connection.serverCommands()).willReturn(commands); + given(commands.getConfig(anyString())).willReturn(new Properties()); willAnswer((it) -> { SubscriptionListener listener = it.getArgument(0); diff --git a/spring-session-data-redis/src/test/java/org/springframework/session/data/redis/config/annotation/web/http/RedisHttpSessionConfigurationOverrideDefaultSerializerTests.java b/spring-session-data-redis/src/test/java/org/springframework/session/data/redis/config/annotation/web/http/RedisHttpSessionConfigurationOverrideDefaultSerializerTests.java index 1314b7a8..7ac14fb6 100644 --- a/spring-session-data-redis/src/test/java/org/springframework/session/data/redis/config/annotation/web/http/RedisHttpSessionConfigurationOverrideDefaultSerializerTests.java +++ b/spring-session-data-redis/src/test/java/org/springframework/session/data/redis/config/annotation/web/http/RedisHttpSessionConfigurationOverrideDefaultSerializerTests.java @@ -26,6 +26,7 @@ import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.redis.connection.RedisConnection; import org.springframework.data.redis.connection.RedisConnectionFactory; +import org.springframework.data.redis.connection.RedisServerCommands; import org.springframework.data.redis.connection.SubscriptionListener; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.serializer.RedisSerializer; @@ -76,8 +77,10 @@ class RedisHttpSessionConfigurationOverrideDefaultSerializerTests { RedisConnectionFactory connectionFactory() { RedisConnectionFactory factory = mock(RedisConnectionFactory.class); RedisConnection connection = mock(RedisConnection.class); + RedisServerCommands commands = mock(RedisServerCommands.class); given(factory.getConnection()).willReturn(connection); - given(connection.getConfig(anyString())).willReturn(new Properties()); + given(connection.serverCommands()).willReturn(commands); + given(commands.getConfig(anyString())).willReturn(new Properties()); willAnswer((it) -> { SubscriptionListener listener = it.getArgument(0); diff --git a/spring-session-data-redis/src/test/java/org/springframework/session/data/redis/config/annotation/web/http/RedisHttpSessionConfigurationTests.java b/spring-session-data-redis/src/test/java/org/springframework/session/data/redis/config/annotation/web/http/RedisHttpSessionConfigurationTests.java index 285e88e0..d2a92404 100644 --- a/spring-session-data-redis/src/test/java/org/springframework/session/data/redis/config/annotation/web/http/RedisHttpSessionConfigurationTests.java +++ b/spring-session-data-redis/src/test/java/org/springframework/session/data/redis/config/annotation/web/http/RedisHttpSessionConfigurationTests.java @@ -33,6 +33,7 @@ import org.springframework.context.support.PropertySourcesPlaceholderConfigurer; import org.springframework.core.annotation.Order; import org.springframework.data.redis.connection.RedisConnection; import org.springframework.data.redis.connection.RedisConnectionFactory; +import org.springframework.data.redis.connection.RedisServerCommands; import org.springframework.data.redis.connection.SubscriptionListener; import org.springframework.data.redis.core.RedisOperations; import org.springframework.mock.env.MockEnvironment; @@ -210,11 +211,13 @@ class RedisHttpSessionConfigurationTests { private static RedisConnectionFactory mockRedisConnectionFactory() { RedisConnectionFactory connectionFactoryMock = mock(RedisConnectionFactory.class); RedisConnection connectionMock = mock(RedisConnection.class); + RedisServerCommands commandsMock = mock(RedisServerCommands.class); given(connectionFactoryMock.getConnection()).willReturn(connectionMock); + given(connectionMock.serverCommands()).willReturn(commandsMock); Properties keyspaceEventsConfig = new Properties(); keyspaceEventsConfig.put("notify-keyspace-events", "KEA"); - given(connectionMock.getConfig("notify-keyspace-events")).willReturn(keyspaceEventsConfig); + given(commandsMock.getConfig("notify-keyspace-events")).willReturn(keyspaceEventsConfig); willAnswer((it) -> { SubscriptionListener listener = it.getArgument(0); diff --git a/spring-session-data-redis/src/test/java/org/springframework/session/data/redis/config/annotation/web/http/RedisHttpSessionConfigurationXmlCustomExpireTests.java b/spring-session-data-redis/src/test/java/org/springframework/session/data/redis/config/annotation/web/http/RedisHttpSessionConfigurationXmlCustomExpireTests.java index 9c78a1d4..464be4e7 100644 --- a/spring-session-data-redis/src/test/java/org/springframework/session/data/redis/config/annotation/web/http/RedisHttpSessionConfigurationXmlCustomExpireTests.java +++ b/spring-session-data-redis/src/test/java/org/springframework/session/data/redis/config/annotation/web/http/RedisHttpSessionConfigurationXmlCustomExpireTests.java @@ -23,6 +23,7 @@ import org.junit.jupiter.api.extension.ExtendWith; import org.springframework.data.redis.connection.RedisConnection; import org.springframework.data.redis.connection.RedisConnectionFactory; +import org.springframework.data.redis.connection.RedisServerCommands; import org.springframework.data.redis.connection.SubscriptionListener; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit.jupiter.SpringExtension; @@ -46,8 +47,10 @@ public class RedisHttpSessionConfigurationXmlCustomExpireTests { static RedisConnectionFactory connectionFactory() { RedisConnectionFactory factory = mock(RedisConnectionFactory.class); RedisConnection connection = mock(RedisConnection.class); + RedisServerCommands commands = mock(RedisServerCommands.class); given(factory.getConnection()).willReturn(connection); - given(connection.getConfig(anyString())).willReturn(new Properties()); + given(connection.serverCommands()).willReturn(commands); + given(commands.getConfig(anyString())).willReturn(new Properties()); willAnswer((it) -> { SubscriptionListener listener = it.getArgument(0); diff --git a/spring-session-data-redis/src/test/java/org/springframework/session/data/redis/config/annotation/web/http/RedisHttpSessionConfigurationXmlTests.java b/spring-session-data-redis/src/test/java/org/springframework/session/data/redis/config/annotation/web/http/RedisHttpSessionConfigurationXmlTests.java index 5a61f29b..9454b5ec 100644 --- a/spring-session-data-redis/src/test/java/org/springframework/session/data/redis/config/annotation/web/http/RedisHttpSessionConfigurationXmlTests.java +++ b/spring-session-data-redis/src/test/java/org/springframework/session/data/redis/config/annotation/web/http/RedisHttpSessionConfigurationXmlTests.java @@ -23,6 +23,7 @@ import org.junit.jupiter.api.extension.ExtendWith; import org.springframework.data.redis.connection.RedisConnection; import org.springframework.data.redis.connection.RedisConnectionFactory; +import org.springframework.data.redis.connection.RedisServerCommands; import org.springframework.data.redis.connection.SubscriptionListener; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit.jupiter.SpringExtension; @@ -46,8 +47,10 @@ public class RedisHttpSessionConfigurationXmlTests { static RedisConnectionFactory connectionFactory() { RedisConnectionFactory factory = mock(RedisConnectionFactory.class); RedisConnection connection = mock(RedisConnection.class); + RedisServerCommands commands = mock(RedisServerCommands.class); given(factory.getConnection()).willReturn(connection); - given(connection.getConfig(anyString())).willReturn(new Properties()); + given(connection.serverCommands()).willReturn(commands); + given(commands.getConfig(anyString())).willReturn(new Properties()); willAnswer((it) -> { SubscriptionListener listener = it.getArgument(0); diff --git a/spring-session-data-redis/src/test/java/org/springframework/session/data/redis/config/annotation/web/http/RedisIndexedHttpSessionConfigurationMockTests.java b/spring-session-data-redis/src/test/java/org/springframework/session/data/redis/config/annotation/web/http/RedisIndexedHttpSessionConfigurationMockTests.java index c3cc366d..7e2ca4df 100644 --- a/spring-session-data-redis/src/test/java/org/springframework/session/data/redis/config/annotation/web/http/RedisIndexedHttpSessionConfigurationMockTests.java +++ b/spring-session-data-redis/src/test/java/org/springframework/session/data/redis/config/annotation/web/http/RedisIndexedHttpSessionConfigurationMockTests.java @@ -18,8 +18,9 @@ package org.springframework.session.data.redis.config.annotation.web.http; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.Mock; -import org.mockito.MockitoAnnotations; +import org.mockito.junit.jupiter.MockitoExtension; import org.springframework.data.redis.connection.RedisConnection; import org.springframework.data.redis.connection.RedisConnectionFactory; @@ -33,9 +34,10 @@ import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verifyNoMoreInteractions; +@ExtendWith(MockitoExtension.class) class RedisIndexedHttpSessionConfigurationMockTests { - @Mock + @Mock(lenient = true) RedisConnectionFactory factory; @Mock @@ -43,7 +45,6 @@ class RedisIndexedHttpSessionConfigurationMockTests { @BeforeEach void setup() { - MockitoAnnotations.initMocks(this); given(this.factory.getConnection()).willReturn(this.connection); } diff --git a/spring-session-data-redis/src/test/java/org/springframework/session/data/redis/config/annotation/web/http/RedisIndexedHttpSessionConfigurationOverrideSessionTaskExecutor.java b/spring-session-data-redis/src/test/java/org/springframework/session/data/redis/config/annotation/web/http/RedisIndexedHttpSessionConfigurationOverrideSessionTaskExecutor.java index 2a184218..1c346bd6 100644 --- a/spring-session-data-redis/src/test/java/org/springframework/session/data/redis/config/annotation/web/http/RedisIndexedHttpSessionConfigurationOverrideSessionTaskExecutor.java +++ b/spring-session-data-redis/src/test/java/org/springframework/session/data/redis/config/annotation/web/http/RedisIndexedHttpSessionConfigurationOverrideSessionTaskExecutor.java @@ -27,6 +27,7 @@ import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.redis.connection.RedisConnection; import org.springframework.data.redis.connection.RedisConnectionFactory; +import org.springframework.data.redis.connection.RedisServerCommands; import org.springframework.data.redis.connection.SubscriptionListener; import org.springframework.data.redis.listener.RedisMessageListenerContainer; import org.springframework.test.context.ContextConfiguration; @@ -80,8 +81,10 @@ class RedisIndexedHttpSessionConfigurationOverrideSessionTaskExecutor { RedisConnectionFactory connectionFactory() { RedisConnectionFactory factory = mock(RedisConnectionFactory.class); RedisConnection connection = mock(RedisConnection.class); + RedisServerCommands commands = mock(RedisServerCommands.class); given(factory.getConnection()).willReturn(connection); - given(connection.getConfig(anyString())).willReturn(new Properties()); + given(connection.serverCommands()).willReturn(commands); + given(commands.getConfig(anyString())).willReturn(new Properties()); willAnswer((it) -> { SubscriptionListener listener = it.getArgument(0); diff --git a/spring-session-data-redis/src/test/java/org/springframework/session/data/redis/config/annotation/web/http/RedisIndexedHttpSessionConfigurationOverrideSessionTaskExecutors.java b/spring-session-data-redis/src/test/java/org/springframework/session/data/redis/config/annotation/web/http/RedisIndexedHttpSessionConfigurationOverrideSessionTaskExecutors.java index 8f2f293b..50afca01 100644 --- a/spring-session-data-redis/src/test/java/org/springframework/session/data/redis/config/annotation/web/http/RedisIndexedHttpSessionConfigurationOverrideSessionTaskExecutors.java +++ b/spring-session-data-redis/src/test/java/org/springframework/session/data/redis/config/annotation/web/http/RedisIndexedHttpSessionConfigurationOverrideSessionTaskExecutors.java @@ -27,6 +27,7 @@ import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.redis.connection.RedisConnection; import org.springframework.data.redis.connection.RedisConnectionFactory; +import org.springframework.data.redis.connection.RedisServerCommands; import org.springframework.data.redis.connection.SubscriptionListener; import org.springframework.data.redis.listener.RedisMessageListenerContainer; import org.springframework.test.context.ContextConfiguration; @@ -97,8 +98,10 @@ class RedisIndexedHttpSessionConfigurationOverrideSessionTaskExecutors { RedisConnectionFactory connectionFactory() { RedisConnectionFactory factory = mock(RedisConnectionFactory.class); RedisConnection connection = mock(RedisConnection.class); + RedisServerCommands commands = mock(RedisServerCommands.class); given(factory.getConnection()).willReturn(connection); - given(connection.getConfig(anyString())).willReturn(new Properties()); + given(connection.serverCommands()).willReturn(commands); + given(commands.getConfig(anyString())).willReturn(new Properties()); willAnswer((it) -> { SubscriptionListener listener = it.getArgument(0); diff --git a/spring-session-data-redis/src/test/java/org/springframework/session/data/redis/config/annotation/web/http/RedisIndexedHttpSessionConfigurationTests.java b/spring-session-data-redis/src/test/java/org/springframework/session/data/redis/config/annotation/web/http/RedisIndexedHttpSessionConfigurationTests.java index 2292313e..7c9833c1 100644 --- a/spring-session-data-redis/src/test/java/org/springframework/session/data/redis/config/annotation/web/http/RedisIndexedHttpSessionConfigurationTests.java +++ b/spring-session-data-redis/src/test/java/org/springframework/session/data/redis/config/annotation/web/http/RedisIndexedHttpSessionConfigurationTests.java @@ -33,6 +33,7 @@ import org.springframework.context.support.PropertySourcesPlaceholderConfigurer; import org.springframework.core.annotation.Order; import org.springframework.data.redis.connection.RedisConnection; import org.springframework.data.redis.connection.RedisConnectionFactory; +import org.springframework.data.redis.connection.RedisServerCommands; import org.springframework.data.redis.connection.SubscriptionListener; import org.springframework.data.redis.core.RedisOperations; import org.springframework.data.redis.listener.RedisMessageListenerContainer; @@ -243,11 +244,13 @@ class RedisIndexedHttpSessionConfigurationTests { private static RedisConnectionFactory mockRedisConnectionFactory() { RedisConnectionFactory connectionFactoryMock = mock(RedisConnectionFactory.class); RedisConnection connectionMock = mock(RedisConnection.class); + RedisServerCommands commandsMock = mock(RedisServerCommands.class); given(connectionFactoryMock.getConnection()).willReturn(connectionMock); + given(connectionMock.serverCommands()).willReturn(commandsMock); Properties keyspaceEventsConfig = new Properties(); keyspaceEventsConfig.put("notify-keyspace-events", "KEA"); - given(connectionMock.getConfig("notify-keyspace-events")).willReturn(keyspaceEventsConfig); + given(commandsMock.getConfig("notify-keyspace-events")).willReturn(keyspaceEventsConfig); willAnswer((it) -> { SubscriptionListener listener = it.getArgument(0); diff --git a/spring-session-data-redis/src/test/java/org/springframework/session/data/redis/config/annotation/web/http/gh109/Gh109Tests.java b/spring-session-data-redis/src/test/java/org/springframework/session/data/redis/config/annotation/web/http/gh109/Gh109Tests.java index 0db6c898..26797615 100644 --- a/spring-session-data-redis/src/test/java/org/springframework/session/data/redis/config/annotation/web/http/gh109/Gh109Tests.java +++ b/spring-session-data-redis/src/test/java/org/springframework/session/data/redis/config/annotation/web/http/gh109/Gh109Tests.java @@ -26,6 +26,7 @@ import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.redis.connection.RedisConnection; import org.springframework.data.redis.connection.RedisConnectionFactory; +import org.springframework.data.redis.connection.RedisServerCommands; import org.springframework.data.redis.connection.SubscriptionListener; import org.springframework.data.redis.core.RedisOperations; import org.springframework.session.data.redis.RedisIndexedSessionRepository; @@ -76,8 +77,10 @@ class Gh109Tests { RedisConnectionFactory redisConnectionFactory() { RedisConnectionFactory factory = mock(RedisConnectionFactory.class); RedisConnection connection = mock(RedisConnection.class); + RedisServerCommands commands = mock(RedisServerCommands.class); given(factory.getConnection()).willReturn(connection); - given(connection.getConfig(anyString())).willReturn(new Properties()); + given(connection.serverCommands()).willReturn(commands); + given(commands.getConfig(anyString())).willReturn(new Properties()); willAnswer((it) -> { SubscriptionListener listener = it.getArgument(0); listener.onPatternSubscribed(it.getArgument(1), 0); diff --git a/spring-session-docs/modules/ROOT/examples/java/docs/FindByIndexNameSessionRepositoryTests.java b/spring-session-docs/modules/ROOT/examples/java/docs/FindByIndexNameSessionRepositoryTests.java index 9514987d..ab802e86 100644 --- a/spring-session-docs/modules/ROOT/examples/java/docs/FindByIndexNameSessionRepositoryTests.java +++ b/spring-session-docs/modules/ROOT/examples/java/docs/FindByIndexNameSessionRepositoryTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2014-2019 the original author or authors. + * Copyright 2014-2022 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -18,10 +18,10 @@ package docs; import java.util.Map; -import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.Mock; -import org.mockito.MockitoAnnotations; +import org.mockito.junit.jupiter.MockitoExtension; import org.springframework.session.FindByIndexNameSessionRepository; import org.springframework.session.Session; @@ -30,6 +30,7 @@ import org.springframework.session.Session; * @author Rob Winch * */ +@ExtendWith(MockitoExtension.class) class FindByIndexNameSessionRepositoryTests { @Mock @@ -38,11 +39,6 @@ class FindByIndexNameSessionRepositoryTests { @Mock Session session; - @BeforeEach - void setUp() { - MockitoAnnotations.initMocks(this); - } - @Test void setUsername() { // tag::set-username[] @@ -52,7 +48,6 @@ class FindByIndexNameSessionRepositoryTests { } @Test - @SuppressWarnings("unused") void findByUsername() { // tag::findby-username[] String username = "username"; diff --git a/spring-session-docs/modules/ROOT/examples/java/docs/http/AbstractHttpSessionListenerTests.java b/spring-session-docs/modules/ROOT/examples/java/docs/http/AbstractHttpSessionListenerTests.java index 2ae6519d..67e104c5 100644 --- a/spring-session-docs/modules/ROOT/examples/java/docs/http/AbstractHttpSessionListenerTests.java +++ b/spring-session-docs/modules/ROOT/examples/java/docs/http/AbstractHttpSessionListenerTests.java @@ -26,6 +26,7 @@ import org.springframework.context.ApplicationEventPublisher; import org.springframework.context.ApplicationListener; import org.springframework.data.redis.connection.RedisConnection; import org.springframework.data.redis.connection.RedisConnectionFactory; +import org.springframework.data.redis.connection.RedisServerCommands; import org.springframework.data.redis.connection.SubscriptionListener; import org.springframework.security.core.session.SessionDestroyedEvent; import org.springframework.session.MapSession; @@ -67,9 +68,11 @@ public abstract class AbstractHttpSessionListenerTests { static RedisConnectionFactory createMockRedisConnection() { RedisConnectionFactory factory = mock(RedisConnectionFactory.class); RedisConnection connection = mock(RedisConnection.class); + RedisServerCommands commands = mock(RedisServerCommands.class); given(factory.getConnection()).willReturn(connection); - given(connection.getConfig(anyString())).willReturn(new Properties()); + given(connection.serverCommands()).willReturn(commands); + given(commands.getConfig(anyString())).willReturn(new Properties()); willAnswer((it) -> { SubscriptionListener listener = it.getArgument(0); diff --git a/spring-session-docs/modules/ROOT/examples/java/docs/security/RememberMeSecurityConfiguration.java b/spring-session-docs/modules/ROOT/examples/java/docs/security/RememberMeSecurityConfiguration.java index d0feff64..bcbd5e70 100644 --- a/spring-session-docs/modules/ROOT/examples/java/docs/security/RememberMeSecurityConfiguration.java +++ b/spring-session-docs/modules/ROOT/examples/java/docs/security/RememberMeSecurityConfiguration.java @@ -23,9 +23,9 @@ import org.springframework.context.annotation.Configuration; import org.springframework.security.config.Customizer; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; -import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; import org.springframework.security.core.userdetails.User; import org.springframework.security.provisioning.InMemoryUserDetailsManager; +import org.springframework.security.web.SecurityFilterChain; import org.springframework.session.MapSessionRepository; import org.springframework.session.config.annotation.web.http.EnableSpringHttpSession; import org.springframework.session.security.web.authentication.SpringSessionRememberMeServices; @@ -36,12 +36,12 @@ import org.springframework.session.security.web.authentication.SpringSessionReme @Configuration(proxyBeanMethods = false) @EnableWebSecurity @EnableSpringHttpSession -public class RememberMeSecurityConfiguration extends WebSecurityConfigurerAdapter { +public class RememberMeSecurityConfiguration { // @formatter:off // tag::http-rememberme[] - @Override - protected void configure(HttpSecurity http) throws Exception { + @Bean + SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { http // ... additional configuration ... .rememberMe((rememberMe) -> rememberMe @@ -49,11 +49,11 @@ public class RememberMeSecurityConfiguration extends WebSecurityConfigurerAdapte ); // end::http-rememberme[] - http + return http .formLogin(Customizer.withDefaults()) .authorizeRequests((authorize) -> authorize .anyRequest().authenticated() - ); + ).build(); } // tag::rememberme-bean[] @@ -68,7 +68,6 @@ public class RememberMeSecurityConfiguration extends WebSecurityConfigurerAdapte // end::rememberme-bean[] // @formatter:on - @Override @Bean public InMemoryUserDetailsManager userDetailsService() { return new InMemoryUserDetailsManager( diff --git a/spring-session-docs/modules/ROOT/examples/java/docs/security/SecurityConfiguration.java b/spring-session-docs/modules/ROOT/examples/java/docs/security/SecurityConfiguration.java index a5498bd0..5379a6b4 100644 --- a/spring-session-docs/modules/ROOT/examples/java/docs/security/SecurityConfiguration.java +++ b/spring-session-docs/modules/ROOT/examples/java/docs/security/SecurityConfiguration.java @@ -1,5 +1,5 @@ /* - * Copyright 2014-2019 the original author or authors. + * Copyright 2014-2022 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -20,7 +20,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.security.config.annotation.web.builders.HttpSecurity; -import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; +import org.springframework.security.web.SecurityFilterChain; import org.springframework.session.FindByIndexNameSessionRepository; import org.springframework.session.Session; import org.springframework.session.security.SpringSessionBackedSessionRegistry; @@ -30,20 +30,21 @@ import org.springframework.session.security.SpringSessionBackedSessionRegistry; */ // tag::class[] @Configuration -public class SecurityConfiguration extends WebSecurityConfigurerAdapter { +public class SecurityConfiguration { @Autowired private FindByIndexNameSessionRepository sessionRepository; - @Override - protected void configure(HttpSecurity http) throws Exception { + @Bean + SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { // @formatter:off - http + return http // other config goes here... .sessionManagement((sessionManagement) -> sessionManagement .maximumSessions(2) .sessionRegistry(sessionRegistry()) - ); + ) + .build(); // @formatter:on } diff --git a/spring-session-docs/spring-session-docs.gradle b/spring-session-docs/spring-session-docs.gradle index 919169da..96783338 100644 --- a/spring-session-docs/spring-session-docs.gradle +++ b/spring-session-docs/spring-session-docs.gradle @@ -18,6 +18,7 @@ dependencies { testImplementation 'org.springframework.security:spring-security-web' testImplementation 'org.springframework.security:spring-security-test' testImplementation 'org.mockito:mockito-core' + testImplementation 'org.mockito:mockito-junit-jupiter' testImplementation 'org.springframework:spring-test' testImplementation 'org.assertj:assertj-core' testImplementation 'com.hazelcast:hazelcast' diff --git a/spring-session-hazelcast/spring-session-hazelcast.gradle b/spring-session-hazelcast/spring-session-hazelcast.gradle index 787465ac..0c3f4df8 100644 --- a/spring-session-hazelcast/spring-session-hazelcast.gradle +++ b/spring-session-hazelcast/spring-session-hazelcast.gradle @@ -9,6 +9,7 @@ dependencies { testImplementation "jakarta.servlet:jakarta.servlet-api" testImplementation "org.assertj:assertj-core" testImplementation "org.mockito:mockito-core" + testImplementation "org.mockito:mockito-junit-jupiter" testImplementation "org.springframework:spring-test" testImplementation "org.springframework:spring-web" testImplementation "org.springframework.security:spring-security-core" diff --git a/spring-session-hazelcast/src/integration-test/java/org/springframework/session/hazelcast/ClientServerHazelcastIndexedSessionRepositoryITests.java b/spring-session-hazelcast/src/integration-test/java/org/springframework/session/hazelcast/ClientServerHazelcastIndexedSessionRepositoryITests.java index f5949f4c..6ae2c898 100644 --- a/spring-session-hazelcast/src/integration-test/java/org/springframework/session/hazelcast/ClientServerHazelcastIndexedSessionRepositoryITests.java +++ b/spring-session-hazelcast/src/integration-test/java/org/springframework/session/hazelcast/ClientServerHazelcastIndexedSessionRepositoryITests.java @@ -70,8 +70,7 @@ class ClientServerHazelcastIndexedSessionRepositoryITests extends AbstractHazelc @Bean HazelcastInstance hazelcastInstance() { ClientConfig clientConfig = new ClientConfig(); - clientConfig.getNetworkConfig() - .addAddress(container.getContainerIpAddress() + ":" + container.getFirstMappedPort()); + clientConfig.getNetworkConfig().addAddress(container.getHost() + ":" + container.getFirstMappedPort()); clientConfig.getUserCodeDeploymentConfig().setEnabled(true).addClass(Session.class) .addClass(MapSession.class).addClass(SessionUpdateEntryProcessor.class); return HazelcastClient.newHazelcastClient(clientConfig); diff --git a/spring-session-hazelcast/src/main/java/org/springframework/session/hazelcast/HazelcastSessionSerializer.java b/spring-session-hazelcast/src/main/java/org/springframework/session/hazelcast/HazelcastSessionSerializer.java index 238d3dbb..e5fe5a89 100644 --- a/spring-session-hazelcast/src/main/java/org/springframework/session/hazelcast/HazelcastSessionSerializer.java +++ b/spring-session-hazelcast/src/main/java/org/springframework/session/hazelcast/HazelcastSessionSerializer.java @@ -1,5 +1,5 @@ /* - * Copyright 2014-2020 the original author or authors. + * Copyright 2014-2022 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -87,15 +87,15 @@ public class HazelcastSessionSerializer implements StreamSerializer @Override public void write(ObjectDataOutput out, MapSession session) throws IOException { - out.writeUTF(session.getOriginalId()); - out.writeUTF(session.getId()); + out.writeString(session.getOriginalId()); + out.writeString(session.getId()); writeInstant(out, session.getCreationTime()); writeInstant(out, session.getLastAccessedTime()); writeDuration(out, session.getMaxInactiveInterval()); for (String attrName : session.getAttributeNames()) { Object attrValue = session.getAttribute(attrName); if (attrValue != null) { - out.writeUTF(attrName); + out.writeString(attrName); out.writeObject(attrValue); } } @@ -113,9 +113,9 @@ public class HazelcastSessionSerializer implements StreamSerializer @Override public MapSession read(ObjectDataInput in) throws IOException { - String originalId = in.readUTF(); + String originalId = in.readString(); MapSession cached = new MapSession(originalId); - cached.setId(in.readUTF()); + cached.setId(in.readString()); cached.setCreationTime(readInstant(in)); cached.setLastAccessedTime(readInstant(in)); cached.setMaxInactiveInterval(readDuration(in)); @@ -125,7 +125,7 @@ public class HazelcastSessionSerializer implements StreamSerializer // number of non-null attributes without an extra // iteration. Hence the attributes are read until // EOF here. - String attrName = in.readUTF(); + String attrName = in.readString(); Object attrValue = in.readObject(); cached.setAttribute(attrName, attrValue); } diff --git a/spring-session-jdbc/spring-session-jdbc.gradle b/spring-session-jdbc/spring-session-jdbc.gradle index 3d255b67..0bed575b 100644 --- a/spring-session-jdbc/spring-session-jdbc.gradle +++ b/spring-session-jdbc/spring-session-jdbc.gradle @@ -10,6 +10,7 @@ dependencies { testImplementation "jakarta.servlet:jakarta.servlet-api" testImplementation "org.assertj:assertj-core" testImplementation "org.mockito:mockito-core" + testImplementation "org.mockito:mockito-junit-jupiter" testImplementation "org.springframework:spring-test" testImplementation "org.springframework:spring-web" testImplementation "org.springframework.security:spring-security-core" diff --git a/spring-session-jdbc/src/main/java/org/springframework/session/jdbc/config/annotation/web/http/JdbcHttpSessionConfiguration.java b/spring-session-jdbc/src/main/java/org/springframework/session/jdbc/config/annotation/web/http/JdbcHttpSessionConfiguration.java index 35ab729e..bbc7eee2 100644 --- a/spring-session-jdbc/src/main/java/org/springframework/session/jdbc/config/annotation/web/http/JdbcHttpSessionConfiguration.java +++ b/spring-session-jdbc/src/main/java/org/springframework/session/jdbc/config/annotation/web/http/JdbcHttpSessionConfiguration.java @@ -16,6 +16,7 @@ package org.springframework.session.jdbc.config.annotation.web.http; +import java.sql.DatabaseMetaData; import java.util.List; import java.util.Map; import java.util.stream.Collectors; @@ -152,7 +153,8 @@ public class JdbcHttpSessionConfiguration extends SpringHttpSessionConfiguration private static boolean requiresTemporaryLob(DataSource dataSource) { try { - String productName = JdbcUtils.extractDatabaseMetaData(dataSource, "getDatabaseProductName"); + String productName = JdbcUtils.extractDatabaseMetaData(dataSource, + DatabaseMetaData::getDatabaseProductName); return "Oracle".equalsIgnoreCase(JdbcUtils.commonDatabaseName(productName)); } catch (MetaDataAccessException ex) { diff --git a/spring-session-jdbc/src/test/java/org/springframework/session/jdbc/JdbcIndexedSessionRepositoryTests.java b/spring-session-jdbc/src/test/java/org/springframework/session/jdbc/JdbcIndexedSessionRepositoryTests.java index cac6d13d..859bcb8f 100644 --- a/spring-session-jdbc/src/test/java/org/springframework/session/jdbc/JdbcIndexedSessionRepositoryTests.java +++ b/spring-session-jdbc/src/test/java/org/springframework/session/jdbc/JdbcIndexedSessionRepositoryTests.java @@ -27,9 +27,10 @@ import java.util.function.Supplier; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.ArgumentCaptor; import org.mockito.Mock; -import org.mockito.MockitoAnnotations; +import org.mockito.junit.jupiter.MockitoExtension; import org.springframework.jdbc.core.BatchPreparedStatementSetter; import org.springframework.jdbc.core.JdbcOperations; @@ -68,6 +69,7 @@ import static org.mockito.Mockito.verifyNoMoreInteractions; * @author Vedran Pavic * @author Craig Andrews */ +@ExtendWith(MockitoExtension.class) class JdbcIndexedSessionRepositoryTests { private static final String SPRING_SECURITY_CONTEXT = "SPRING_SECURITY_CONTEXT"; @@ -79,7 +81,6 @@ class JdbcIndexedSessionRepositoryTests { @BeforeEach void setUp() { - MockitoAnnotations.initMocks(this); this.repository = new JdbcIndexedSessionRepository(this.jdbcOperations, TransactionOperations.withoutTransaction()); } diff --git a/spring-session-samples/spring-session-sample-boot-findbyusername/src/integration-test/java/sample/FindByUsernameTests.java b/spring-session-samples/spring-session-sample-boot-findbyusername/src/integration-test/java/sample/FindByUsernameTests.java index 21539566..c4e15753 100644 --- a/spring-session-samples/spring-session-sample-boot-findbyusername/src/integration-test/java/sample/FindByUsernameTests.java +++ b/spring-session-samples/spring-session-sample-boot-findbyusername/src/integration-test/java/sample/FindByUsernameTests.java @@ -115,8 +115,7 @@ class FindByUsernameTests { @Bean LettuceConnectionFactory redisConnectionFactory() { - return new LettuceConnectionFactory(redisContainer().getContainerIpAddress(), - redisContainer().getFirstMappedPort()); + return new LettuceConnectionFactory(redisContainer().getHost(), redisContainer().getFirstMappedPort()); } } diff --git a/spring-session-samples/spring-session-sample-boot-findbyusername/src/main/java/sample/config/SecurityConfig.java b/spring-session-samples/spring-session-sample-boot-findbyusername/src/main/java/sample/config/SecurityConfig.java index 45c5b995..af89a682 100644 --- a/spring-session-samples/spring-session-sample-boot-findbyusername/src/main/java/sample/config/SecurityConfig.java +++ b/spring-session-samples/spring-session-sample-boot-findbyusername/src/main/java/sample/config/SecurityConfig.java @@ -1,5 +1,5 @@ /* - * Copyright 2014-2018 the original author or authors. + * Copyright 2014-2022 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -17,9 +17,10 @@ package sample.config; import org.springframework.boot.autoconfigure.security.servlet.PathRequest; +import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.security.config.annotation.web.builders.HttpSecurity; -import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; +import org.springframework.security.web.SecurityFilterChain; /** * Spring Security configuration. @@ -28,13 +29,13 @@ import org.springframework.security.config.annotation.web.configuration.WebSecur * @author Vedran Pavic */ @Configuration -public class SecurityConfig extends WebSecurityConfigurerAdapter { +public class SecurityConfig { // @formatter:off // tag::config[] - @Override - protected void configure(HttpSecurity http) throws Exception { - http + @Bean + SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { + return http .authorizeRequests((authorize) -> authorize .requestMatchers(PathRequest.toStaticResources().atCommonLocations()).permitAll() .anyRequest().authenticated() @@ -42,7 +43,8 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter { .formLogin((formLogin) -> formLogin .loginPage("/login") .permitAll() - ); + ) + .build(); } // end::config[] // @formatter:on diff --git a/spring-session-samples/spring-session-sample-boot-hazelcast/src/main/java/sample/config/SecurityConfig.java b/spring-session-samples/spring-session-sample-boot-hazelcast/src/main/java/sample/config/SecurityConfig.java index 8750a10c..9bf849be 100644 --- a/spring-session-samples/spring-session-sample-boot-hazelcast/src/main/java/sample/config/SecurityConfig.java +++ b/spring-session-samples/spring-session-sample-boot-hazelcast/src/main/java/sample/config/SecurityConfig.java @@ -1,5 +1,5 @@ /* - * Copyright 2014-2020 the original author or authors. + * Copyright 2014-2022 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -17,9 +17,10 @@ package sample.config; import org.springframework.boot.autoconfigure.security.servlet.PathRequest; +import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.security.config.annotation.web.builders.HttpSecurity; -import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; +import org.springframework.security.web.SecurityFilterChain; /** * Spring Security configuration. @@ -27,20 +28,21 @@ import org.springframework.security.config.annotation.web.configuration.WebSecur * @author Ellie Bahadori */ @Configuration -public class SecurityConfig extends WebSecurityConfigurerAdapter { +public class SecurityConfig { // @formatter:off // tag::config[] - @Override - protected void configure(HttpSecurity http) throws Exception { - http + @Bean + SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { + return http .authorizeRequests((authorize) -> authorize .requestMatchers(PathRequest.toStaticResources().atCommonLocations()).permitAll() .anyRequest().authenticated() ) .formLogin((formLogin) -> formLogin .permitAll() - ); + ) + .build(); } // end::config[] // @formatter:on diff --git a/spring-session-samples/spring-session-sample-boot-jdbc/src/main/java/sample/config/SecurityConfig.java b/spring-session-samples/spring-session-sample-boot-jdbc/src/main/java/sample/config/SecurityConfig.java index 308377e8..f07c5953 100644 --- a/spring-session-samples/spring-session-sample-boot-jdbc/src/main/java/sample/config/SecurityConfig.java +++ b/spring-session-samples/spring-session-sample-boot-jdbc/src/main/java/sample/config/SecurityConfig.java @@ -1,5 +1,5 @@ /* - * Copyright 2014-2018 the original author or authors. + * Copyright 2014-2022 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -17,10 +17,11 @@ package sample.config; import org.springframework.boot.autoconfigure.security.servlet.PathRequest; +import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.security.config.annotation.web.builders.HttpSecurity; -import org.springframework.security.config.annotation.web.builders.WebSecurity; -import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; +import org.springframework.security.config.annotation.web.configuration.WebSecurityCustomizer; +import org.springframework.security.web.SecurityFilterChain; /** * Spring Security configuration. @@ -29,28 +30,29 @@ import org.springframework.security.config.annotation.web.configuration.WebSecur * @author Vedran Pavic */ @Configuration -public class SecurityConfig extends WebSecurityConfigurerAdapter { +public class SecurityConfig { // @formatter:off - @Override - public void configure(WebSecurity web) { - web + @Bean + WebSecurityCustomizer ignoringCustomizer() { + return (web) -> web .ignoring().requestMatchers(PathRequest.toH2Console()); } // @formatter:on // @formatter:off // tag::config[] - @Override - protected void configure(HttpSecurity http) throws Exception { - http + @Bean + SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { + return http .authorizeRequests((authorize) -> authorize .requestMatchers(PathRequest.toStaticResources().atCommonLocations()).permitAll() .anyRequest().authenticated() ) .formLogin((formLogin) -> formLogin .permitAll() - ); + ) + .build(); } // end::config[] // @formatter:on diff --git a/spring-session-samples/spring-session-sample-boot-mongodb-traditional/src/main/java/org/springframework/session/mongodb/examples/config/SecurityConfig.java b/spring-session-samples/spring-session-sample-boot-mongodb-traditional/src/main/java/org/springframework/session/mongodb/examples/config/SecurityConfig.java index 02767ed6..af02daaf 100644 --- a/spring-session-samples/spring-session-sample-boot-mongodb-traditional/src/main/java/org/springframework/session/mongodb/examples/config/SecurityConfig.java +++ b/spring-session-samples/spring-session-sample-boot-mongodb-traditional/src/main/java/org/springframework/session/mongodb/examples/config/SecurityConfig.java @@ -1,5 +1,5 @@ /* - * Copyright 2014-2016 the original author or authors. + * Copyright 2014-2022 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -19,20 +19,19 @@ package org.springframework.session.mongodb.examples.config; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; -import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; import org.springframework.security.core.userdetails.User; /** * @author Rob Winch */ @EnableWebSecurity -public class SecurityConfig extends WebSecurityConfigurerAdapter { +public class SecurityConfig { @Autowired public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception { - auth.inMemoryAuthentication().withUser( - User.withDefaultPasswordEncoder().username("user").password("password").roles("USER").build()); + auth.inMemoryAuthentication() + .withUser(User.withUsername("user").password("{noop}password").roles("USER").build()); } } diff --git a/spring-session-samples/spring-session-sample-boot-redis-json/src/integration-test/java/sample/HttpRedisJsonTest.java b/spring-session-samples/spring-session-sample-boot-redis-json/src/integration-test/java/sample/HttpRedisJsonTest.java index 3668eb18..7b3d5b23 100644 --- a/spring-session-samples/spring-session-sample-boot-redis-json/src/integration-test/java/sample/HttpRedisJsonTest.java +++ b/spring-session-samples/spring-session-sample-boot-redis-json/src/integration-test/java/sample/HttpRedisJsonTest.java @@ -115,8 +115,7 @@ class HttpRedisJsonTest { @Bean LettuceConnectionFactory redisConnectionFactory() { - return new LettuceConnectionFactory(redisContainer().getContainerIpAddress(), - redisContainer().getFirstMappedPort()); + return new LettuceConnectionFactory(redisContainer().getHost(), redisContainer().getFirstMappedPort()); } } diff --git a/spring-session-samples/spring-session-sample-boot-redis-json/src/integration-test/java/sample/RedisSerializerTest.java b/spring-session-samples/spring-session-sample-boot-redis-json/src/integration-test/java/sample/RedisSerializerTest.java index d38ac8a5..b43d007e 100644 --- a/spring-session-samples/spring-session-sample-boot-redis-json/src/integration-test/java/sample/RedisSerializerTest.java +++ b/spring-session-samples/spring-session-sample-boot-redis-json/src/integration-test/java/sample/RedisSerializerTest.java @@ -64,8 +64,7 @@ class RedisSerializerTest { @Bean LettuceConnectionFactory redisConnectionFactory() { - return new LettuceConnectionFactory(redisContainer().getContainerIpAddress(), - redisContainer().getFirstMappedPort()); + return new LettuceConnectionFactory(redisContainer().getHost(), redisContainer().getFirstMappedPort()); } } diff --git a/spring-session-samples/spring-session-sample-boot-redis-json/src/main/java/sample/config/SecurityConfig.java b/spring-session-samples/spring-session-sample-boot-redis-json/src/main/java/sample/config/SecurityConfig.java index 3f970e3b..f2e65dc6 100644 --- a/spring-session-samples/spring-session-sample-boot-redis-json/src/main/java/sample/config/SecurityConfig.java +++ b/spring-session-samples/spring-session-sample-boot-redis-json/src/main/java/sample/config/SecurityConfig.java @@ -1,5 +1,5 @@ /* - * Copyright 2014-2018 the original author or authors. + * Copyright 2014-2022 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -17,9 +17,10 @@ package sample.config; import org.springframework.boot.autoconfigure.security.servlet.PathRequest; +import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.security.config.annotation.web.builders.HttpSecurity; -import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; +import org.springframework.security.web.SecurityFilterChain; /** * Spring Security configuration. @@ -28,12 +29,12 @@ import org.springframework.security.config.annotation.web.configuration.WebSecur * @author Vedran Pavic */ @Configuration -public class SecurityConfig extends WebSecurityConfigurerAdapter { +public class SecurityConfig { // @formatter:off - @Override - protected void configure(HttpSecurity http) throws Exception { - http + @Bean + SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { + return http .authorizeRequests((authorize) -> authorize .requestMatchers(PathRequest.toStaticResources().atCommonLocations()).permitAll() .anyRequest().authenticated() @@ -41,7 +42,8 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter { .formLogin((formLogin) -> formLogin .loginPage("/login") .permitAll() - ); + ) + .build(); } // @formatter:on diff --git a/spring-session-samples/spring-session-sample-boot-redis-simple/src/integration-test/java/sample/BootTests.java b/spring-session-samples/spring-session-sample-boot-redis-simple/src/integration-test/java/sample/BootTests.java index cfaa2cb4..d7ed614a 100644 --- a/spring-session-samples/spring-session-sample-boot-redis-simple/src/integration-test/java/sample/BootTests.java +++ b/spring-session-samples/spring-session-sample-boot-redis-simple/src/integration-test/java/sample/BootTests.java @@ -93,8 +93,7 @@ class BootTests { @Bean LettuceConnectionFactory redisConnectionFactory() { - return new LettuceConnectionFactory(redisContainer().getContainerIpAddress(), - redisContainer().getFirstMappedPort()); + return new LettuceConnectionFactory(redisContainer().getHost(), redisContainer().getFirstMappedPort()); } } diff --git a/spring-session-samples/spring-session-sample-boot-redis-simple/src/main/java/sample/config/SecurityConfig.java b/spring-session-samples/spring-session-sample-boot-redis-simple/src/main/java/sample/config/SecurityConfig.java index be8cd8e0..66e93ea8 100644 --- a/spring-session-samples/spring-session-sample-boot-redis-simple/src/main/java/sample/config/SecurityConfig.java +++ b/spring-session-samples/spring-session-sample-boot-redis-simple/src/main/java/sample/config/SecurityConfig.java @@ -1,5 +1,5 @@ /* - * Copyright 2014-2019 the original author or authors. + * Copyright 2014-2022 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -17,24 +17,26 @@ package sample.config; import org.springframework.boot.autoconfigure.security.servlet.PathRequest; +import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.security.config.annotation.web.builders.HttpSecurity; -import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; +import org.springframework.security.web.SecurityFilterChain; @Configuration -public class SecurityConfig extends WebSecurityConfigurerAdapter { +public class SecurityConfig { // @formatter:off - @Override - protected void configure(HttpSecurity http) throws Exception { - http + @Bean + SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { + return http .authorizeRequests((authorize) -> authorize .requestMatchers(PathRequest.toStaticResources().atCommonLocations()).permitAll() .anyRequest().authenticated() ) .formLogin((formLogin) -> formLogin .permitAll() - ); + ) + .build(); } // @formatter:on diff --git a/spring-session-samples/spring-session-sample-boot-redis/src/integration-test/java/sample/BootTests.java b/spring-session-samples/spring-session-sample-boot-redis/src/integration-test/java/sample/BootTests.java index cb97d96b..1cda5aaf 100644 --- a/spring-session-samples/spring-session-sample-boot-redis/src/integration-test/java/sample/BootTests.java +++ b/spring-session-samples/spring-session-sample-boot-redis/src/integration-test/java/sample/BootTests.java @@ -97,8 +97,7 @@ class BootTests { @Bean LettuceConnectionFactory redisConnectionFactory() { - return new LettuceConnectionFactory(redisContainer().getContainerIpAddress(), - redisContainer().getFirstMappedPort()); + return new LettuceConnectionFactory(redisContainer().getHost(), redisContainer().getFirstMappedPort()); } } diff --git a/spring-session-samples/spring-session-sample-boot-redis/src/main/java/sample/config/SecurityConfig.java b/spring-session-samples/spring-session-sample-boot-redis/src/main/java/sample/config/SecurityConfig.java index 775c4ebf..e3ed80a1 100644 --- a/spring-session-samples/spring-session-sample-boot-redis/src/main/java/sample/config/SecurityConfig.java +++ b/spring-session-samples/spring-session-sample-boot-redis/src/main/java/sample/config/SecurityConfig.java @@ -1,5 +1,5 @@ /* - * Copyright 2014-2018 the original author or authors. + * Copyright 2014-2022 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -17,9 +17,10 @@ package sample.config; import org.springframework.boot.autoconfigure.security.servlet.PathRequest; +import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.security.config.annotation.web.builders.HttpSecurity; -import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; +import org.springframework.security.web.SecurityFilterChain; /** * Spring Security configuration. @@ -28,20 +29,21 @@ import org.springframework.security.config.annotation.web.configuration.WebSecur * @author Vedran Pavic */ @Configuration -public class SecurityConfig extends WebSecurityConfigurerAdapter { +public class SecurityConfig { // @formatter:off // tag::config[] - @Override - protected void configure(HttpSecurity http) throws Exception { - http + @Bean + SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { + return http .authorizeRequests((authorize) -> authorize .requestMatchers(PathRequest.toStaticResources().atCommonLocations()).permitAll() .anyRequest().authenticated() ) .formLogin((formLogin) -> formLogin .permitAll() - ); + ) + .build(); } // end::config[] // @formatter:on diff --git a/spring-session-samples/spring-session-sample-boot-webflux-custom-cookie/src/integration-test/java/sample/AttributeTests.java b/spring-session-samples/spring-session-sample-boot-webflux-custom-cookie/src/integration-test/java/sample/AttributeTests.java index e79d8b16..796cefbd 100644 --- a/spring-session-samples/spring-session-sample-boot-webflux-custom-cookie/src/integration-test/java/sample/AttributeTests.java +++ b/spring-session-samples/spring-session-sample-boot-webflux-custom-cookie/src/integration-test/java/sample/AttributeTests.java @@ -103,8 +103,7 @@ class AttributeTests { @Bean LettuceConnectionFactory redisConnectionFactory() { - return new LettuceConnectionFactory(redisContainer().getContainerIpAddress(), - redisContainer().getFirstMappedPort()); + return new LettuceConnectionFactory(redisContainer().getHost(), redisContainer().getFirstMappedPort()); } } diff --git a/spring-session-samples/spring-session-sample-boot-webflux/src/integration-test/java/sample/AttributeTests.java b/spring-session-samples/spring-session-sample-boot-webflux/src/integration-test/java/sample/AttributeTests.java index 3251bfae..2e489895 100644 --- a/spring-session-samples/spring-session-sample-boot-webflux/src/integration-test/java/sample/AttributeTests.java +++ b/spring-session-samples/spring-session-sample-boot-webflux/src/integration-test/java/sample/AttributeTests.java @@ -105,8 +105,7 @@ class AttributeTests { @Bean LettuceConnectionFactory redisConnectionFactory() { - return new LettuceConnectionFactory(redisContainer().getContainerIpAddress(), - redisContainer().getFirstMappedPort()); + return new LettuceConnectionFactory(redisContainer().getHost(), redisContainer().getFirstMappedPort()); } } diff --git a/spring-session-samples/spring-session-sample-boot-websocket/src/integration-test/java/sample/ApplicationTests.java b/spring-session-samples/spring-session-sample-boot-websocket/src/integration-test/java/sample/ApplicationTests.java index 9b661843..c251be2e 100644 --- a/spring-session-samples/spring-session-sample-boot-websocket/src/integration-test/java/sample/ApplicationTests.java +++ b/spring-session-samples/spring-session-sample-boot-websocket/src/integration-test/java/sample/ApplicationTests.java @@ -18,6 +18,7 @@ package sample; import java.util.ArrayList; import java.util.List; +import java.util.concurrent.CompletableFuture; import java.util.concurrent.ExecutionException; import org.junit.jupiter.api.Test; @@ -32,7 +33,6 @@ import org.springframework.boot.test.context.TestConfiguration; import org.springframework.context.annotation.Bean; import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory; import org.springframework.test.context.junit.jupiter.SpringExtension; -import org.springframework.util.concurrent.ListenableFuture; import org.springframework.web.socket.TextMessage; import org.springframework.web.socket.WebSocketHandler; import org.springframework.web.socket.WebSocketSession; @@ -67,7 +67,7 @@ class ApplicationTests { transports.add(new RestTemplateXhrTransport()); SockJsClient sockJsClient = new SockJsClient(transports); - ListenableFuture wsSession = sockJsClient.doHandshake(this.webSocketHandler, + CompletableFuture wsSession = sockJsClient.execute(this.webSocketHandler, "ws://localhost:" + this.port + "/sockjs"); assertThatExceptionOfType(ExecutionException.class) @@ -86,8 +86,7 @@ class ApplicationTests { @Bean LettuceConnectionFactory redisConnectionFactory() { - return new LettuceConnectionFactory(redisContainer().getContainerIpAddress(), - redisContainer().getFirstMappedPort()); + return new LettuceConnectionFactory(redisContainer().getHost(), redisContainer().getFirstMappedPort()); } } diff --git a/spring-session-samples/spring-session-sample-boot-websocket/src/main/java/sample/config/WebSecurityConfig.java b/spring-session-samples/spring-session-sample-boot-websocket/src/main/java/sample/config/WebSecurityConfig.java index 71d881f5..bf7b32a3 100644 --- a/spring-session-samples/spring-session-sample-boot-websocket/src/main/java/sample/config/WebSecurityConfig.java +++ b/spring-session-samples/spring-session-sample-boot-websocket/src/main/java/sample/config/WebSecurityConfig.java @@ -1,5 +1,5 @@ /* - * Copyright 2014-2018 the original author or authors. + * Copyright 2014-2022 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -18,18 +18,19 @@ package sample.config; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.security.servlet.PathRequest; +import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity; import org.springframework.security.config.annotation.web.builders.HttpSecurity; -import org.springframework.security.config.annotation.web.builders.WebSecurity; -import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; +import org.springframework.security.config.annotation.web.configuration.WebSecurityCustomizer; import org.springframework.security.core.userdetails.UserDetailsService; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; +import org.springframework.security.web.SecurityFilterChain; @Configuration @EnableGlobalMethodSecurity(prePostEnabled = true) -public class WebSecurityConfig extends WebSecurityConfigurerAdapter { +public class WebSecurityConfig { // @formatter:off @Autowired @@ -42,24 +43,25 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter { // @formatter:on // @formatter:off - @Override - public void configure(WebSecurity web) { - web + @Bean + WebSecurityCustomizer ignoringCustomizer() { + return (web) -> web .ignoring().requestMatchers(PathRequest.toH2Console()); } // @formatter:on // @formatter:off - @Override - protected void configure(HttpSecurity http) throws Exception { - http + @Bean + SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { + return http .authorizeRequests((authorize) -> authorize .requestMatchers(PathRequest.toStaticResources().atCommonLocations()).permitAll() .anyRequest().authenticated() ) .formLogin((formLogin) -> formLogin .permitAll() - ); + ) + .build(); } // @formatter:on diff --git a/spring-session-samples/spring-session-sample-boot-websocket/src/main/java/sample/config/WebSocketSecurityConfig.java b/spring-session-samples/spring-session-sample-boot-websocket/src/main/java/sample/config/WebSocketSecurityConfig.java index 4361cc46..fb1a4ad7 100644 --- a/spring-session-samples/spring-session-sample-boot-websocket/src/main/java/sample/config/WebSocketSecurityConfig.java +++ b/spring-session-samples/spring-session-sample-boot-websocket/src/main/java/sample/config/WebSocketSecurityConfig.java @@ -1,5 +1,5 @@ /* - * Copyright 2014-2019 the original author or authors. + * Copyright 2014-2022 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,23 +16,28 @@ package sample.config; +import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; -import org.springframework.security.config.annotation.web.messaging.MessageSecurityMetadataSourceRegistry; -import org.springframework.security.config.annotation.web.socket.AbstractSecurityWebSocketMessageBrokerConfigurer; +import org.springframework.messaging.Message; +import org.springframework.security.authorization.AuthorizationManager; +import org.springframework.security.config.annotation.web.socket.EnableWebSocketSecurity; +import org.springframework.security.messaging.access.intercept.MessageMatcherDelegatingAuthorizationManager; /** * @author Rob Winch */ @Configuration -public class WebSocketSecurityConfig extends AbstractSecurityWebSocketMessageBrokerConfigurer { +@EnableWebSocketSecurity +public class WebSocketSecurityConfig { // @formatter:off - @Override - protected void configureInbound(MessageSecurityMetadataSourceRegistry messages) { + @Bean + AuthorizationManager> messageAuthorizationManager(MessageMatcherDelegatingAuthorizationManager.Builder messages) { messages .simpMessageDestMatchers("/queue/**", "/topic/**").denyAll() .simpSubscribeDestMatchers("/queue/**/*-user*", "/topic/**/*-user*").denyAll() .anyMessage().authenticated(); + return messages.build(); } // @formatter:on diff --git a/spring-session-samples/spring-session-sample-javaconfig-custom-cookie/src/main/java/sample/EmbeddedRedisConfig.java b/spring-session-samples/spring-session-sample-javaconfig-custom-cookie/src/main/java/sample/EmbeddedRedisConfig.java index 4f6f717a..db12b562 100644 --- a/spring-session-samples/spring-session-sample-javaconfig-custom-cookie/src/main/java/sample/EmbeddedRedisConfig.java +++ b/spring-session-samples/spring-session-sample-javaconfig-custom-cookie/src/main/java/sample/EmbeddedRedisConfig.java @@ -40,8 +40,7 @@ public class EmbeddedRedisConfig { @Bean @Primary public LettuceConnectionFactory redisConnectionFactory() { - return new LettuceConnectionFactory(redisContainer().getContainerIpAddress(), - redisContainer().getFirstMappedPort()); + return new LettuceConnectionFactory(redisContainer().getHost(), redisContainer().getFirstMappedPort()); } } diff --git a/spring-session-samples/spring-session-sample-javaconfig-redis/src/main/java/sample/EmbeddedRedisConfig.java b/spring-session-samples/spring-session-sample-javaconfig-redis/src/main/java/sample/EmbeddedRedisConfig.java index 4f6f717a..db12b562 100644 --- a/spring-session-samples/spring-session-sample-javaconfig-redis/src/main/java/sample/EmbeddedRedisConfig.java +++ b/spring-session-samples/spring-session-sample-javaconfig-redis/src/main/java/sample/EmbeddedRedisConfig.java @@ -40,8 +40,7 @@ public class EmbeddedRedisConfig { @Bean @Primary public LettuceConnectionFactory redisConnectionFactory() { - return new LettuceConnectionFactory(redisContainer().getContainerIpAddress(), - redisContainer().getFirstMappedPort()); + return new LettuceConnectionFactory(redisContainer().getHost(), redisContainer().getFirstMappedPort()); } } diff --git a/spring-session-samples/spring-session-sample-javaconfig-rest/src/integration-test/java/rest/RestMockMvcTests.java b/spring-session-samples/spring-session-sample-javaconfig-rest/src/integration-test/java/rest/RestMockMvcTests.java index dc4c7298..ef77c5e9 100644 --- a/spring-session-samples/spring-session-sample-javaconfig-rest/src/integration-test/java/rest/RestMockMvcTests.java +++ b/spring-session-samples/spring-session-sample-javaconfig-rest/src/integration-test/java/rest/RestMockMvcTests.java @@ -99,8 +99,7 @@ class RestMockMvcTests { @Bean LettuceConnectionFactory redisConnectionFactory() { - return new LettuceConnectionFactory(redisContainer().getContainerIpAddress(), - redisContainer().getFirstMappedPort()); + return new LettuceConnectionFactory(redisContainer().getHost(), redisContainer().getFirstMappedPort()); } @Bean diff --git a/spring-session-samples/spring-session-sample-javaconfig-rest/src/main/java/sample/EmbeddedRedisConfig.java b/spring-session-samples/spring-session-sample-javaconfig-rest/src/main/java/sample/EmbeddedRedisConfig.java index 4f6f717a..db12b562 100644 --- a/spring-session-samples/spring-session-sample-javaconfig-rest/src/main/java/sample/EmbeddedRedisConfig.java +++ b/spring-session-samples/spring-session-sample-javaconfig-rest/src/main/java/sample/EmbeddedRedisConfig.java @@ -40,8 +40,7 @@ public class EmbeddedRedisConfig { @Bean @Primary public LettuceConnectionFactory redisConnectionFactory() { - return new LettuceConnectionFactory(redisContainer().getContainerIpAddress(), - redisContainer().getFirstMappedPort()); + return new LettuceConnectionFactory(redisContainer().getHost(), redisContainer().getFirstMappedPort()); } } diff --git a/spring-session-samples/spring-session-sample-javaconfig-rest/src/main/java/sample/SecurityConfig.java b/spring-session-samples/spring-session-sample-javaconfig-rest/src/main/java/sample/SecurityConfig.java index 2e5490d1..80beb226 100644 --- a/spring-session-samples/spring-session-sample-javaconfig-rest/src/main/java/sample/SecurityConfig.java +++ b/spring-session-samples/spring-session-sample-javaconfig-rest/src/main/java/sample/SecurityConfig.java @@ -17,30 +17,32 @@ package sample; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.security.config.Customizer; import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; -import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; import org.springframework.security.core.userdetails.User; +import org.springframework.security.web.SecurityFilterChain; import org.springframework.security.web.savedrequest.NullRequestCache; @Configuration(proxyBeanMethods = false) @EnableWebSecurity -public class SecurityConfig extends WebSecurityConfigurerAdapter { +public class SecurityConfig { // @formatter:off - @Override - protected void configure(HttpSecurity http) throws Exception { - http + @Bean + SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { + return http .authorizeRequests((authorize) -> authorize .anyRequest().authenticated() ) .requestCache((requestCache) -> requestCache .requestCache(new NullRequestCache()) ) - .httpBasic(Customizer.withDefaults()); + .httpBasic(Customizer.withDefaults()) + .build(); } // @formatter:on diff --git a/spring-session-samples/spring-session-sample-javaconfig-security/src/main/java/sample/EmbeddedRedisConfig.java b/spring-session-samples/spring-session-sample-javaconfig-security/src/main/java/sample/EmbeddedRedisConfig.java index 4f6f717a..db12b562 100644 --- a/spring-session-samples/spring-session-sample-javaconfig-security/src/main/java/sample/EmbeddedRedisConfig.java +++ b/spring-session-samples/spring-session-sample-javaconfig-security/src/main/java/sample/EmbeddedRedisConfig.java @@ -40,8 +40,7 @@ public class EmbeddedRedisConfig { @Bean @Primary public LettuceConnectionFactory redisConnectionFactory() { - return new LettuceConnectionFactory(redisContainer().getContainerIpAddress(), - redisContainer().getFirstMappedPort()); + return new LettuceConnectionFactory(redisContainer().getHost(), redisContainer().getFirstMappedPort()); } } diff --git a/spring-session-samples/spring-session-sample-xml-redis/src/main/java/sample/EmbeddedRedisConfig.java b/spring-session-samples/spring-session-sample-xml-redis/src/main/java/sample/EmbeddedRedisConfig.java index 4f6f717a..db12b562 100644 --- a/spring-session-samples/spring-session-sample-xml-redis/src/main/java/sample/EmbeddedRedisConfig.java +++ b/spring-session-samples/spring-session-sample-xml-redis/src/main/java/sample/EmbeddedRedisConfig.java @@ -40,8 +40,7 @@ public class EmbeddedRedisConfig { @Bean @Primary public LettuceConnectionFactory redisConnectionFactory() { - return new LettuceConnectionFactory(redisContainer().getContainerIpAddress(), - redisContainer().getFirstMappedPort()); + return new LettuceConnectionFactory(redisContainer().getHost(), redisContainer().getFirstMappedPort()); } }