Skip to content

Commit e227202

Browse files
worldtikirnorth
authored andcommitted
Add a simple example with how to use the mock server container (#1950)
* Add a simple example with how to use the mock server container * Move examples for mockserver to unit tests
1 parent b08308f commit e227202

File tree

2 files changed

+55
-25
lines changed

2 files changed

+55
-25
lines changed

docs/modules/mockserver.md

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,21 @@
11
# Mockserver Module
22

3+
Mock Server can be used to mock HTTP services by matching requests against user-defined expectations.
4+
5+
## Usage example
6+
7+
The following example shows how to start Mockserver.
8+
9+
<!--codeinclude-->
10+
[Creating a MockServer container](../../modules/mockserver/src/test/java/org/testcontainers/containers/MockServerContainerTest.java) inside_block:creatingProxy
11+
<!--/codeinclude-->
12+
13+
And how to set a simple expectation using the Java MockServerClient.
14+
15+
<!--codeinclude-->
16+
[Setting a simple expectation](../../modules/mockserver/src/test/java/org/testcontainers/containers/MockServerContainerTest.java) inside_block:testSimpleExpectation
17+
<!--/codeinclude-->
18+
319
## Adding this module to your project dependencies
420

521
Add the following dependency to your `pom.xml`/`build.gradle` file:
@@ -16,3 +32,4 @@ testCompile "org.testcontainers:mockserver:{{latest_version}}"
1632
<scope>test</scope>
1733
</dependency>
1834
```
35+
Lines changed: 38 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package org.testcontainers.containers;
22

33
import lombok.Cleanup;
4+
import org.junit.Rule;
45
import org.junit.Test;
56
import org.mockserver.client.MockServerClient;
67

@@ -11,12 +12,43 @@
1112
import java.net.URLConnection;
1213

1314
import static org.hamcrest.CoreMatchers.containsString;
15+
import static org.hamcrest.CoreMatchers.equalTo;
1416
import static org.mockserver.model.HttpRequest.request;
1517
import static org.mockserver.model.HttpResponse.response;
1618
import static org.rnorth.visibleassertions.VisibleAssertions.assertThat;
1719

1820
public class MockServerContainerTest {
1921

22+
// creatingProxy {
23+
@Rule
24+
public MockServerContainer mockServer = new MockServerContainer();
25+
// }
26+
27+
private static String responseFromMockserver(MockServerContainer mockServer, String path) throws IOException {
28+
URLConnection urlConnection = new URL(mockServer.getEndpoint() + path).openConnection();
29+
@Cleanup BufferedReader reader = new BufferedReader(new InputStreamReader(urlConnection.getInputStream()));
30+
return reader.readLine();
31+
}
32+
33+
@Test
34+
public void shouldReturnExpectation() throws Exception {
35+
// testSimpleExpectation {
36+
new MockServerClient(mockServer.getContainerIpAddress(), mockServer.getServerPort())
37+
.when(request()
38+
.withPath("/person")
39+
.withQueryStringParameter("name", "peter"))
40+
.respond(response()
41+
.withBody("Peter the person!"));
42+
43+
// ...a GET request to '/person?name=peter' returns "Peter the person!"
44+
// }
45+
46+
assertThat("Expectation returns expected response body",
47+
responseFromMockserver(mockServer, "/person?name=peter"),
48+
containsString("Peter the person")
49+
);
50+
}
51+
2052
@Test
2153
public void shouldCallActualMockserverVersion() throws Exception {
2254
String actualVersion = MockServerClient.class.getPackage().getImplementationVersion();
@@ -25,33 +57,14 @@ public void shouldCallActualMockserverVersion() throws Exception {
2557

2658
String expectedBody = "Hello World!";
2759

28-
assertThat("MockServer returns correct result",
29-
responseFromMockserver(mockServer, expectedBody, "/hello"),
30-
containsString(expectedBody)
31-
);
32-
}
33-
}
60+
new MockServerClient(mockServer.getContainerIpAddress(), mockServer.getServerPort())
61+
.when(request().withPath("/hello"))
62+
.respond(response().withBody(expectedBody));
3463

35-
@Test
36-
public void shouldCallDefaultMockserverVersion() throws Exception {
37-
try (MockServerContainer mockServerDefault = new MockServerContainer()) {
38-
mockServerDefault.start();
39-
String expectedBody = "Hello Default World!";
40-
41-
assertThat("MockServer returns correct result for default constructor",
42-
responseFromMockserver(mockServerDefault, expectedBody, "/hellodefault"),
43-
containsString(expectedBody)
64+
assertThat("MockServer returns correct result",
65+
responseFromMockserver(mockServer, "/hello"),
66+
equalTo(expectedBody)
4467
);
4568
}
4669
}
47-
48-
private static String responseFromMockserver(MockServerContainer mockServer, String expectedBody, String path) throws IOException {
49-
new MockServerClient(mockServer.getContainerIpAddress(), mockServer.getServerPort())
50-
.when(request(path))
51-
.respond(response(expectedBody));
52-
53-
URLConnection urlConnection = new URL(mockServer.getEndpoint() + path).openConnection();
54-
@Cleanup BufferedReader reader = new BufferedReader(new InputStreamReader(urlConnection.getInputStream()));
55-
return reader.readLine();
56-
}
5770
}

0 commit comments

Comments
 (0)