Skip to content

Commit

Permalink
more expressive tests
Browse files Browse the repository at this point in the history
  • Loading branch information
yschimke committed Feb 1, 2025
1 parent ef36ee4 commit 7a6dc91
Show file tree
Hide file tree
Showing 3 changed files with 34 additions and 6 deletions.
7 changes: 6 additions & 1 deletion okhttp/src/jvmTest/kotlin/okhttp3/CallTest.kt
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ import assertk.assertions.isNotSameAs
import assertk.assertions.isNull
import assertk.assertions.isTrue
import assertk.assertions.matches
import assertk.assertions.prop
import assertk.assertions.startsWith
import assertk.fail
import java.io.FileNotFoundException
Expand Down Expand Up @@ -83,6 +84,7 @@ import okhttp3.CallEvent.ConnectStart
import okhttp3.CallEvent.ConnectionAcquired
import okhttp3.CallEvent.ConnectionReleased
import okhttp3.CallEvent.ResponseFailed
import okhttp3.CallEvent.RetryDecision
import okhttp3.CertificatePinner.Companion.pin
import okhttp3.Credentials.basic
import okhttp3.Headers.Companion.headersOf
Expand Down Expand Up @@ -1665,7 +1667,10 @@ open class CallTest {
"CallStart", "ConnectionAcquired", "RequestHeadersStart", "RequestHeadersEnd",
"RequestBodyStart", "RequestBodyEnd", "ResponseFailed", "RetryDecision", "ConnectionReleased", "CallFailed",
)
assertThat(listener.findEvent<CallEvent.RetryDecision>().reason).isEqualTo("retryOnConnectionFailure is false")
assertThat(listener.findEvent<RetryDecision>()).all {
prop(RetryDecision::reason).isEqualTo("retryOnConnectionFailure is false")
prop(RetryDecision::shouldRetry).isFalse()
}
listener.clearAllEvents()

val response3 = client.newCall(request1).execute()
Expand Down
8 changes: 7 additions & 1 deletion okhttp/src/jvmTest/kotlin/okhttp3/DuplexTest.kt
Original file line number Diff line number Diff line change
Expand Up @@ -15,12 +15,14 @@
*/
package okhttp3

import assertk.all
import assertk.assertThat
import assertk.assertions.contains
import assertk.assertions.containsExactly
import assertk.assertions.isEqualTo
import assertk.assertions.isNull
import assertk.assertions.isTrue
import assertk.assertions.prop
import java.io.IOException
import java.net.HttpURLConnection
import java.net.ProtocolException
Expand All @@ -33,6 +35,7 @@ import kotlin.test.assertFailsWith
import mockwebserver3.MockResponse
import mockwebserver3.MockWebServer
import mockwebserver3.internal.duplex.MockStreamHandler
import okhttp3.CallEvent.RetryDecision
import okhttp3.Credentials.basic
import okhttp3.Headers.Companion.headersOf
import okhttp3.RequestBody.Companion.toRequestBody
Expand Down Expand Up @@ -404,7 +407,10 @@ class DuplexTest {
"RequestHeadersEnd", "ResponseHeadersStart", "ResponseHeadersEnd", "ResponseBodyStart",
"ResponseBodyEnd", "ConnectionReleased", "CallEnd", "RequestFailed",
)
assertThat(listener.findEvent<CallEvent.RetryDecision>().reason).isEqualTo("redirect (301)")
assertThat(listener.findEvent<RetryDecision>()).all {
prop(RetryDecision::reason).isEqualTo("redirect (301)")
prop(RetryDecision::shouldRetry).isTrue()
}
}

/**
Expand Down
25 changes: 21 additions & 4 deletions okhttp/src/jvmTest/kotlin/okhttp3/EventListenerTest.kt
Original file line number Diff line number Diff line change
Expand Up @@ -15,16 +15,20 @@
*/
package okhttp3

import assertk.all
import assertk.assertThat
import assertk.assertions.contains
import assertk.assertions.containsExactly
import assertk.assertions.doesNotContain
import assertk.assertions.isEqualTo
import assertk.assertions.isFalse
import assertk.assertions.isIn
import assertk.assertions.isInstanceOf
import assertk.assertions.isNotNull
import assertk.assertions.isNull
import assertk.assertions.isSameAs
import assertk.assertions.isTrue
import assertk.assertions.prop
import java.io.File
import java.io.IOException
import java.io.InterruptedIOException
Expand Down Expand Up @@ -59,6 +63,7 @@ import okhttp3.CallEvent.ResponseBodyStart
import okhttp3.CallEvent.ResponseFailed
import okhttp3.CallEvent.ResponseHeadersEnd
import okhttp3.CallEvent.ResponseHeadersStart
import okhttp3.CallEvent.RetryDecision
import okhttp3.CallEvent.SecureConnectEnd
import okhttp3.CallEvent.SecureConnectStart
import okhttp3.MediaType.Companion.toMediaType
Expand Down Expand Up @@ -245,7 +250,10 @@ class EventListenerTest {
"ConnectStart", "ConnectEnd", "ConnectionAcquired", "RequestHeadersStart",
"RequestHeadersEnd", "ResponseFailed", "RetryDecision", "ConnectionReleased", "CallFailed",
)
assertThat(listener.findEvent<CallEvent.RetryDecision>().reason).isEqualTo("request was at least partially sent")
assertThat(listener.findEvent<RetryDecision>()).all {
prop(RetryDecision::reason).isEqualTo("request was at least partially sent")
prop(RetryDecision::shouldRetry).isFalse()
}
}

@Test
Expand Down Expand Up @@ -1650,7 +1658,10 @@ class EventListenerTest {
"ResponseHeadersEnd", "ResponseBodyStart", "ResponseBodyEnd", "ConnectionReleased",
"CallEnd",
)
assertThat(listener.findEvent<CallEvent.RetryDecision>().reason).isEqualTo("redirect (302)")
assertThat(listener.findEvent<RetryDecision>()).all {
prop(RetryDecision::reason).isEqualTo("redirect (302)")
prop(RetryDecision::shouldRetry).isTrue()
}
}

@Test
Expand Down Expand Up @@ -1698,7 +1709,10 @@ class EventListenerTest {
"ConnectionReleased",
"CallEnd",
)
assertThat(listener.findEvent<CallEvent.RetryDecision>().reason).isEqualTo("redirect (302)")
assertThat(listener.findEvent<RetryDecision>()).all {
prop(RetryDecision::reason).isEqualTo("redirect (302)")
prop(RetryDecision::shouldRetry).isTrue()
}
}

@Test
Expand Down Expand Up @@ -1920,7 +1934,10 @@ class EventListenerTest {
response.close()
assertThat(listener.recordedEventTypes())
.containsExactly("CallStart", "SatisfactionFailure", "RetryDecision", "CallEnd")
assertThat(listener.findEvent<CallEvent.RetryDecision>().reason).isEqualTo("No rule to retry request (504)")
assertThat(listener.findEvent<RetryDecision>()).all {
prop(RetryDecision::reason).isEqualTo("No rule to retry request (504)")
prop(RetryDecision::shouldRetry).isFalse()
}
}

@Test
Expand Down

0 comments on commit 7a6dc91

Please sign in to comment.