Skip to content

Commit 162e415

Browse files
authored
Use BeforeRequestSent event for all event listeners (#30)
- use BeforeRequestSent for all event listeners - removed waits + delays in various tests - fixed bug for deletion on non-existant/empty context <!-- Please describe your pull request here. --> ## References - TODO <!-- References to relevant GitHub issues and pull requests, esp. upstream and downstream changes --> ## Submitter checklist - [ ] The PR request is well described and justified, including the body and the references - [ ] The PR title represents the desired changelog entry - [ ] The repository's code style is followed (see the contributing guide) - [ ] Test coverage that demonstrates that the change works as expected - [ ] For new features, there's necessary documentation in this pull request or in a subsequent PR to [wiremock.org](https://github.com/wiremock/wiremock.org) <!-- Put an `x` into the [ ] to show you have filled the information. The template comes from https://github.com/wiremock/.github/blob/main/.github/pull_request_template.md You can override it by creating .github/pull_request_template.md in your own repository -->
1 parent cd64b79 commit 162e415

File tree

3 files changed

+14
-27
lines changed

3 files changed

+14
-27
lines changed

src/main/java/org/wiremock/extensions/state/extensions/DeleteStateEventListener.java

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@
2828
import org.wiremock.extensions.state.internal.ResponseTemplateModel;
2929
import org.wiremock.extensions.state.internal.StateExtensionMixin;
3030

31-
import java.util.LinkedList;
3231
import java.util.Map;
3332
import java.util.Objects;
3433
import java.util.Optional;
@@ -61,7 +60,7 @@ public boolean applyGlobally() {
6160
return false;
6261
}
6362

64-
public void afterComplete(ServeEvent serveEvent, Parameters parameters) {
63+
public void beforeResponseSent(ServeEvent serveEvent, Parameters parameters) {
6564
var model = Map.of(
6665
"request", RequestTemplateModel.from(serveEvent.getRequest()),
6766
"response", ResponseTemplateModel.from(serveEvent.getResponse())
@@ -76,9 +75,13 @@ public void afterComplete(ServeEvent serveEvent, Parameters parameters) {
7675

7776
private void handleListDeletion(DeleteStateParameters.ListParameters listConfig, String contextName, Map<String, Object> model) {
7877
if (Boolean.TRUE.equals(listConfig.getDeleteFirst())) {
79-
contextManager.createOrUpdateContextList(contextName, LinkedList::removeFirst);
78+
contextManager.createOrUpdateContextList(contextName, maps -> {
79+
if (!maps.isEmpty()) maps.removeFirst();
80+
});
8081
} else if (Boolean.TRUE.equals(listConfig.getDeleteLast())) {
81-
contextManager.createOrUpdateContextList(contextName, LinkedList::removeLast);
82+
contextManager.createOrUpdateContextList(contextName, maps -> {
83+
if (!maps.isEmpty()) maps.removeLast();
84+
});
8285
} else if (StringUtils.isNotBlank(listConfig.getDeleteIndex())) {
8386
try {
8487
var index = Integer.parseInt(renderTemplate(model, listConfig.getDeleteIndex()));

src/main/java/org/wiremock/extensions/state/extensions/RecordStateEventListener.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ public RecordStateEventListener(ContextManager contextManager, TemplateEngine te
4949
this.templateEngine = templateEngine;
5050
}
5151

52-
public void afterComplete(ServeEvent serveEvent, Parameters parameters) {
52+
public void beforeResponseSent(ServeEvent serveEvent, Parameters parameters) {
5353
var model = Map.of(
5454
"request", RequestTemplateModel.from(serveEvent.getRequest()),
5555
"response", ResponseTemplateModel.from(serveEvent.getResponse())

src/test/java/org/wiremock/extensions/state/functionality/DeleteStateEventListenerTest.java

Lines changed: 6 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -217,7 +217,6 @@ void test_unknownContext_noOtherContext_ok() throws URISyntaxException {
217217
getRequest("state", context);
218218

219219
await()
220-
.pollDelay(Duration.ofSeconds(1))
221220
.pollInterval(Duration.ofMillis(10))
222221
.atMost(Duration.ofSeconds(5)).untilAsserted(() -> assertThat(contextManager.getContext(context)).isEmpty());
223222
}
@@ -231,11 +230,9 @@ void test_unknownContext_otherContext_ok() throws URISyntaxException {
231230
getRequest("state", context);
232231

233232
await()
234-
.pollDelay(Duration.ofSeconds(1))
235233
.pollInterval(Duration.ofMillis(10))
236234
.atMost(Duration.ofSeconds(5)).untilAsserted(() -> assertThat(contextManager.getContext(context)).isEmpty());
237235
await()
238-
.pollDelay(Duration.ofSeconds(1))
239236
.pollInterval(Duration.ofMillis(10))
240237
.atMost(Duration.ofSeconds(5)).untilAsserted(() -> assertThat(contextManager.getContext(otherContext)).isPresent());
241238
}
@@ -290,19 +287,21 @@ void test_unknownContext_noOtherContext_ok() throws URISyntaxException {
290287
getRequest("list/deleteFirst", context);
291288

292289
await()
293-
.pollDelay(Duration.ofSeconds(1))
294290
.pollInterval(Duration.ofMillis(10))
295-
.atMost(Duration.ofSeconds(5)).untilAsserted(() -> assertThat(contextManager.getContext(context)).isEmpty());
291+
.atMost(Duration.ofSeconds(5))
292+
.untilAsserted(() ->
293+
assertThat(contextManager.getContext(context))
294+
.isPresent()
295+
.hasValueSatisfying(it -> assertThat(it.getList()).isEmpty())
296+
);
296297
}
297298

298299
@Test
299300
void test_deleteFirst_ok() throws URISyntaxException {
300301
var contextName = RandomStringUtils.randomAlphabetic(5);
301302

302303
postRequest("list", contextName, "one");
303-
assertList(contextName, list -> assertThat(list).hasSize(1));
304304
postRequest("list", contextName, "two");
305-
assertList(contextName, list -> assertThat(list).hasSize(2));
306305

307306
getRequest("list/deleteFirst", contextName);
308307

@@ -320,9 +319,7 @@ void test_deleteLast_ok() throws URISyntaxException {
320319
var contextName = RandomStringUtils.randomAlphabetic(5);
321320

322321
postRequest("list", contextName, "one");
323-
assertList(contextName, list -> assertThat(list).hasSize(1));
324322
postRequest("list", contextName, "two");
325-
assertList(contextName, list -> assertThat(list).hasSize(2));
326323

327324
getRequest("list/deleteLast", contextName);
328325

@@ -340,11 +337,8 @@ void test_deleteIndex_middle_ok() throws URISyntaxException {
340337
var contextName = RandomStringUtils.randomAlphabetic(5);
341338

342339
postRequest("list", contextName, "one");
343-
assertContextNumUpdates(contextName, 1);
344340
postRequest("list", contextName, "two");
345-
assertContextNumUpdates(contextName, 2);
346341
postRequest("list", contextName, "three");
347-
assertContextNumUpdates(contextName, 3);
348342
assertList(contextName, list -> assertThat(list).hasSize(3));
349343

350344
getRequest("list/deleteIndex/1", contextName);
@@ -363,11 +357,8 @@ void test_deleteIndex_last_ok() throws URISyntaxException {
363357
var contextName = RandomStringUtils.randomAlphabetic(5);
364358

365359
postRequest("list", contextName, "one");
366-
assertContextNumUpdates(contextName, 1);
367360
postRequest("list", contextName, "two");
368-
assertContextNumUpdates(contextName, 2);
369361
postRequest("list", contextName, "three");
370-
assertContextNumUpdates(contextName, 3);
371362
assertList(contextName, list -> assertThat(list).hasSize(3));
372363

373364
getRequest("list/deleteIndex/2", contextName);
@@ -386,11 +377,8 @@ void test_deleteWhere_middle_ok() throws URISyntaxException {
386377
var contextName = RandomStringUtils.randomAlphabetic(5);
387378

388379
postRequest("list", contextName, "one");
389-
assertContextNumUpdates(contextName, 1);
390380
postRequest("list", contextName, "two");
391-
assertContextNumUpdates(contextName, 2);
392381
postRequest("list", contextName, "three");
393-
assertContextNumUpdates(contextName, 3);
394382
assertList(contextName, list -> assertThat(list).hasSize(3));
395383

396384
getRequest("list/deleteWhere/two", contextName);
@@ -409,11 +397,8 @@ void test_deleteWhere_last_ok() throws URISyntaxException {
409397
var contextName = RandomStringUtils.randomAlphabetic(5);
410398

411399
postRequest("list", contextName, "one");
412-
assertContextNumUpdates(contextName, 1);
413400
postRequest("list", contextName, "two");
414-
assertContextNumUpdates(contextName, 2);
415401
postRequest("list", contextName, "three");
416-
assertContextNumUpdates(contextName, 3);
417402
assertList(contextName, list -> assertThat(list).hasSize(3));
418403

419404
getRequest("list/deleteWhere/three", contextName);
@@ -429,7 +414,6 @@ void test_deleteWhere_last_ok() throws URISyntaxException {
429414

430415
private void assertList(String contextName, Consumer<LinkedList<Map<String, String>>> consumer) {
431416
await()
432-
.pollDelay(Duration.ofMillis(10))
433417
.pollInterval(Duration.ofMillis(10))
434418
.atMost(ofSeconds(5))
435419
.untilAsserted(() ->

0 commit comments

Comments
 (0)