From 002136bad487a60ad405b8199dd1db966dc9d2c5 Mon Sep 17 00:00:00 2001 From: Vedran Pavic Date: Tue, 18 Sep 2018 19:57:56 +0200 Subject: [PATCH] Align WebSession#save implementations with API Closes gh-1135 --- .../ReactiveRedisOperationsSessionRepositoryITests.java | 6 +++++- .../redis/ReactiveRedisOperationsSessionRepository.java | 4 +++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/spring-session-data-redis/src/integration-test/java/org/springframework/session/data/redis/ReactiveRedisOperationsSessionRepositoryITests.java b/spring-session-data-redis/src/integration-test/java/org/springframework/session/data/redis/ReactiveRedisOperationsSessionRepositoryITests.java index 816cef94..ff6cef77 100644 --- a/spring-session-data-redis/src/integration-test/java/org/springframework/session/data/redis/ReactiveRedisOperationsSessionRepositoryITests.java +++ b/spring-session-data-redis/src/integration-test/java/org/springframework/session/data/redis/ReactiveRedisOperationsSessionRepositoryITests.java @@ -30,6 +30,7 @@ import org.springframework.test.context.junit4.SpringRunner; import org.springframework.test.context.web.WebAppConfiguration; import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatExceptionOfType; /** * Integration tests for {@link ReactiveRedisOperationsSessionRepository}. @@ -209,7 +210,10 @@ public class ReactiveRedisOperationsSessionRepositoryITests extends AbstractRedi this.repository.save(session).block(); toSave.setLastAccessedTime(Instant.now()); - this.repository.save(toSave).block(); + + assertThatExceptionOfType(IllegalStateException.class) + .isThrownBy(() -> this.repository.save(toSave).block()) + .withMessage("Session was invalidated"); assertThat(this.repository.findById(sessionId).block()).isNull(); assertThat(this.repository.findById(session.getId()).block()).isNotNull(); diff --git a/spring-session-data-redis/src/main/java/org/springframework/session/data/redis/ReactiveRedisOperationsSessionRepository.java b/spring-session-data-redis/src/main/java/org/springframework/session/data/redis/ReactiveRedisOperationsSessionRepository.java index cf8922d9..f59c7fca 100644 --- a/spring-session-data-redis/src/main/java/org/springframework/session/data/redis/ReactiveRedisOperationsSessionRepository.java +++ b/spring-session-data-redis/src/main/java/org/springframework/session/data/redis/ReactiveRedisOperationsSessionRepository.java @@ -156,7 +156,9 @@ public class ReactiveRedisOperationsSessionRepository implements session.hasChangedSessionId() ? session.originalSessionId : session.getId()); return this.sessionRedisOperations.hasKey(sessionKey) - .flatMap((exists) -> exists ? result : Mono.empty()); + .flatMap((exists) -> exists ? result + : Mono.error(new IllegalStateException( + "Session was invalidated"))); } }