Skip to content

Commit 3748ca3

Browse files
dmanluckoral--
authored andcommitted
Add a condition to simulate a response timeout
- Update README
1 parent d420461 commit 3748ca3

File tree

6 files changed

+48
-2
lines changed

6 files changed

+48
-2
lines changed

README.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,13 @@ statusCode : 200
5959
connectionFailure: true
6060
```
6161

62+
Alternatively, you can specify not getting a response by simulating a timeout with `timeoutFailure` to `true`:
63+
64+
```yaml
65+
statusCode : 200
66+
timeoutFailure: true
67+
```
68+
6269
Code without MockWebServer path dispatcher:
6370

6471
```kotlin

dispatcher/src/main/kotlin/pl/droidsonroids/testing/mockwebserver/Fixture.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ internal class Fixture {
1010
internal set
1111
var connectionFailure: Boolean = false
1212
internal set
13+
var timeoutFailure: Boolean = false
14+
internal set
1315

1416
internal fun hasJsonBody() = body?.isPossibleJson() ?: false
1517
}

dispatcher/src/main/kotlin/pl/droidsonroids/testing/mockwebserver/MockResponseBuilder.kt

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,13 @@ internal class MockResponseBuilder constructor(private val parser: ResourcesPars
1919
mockResponse.addHeader(it)
2020
}
2121

22-
if (fixture.connectionFailure) {
23-
mockResponse.socketPolicy = SocketPolicy.DISCONNECT_AT_START
22+
when {
23+
fixture.connectionFailure -> {
24+
mockResponse.socketPolicy = SocketPolicy.DISCONNECT_AT_START
25+
}
26+
fixture.timeoutFailure -> {
27+
mockResponse.socketPolicy = SocketPolicy.NO_RESPONSE
28+
}
2429
}
2530

2631
return mockResponse

dispatcher/src/test/kotlin/pl/droidsonroids/testing/mockwebserver/MockResponseBuilderTest.kt

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,4 +52,14 @@ internal class MockResponseBuilderTest {
5252
assertThat(mockResponse.getBody()).isNull()
5353
assertThat(mockResponse.socketPolicy).isEqualTo(SocketPolicy.DISCONNECT_AT_START)
5454
}
55+
56+
@Test
57+
fun `NO_RESPONSE set when timeout failure is true`() {
58+
fixture.statusCode = 200
59+
fixture.timeoutFailure = true
60+
val mockResponse = builder.buildMockResponse("")
61+
assertThat(mockResponse.status).contains("200")
62+
assertThat(mockResponse.getBody()).isNull()
63+
assertThat(mockResponse.socketPolicy).isEqualTo(SocketPolicy.NO_RESPONSE)
64+
}
5565
}

dispatcher/src/test/kotlin/pl/droidsonroids/testing/mockwebserver/YamlResourcesParserTest.kt

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ class YamlResourcesParserTest {
3030
assertThat(fixture.headers).containsOnly("Content-Type: application/json")
3131
assertThat(fixture.body).isEqualToIgnoringWhitespace("""{"test": null}""")
3232
assertThat(fixture.connectionFailure).isFalse
33+
assertThat(fixture.timeoutFailure).isFalse
3334
}
3435

3536
@Test
@@ -39,6 +40,7 @@ class YamlResourcesParserTest {
3940
assertThat(fixture.headers).containsOnly("Content-Type: application/json")
4041
assertThat(fixture.body).isEqualToIgnoringWhitespace("""{"test": "\uD83D\uDC31"}""")
4142
assertThat(fixture.connectionFailure).isFalse
43+
assertThat(fixture.timeoutFailure).isFalse
4244
}
4345

4446
@Test
@@ -48,6 +50,7 @@ class YamlResourcesParserTest {
4850
assertThat(fixture.headers).isEmpty()
4951
assertThat(fixture.body).isEqualToIgnoringWhitespace("[]")
5052
assertThat(fixture.connectionFailure).isFalse
53+
assertThat(fixture.timeoutFailure).isFalse
5154
}
5255

5356
@Test
@@ -60,6 +63,7 @@ class YamlResourcesParserTest {
6063
)
6164
assertThat(fixture.body).isEqualTo("""{"test"}""")
6265
assertThat(fixture.connectionFailure).isFalse
66+
assertThat(fixture.timeoutFailure).isFalse
6367
}
6468

6569
@Test
@@ -72,6 +76,7 @@ class YamlResourcesParserTest {
7276
)
7377
assertThat(fixture.body).isNull()
7478
assertThat(fixture.connectionFailure).isFalse
79+
assertThat(fixture.timeoutFailure).isFalse
7580
}
7681

7782
@Test
@@ -83,6 +88,19 @@ class YamlResourcesParserTest {
8388
)
8489
assertThat(fixture.body).isNull()
8590
assertThat(fixture.connectionFailure).isTrue
91+
assertThat(fixture.timeoutFailure).isFalse
92+
}
93+
94+
@Test
95+
fun `parses response with timeout failure`() {
96+
val fixture = parser.parseFrom("timeout_failure")
97+
assertThat(fixture.statusCode).isEqualTo(200)
98+
assertThat(fixture.headers).containsExactlyInAnyOrder(
99+
"Content-Type: text/plain",
100+
)
101+
assertThat(fixture.body).isNull()
102+
assertThat(fixture.connectionFailure).isFalse
103+
assertThat(fixture.timeoutFailure).isTrue
86104
}
87105

88106
@Test
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
statusCode: 200
2+
headers:
3+
- 'Content-Type: text/plain'
4+
timeoutFailure: true

0 commit comments

Comments
 (0)