Skip to content

Commit 60b3453

Browse files
committed
Update exercise and answer ServeEvent listener, add example
1 parent 42060a8 commit 60b3453

File tree

4 files changed

+97
-2
lines changed

4 files changed

+97
-2
lines changed

src/test/java/answers/WireMockAnswers7dot3Test.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,9 +61,9 @@ public void anIncomingLoanRequestShouldTriggerAConsoleLogMessage() {
6161

6262
given().
6363
spec(requestSpec).
64-
when().
64+
when().
6565
post("/requestLoan").
66-
then().
66+
then().
6767
assertThat().
6868
statusCode(201);
6969
}

src/test/java/answers/extensions/LogRequestWithTimestamp.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,11 @@ public String getName() {
1414
return "log-loan-request-with-timestamp";
1515
}
1616

17+
@Override
18+
public boolean applyGlobally() {
19+
return false;
20+
}
21+
1722
@Override
1823
public void afterComplete(ServeEvent serveEvent, Parameters parameters) {
1924

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
package examples.extensions;
2+
3+
import com.github.tomakehurst.wiremock.extension.Parameters;
4+
import com.github.tomakehurst.wiremock.extension.ServeEventListener;
5+
import com.github.tomakehurst.wiremock.stubbing.ServeEvent;
6+
7+
public class DatabaseWriter implements ServeEventListener {
8+
9+
@Override
10+
public String getName() {
11+
return "database-writer";
12+
}
13+
14+
@Override
15+
public boolean applyGlobally() {
16+
return false;
17+
}
18+
19+
@Override
20+
public void afterComplete(ServeEvent serveEvent, Parameters parameters) {
21+
22+
String database = parameters.getString("database");
23+
24+
System.out.println("Writing to database: " + database);
25+
}
26+
}
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
package examples.usingextensions;
2+
3+
import com.github.tomakehurst.wiremock.extension.Parameters;
4+
import com.github.tomakehurst.wiremock.junit5.WireMockExtension;
5+
import examples.extensions.BodyLengthMatcher;
6+
import examples.extensions.DatabaseWriter;
7+
import io.restassured.builder.RequestSpecBuilder;
8+
import io.restassured.specification.RequestSpecification;
9+
import org.junit.jupiter.api.BeforeEach;
10+
import org.junit.jupiter.api.Test;
11+
import org.junit.jupiter.api.extension.RegisterExtension;
12+
13+
import java.util.HashMap;
14+
import java.util.Map;
15+
16+
import static com.github.tomakehurst.wiremock.client.WireMock.*;
17+
import static com.github.tomakehurst.wiremock.core.WireMockConfiguration.wireMockConfig;
18+
import static io.restassured.RestAssured.given;
19+
20+
public class DatabaseWriterTest {
21+
22+
private RequestSpecification requestSpec;
23+
24+
@RegisterExtension
25+
static WireMockExtension wiremock = WireMockExtension.newInstance().
26+
options(wireMockConfig().
27+
port(9876).
28+
extensions(new DatabaseWriter())
29+
).build();
30+
31+
@BeforeEach
32+
public void createRequestSpec() {
33+
34+
requestSpec = new RequestSpecBuilder().
35+
setBaseUri("http://localhost").
36+
setPort(9876).
37+
build();
38+
}
39+
40+
public void stubForServeEventListener() {
41+
42+
Map<String, Object> params = new HashMap<>();
43+
params.put("database", "requestsDB");
44+
45+
wiremock.stubFor(get(urlEqualTo("/serve-event")).
46+
withServeEventListener("database-writer", Parameters.from(params)).
47+
willReturn(aResponse().withStatus(200))
48+
);
49+
}
50+
51+
@Test
52+
public void sendRequest_shouldWriteRequestToDatabaseAfterServeIsComplete() {
53+
54+
stubForServeEventListener();
55+
56+
given().
57+
spec(requestSpec).
58+
when().
59+
get("/serve-event").
60+
then().
61+
assertThat().
62+
statusCode(200);
63+
}
64+
}

0 commit comments

Comments
 (0)