23
23
import static org .mockito .BDDMockito .mock ;
24
24
import static org .mockito .BDDMockito .times ;
25
25
import static org .mockito .Mockito .verify ;
26
+ import static org .springframework .session .data .mongo .ReactiveMongoOperationsSessionRepository .DEFAULT_COLLECTION_NAME ;
26
27
27
28
import java .util .UUID ;
28
29
@@ -114,8 +115,12 @@ public void shouldSaveSession() {
114
115
115
116
// given
116
117
MongoSession session = new MongoSession ();
118
+ Document sessionDocument = new Document ();
117
119
BasicDBObject dbSession = new BasicDBObject ();
118
120
121
+ given (this .mongoOperations .findById (session .getId (), Document .class ,
122
+ DEFAULT_COLLECTION_NAME )).willReturn (Mono .just (sessionDocument ));
123
+
119
124
given (this .converter .convert (session ,
120
125
TypeDescriptor .valueOf (MongoSession .class ),
121
126
TypeDescriptor .valueOf (DBObject .class ))).willReturn (dbSession );
@@ -127,7 +132,27 @@ public void shouldSaveSession() {
127
132
.as (StepVerifier ::create )
128
133
.verifyComplete ();
129
134
130
- verify (this .mongoOperations ).save (dbSession , ReactiveMongoOperationsSessionRepository .DEFAULT_COLLECTION_NAME );
135
+ verify (this .mongoOperations ).findById (session .getId (), Document .class , DEFAULT_COLLECTION_NAME );
136
+ verify (this .mongoOperations ).save (dbSession , DEFAULT_COLLECTION_NAME );
137
+ verifyNoMoreInteractions (this .mongoOperations );
138
+ }
139
+
140
+ @ Test
141
+ public void shouldCreateAnErrorWhenSavingSessionNotInMongo () {
142
+
143
+ // given
144
+ MongoSession session = new MongoSession ();
145
+
146
+ given (this .mongoOperations .findById (session .getId (), Document .class ,
147
+ DEFAULT_COLLECTION_NAME )).willReturn (Mono .empty ());
148
+
149
+ // when
150
+ this .repository .save (session )
151
+ .as (StepVerifier ::create )
152
+ .verifyErrorMessage ("Session was invalidated" );
153
+
154
+ verify (this .mongoOperations ).findById (session .getId (), Document .class , DEFAULT_COLLECTION_NAME );
155
+ verifyNoMoreInteractions (this .mongoOperations );
131
156
}
132
157
133
158
@ Test
@@ -138,7 +163,7 @@ public void shouldGetSession() {
138
163
Document sessionDocument = new Document ();
139
164
140
165
given (this .mongoOperations .findById (sessionId , Document .class ,
141
- ReactiveMongoOperationsSessionRepository . DEFAULT_COLLECTION_NAME )).willReturn (Mono .just (sessionDocument ));
166
+ DEFAULT_COLLECTION_NAME )).willReturn (Mono .just (sessionDocument ));
142
167
143
168
MongoSession session = new MongoSession ();
144
169
@@ -160,9 +185,9 @@ public void shouldHandleExpiredSession() {
160
185
Document sessionDocument = new Document ();
161
186
162
187
given (this .mongoOperations .findById (sessionId , Document .class ,
163
- ReactiveMongoOperationsSessionRepository . DEFAULT_COLLECTION_NAME )).willReturn (Mono .just (sessionDocument ));
188
+ DEFAULT_COLLECTION_NAME )).willReturn (Mono .just (sessionDocument ));
164
189
165
- given (this .mongoOperations .remove (sessionDocument , ReactiveMongoOperationsSessionRepository . DEFAULT_COLLECTION_NAME ))
190
+ given (this .mongoOperations .remove (sessionDocument , DEFAULT_COLLECTION_NAME ))
166
191
.willReturn (Mono .just (DeleteResult .acknowledged (1 )));
167
192
168
193
MongoSession session = mock (MongoSession .class );
@@ -177,8 +202,7 @@ public void shouldHandleExpiredSession() {
177
202
.verifyComplete ();
178
203
179
204
// then
180
- verify (this .mongoOperations ).remove (any (Document .class ),
181
- eq (ReactiveMongoOperationsSessionRepository .DEFAULT_COLLECTION_NAME ));
205
+ verify (this .mongoOperations ).remove (any (Document .class ), eq (DEFAULT_COLLECTION_NAME ));
182
206
}
183
207
184
208
@ Test
@@ -189,7 +213,7 @@ public void shouldDeleteSession() {
189
213
Document sessionDocument = new Document ();
190
214
191
215
given (this .mongoOperations .findById (sessionId , Document .class ,
192
- ReactiveMongoOperationsSessionRepository . DEFAULT_COLLECTION_NAME )).willReturn (Mono .just (sessionDocument ));
216
+ DEFAULT_COLLECTION_NAME )).willReturn (Mono .just (sessionDocument ));
193
217
194
218
given (this .mongoOperations .remove (sessionDocument , "sessions" ))
195
219
.willReturn (Mono .just (DeleteResult .acknowledged (1 )));
@@ -204,9 +228,7 @@ public void shouldDeleteSession() {
204
228
.as (StepVerifier ::create )
205
229
.verifyComplete ();
206
230
207
- verify (this .mongoOperations ).remove (any (Document .class ),
208
- eq (ReactiveMongoOperationsSessionRepository .DEFAULT_COLLECTION_NAME ));
209
-
231
+ verify (this .mongoOperations ).remove (any (Document .class ), eq (DEFAULT_COLLECTION_NAME ));
210
232
verify (this .eventPublisher ).publishEvent (any (SessionDeletedEvent .class ));
211
233
}
212
234
@@ -225,5 +247,8 @@ public void shouldInvokeMethodToCreateIndexesImperatively() {
225
247
// then
226
248
verify (this .blockingMongoOperations , times (1 )).indexOps ((String ) any ());
227
249
verify (this .converter , times (1 )).ensureIndexes (indexOperations );
250
+
251
+ verifyNoMoreInteractions (this .blockingMongoOperations );
252
+ verifyNoMoreInteractions (this .converter );
228
253
}
229
254
}
0 commit comments