2727import static org .awaitility .Awaitility .await ;
2828import static org .hamcrest .MatcherAssert .assertThat ;
2929import static org .hamcrest .Matchers .*;
30+ import static org .junit .jupiter .api .Assertions .assertTrue ;
3031
3132import com .fasterxml .jackson .annotation .JsonProperty ;
3233import com .github .tomakehurst .wiremock .admin .Router ;
4445import java .util .concurrent .Callable ;
4546import java .util .concurrent .CompletableFuture ;
4647import java .util .concurrent .ConcurrentHashMap ;
48+ import java .util .concurrent .atomic .AtomicBoolean ;
4749import java .util .concurrent .atomic .AtomicInteger ;
4850import org .junit .jupiter .api .AfterEach ;
4951import org .junit .jupiter .api .Test ;
@@ -67,8 +69,8 @@ public void cleanup() {
6769 }
6870
6971 @ Test
70- void eventTriggeredBeforeMatching () throws Exception {
71- final CompletableFuture < Void > completed = new CompletableFuture <>( );
72+ void eventSynchronouslyTriggeredBeforeMatching () {
73+ AtomicBoolean completed = new AtomicBoolean ( false );
7274 initWithOptions (
7375 options ()
7476 .dynamicPort ()
@@ -82,7 +84,7 @@ public void beforeMatch(ServeEvent serveEvent, Parameters parameters) {
8284 assertThat (serveEvent .getStubMapping (), nullValue ());
8385 assertThat (serveEvent .getResponse (), nullValue ());
8486
85- completed .complete ( null );
87+ completed .set ( true );
8688 }
8789
8890 @ Override
@@ -95,12 +97,12 @@ public String getName() {
9597
9698 client .get ("/get-this" );
9799
98- completed .get (2 , SECONDS );
100+ assertTrue ( completed .get () );
99101 }
100102
101103 @ Test
102- void eventTriggeredAfterMatching () throws Exception {
103- final CompletableFuture < Void > completed = new CompletableFuture <>( );
104+ void eventSynchronouslyTriggeredAfterMatching () {
105+ AtomicBoolean completed = new AtomicBoolean ( false );
104106 initWithOptions (
105107 options ()
106108 .dynamicPort ()
@@ -114,7 +116,7 @@ public void afterMatch(ServeEvent serveEvent, Parameters parameters) {
114116 assertThat (serveEvent .getStubMapping (), notNullValue ());
115117 assertThat (serveEvent .getResponse (), nullValue ());
116118
117- completed .complete ( null );
119+ completed .set ( true );
118120 }
119121
120122 @ Override
@@ -127,11 +129,43 @@ public String getName() {
127129
128130 client .get ("/get-this" );
129131
130- completed .get (2 , SECONDS );
132+ assertTrue (completed .get ());
133+ }
134+
135+ @ Test
136+ void eventSynchronouslyTriggeredBeforeResponseSent () {
137+ AtomicBoolean completed = new AtomicBoolean (false );
138+ initWithOptions (
139+ options ()
140+ .dynamicPort ()
141+ .extensions (
142+ new ServeEventListener () {
143+
144+ @ Override
145+ public void beforeResponseSent (ServeEvent serveEvent , Parameters parameters ) {
146+ assertThat (serveEvent .getRequest ().getUrl (), is ("/get-this" ));
147+ assertThat (serveEvent .getResponseDefinition (), notNullValue ());
148+ assertThat (serveEvent .getStubMapping (), notNullValue ());
149+ assertThat (serveEvent .getResponse ().getStatus (), is (200 ));
150+
151+ completed .set (true );
152+ }
153+
154+ @ Override
155+ public String getName () {
156+ return "before-resposnse-sent" ;
157+ }
158+ }));
159+
160+ wm .stubFor (any (anyUrl ()).willReturn (ok ()));
161+
162+ client .get ("/get-this" );
163+
164+ assertTrue (completed .get ());
131165 }
132166
133167 @ Test
134- void eventTriggeredAfterCompletion () throws Exception {
168+ void eventAsynchronouslyTriggeredAfterCompletion () throws Exception {
135169 final CompletableFuture <Void > completed = new CompletableFuture <>();
136170 initWithOptions (
137171 options ()
0 commit comments