Add OkHttpBuilder tests
This commit is contained in:
@@ -3,13 +3,15 @@ package gq.kirmanak.mealie.data.auth.impl
|
||||
import okhttp3.Interceptor
|
||||
import okhttp3.Response
|
||||
|
||||
const val AUTHORIZATION_HEADER = "Authorization"
|
||||
|
||||
class AuthOkHttpInterceptor(token: String) : Interceptor {
|
||||
private val headerValue = "Bearer $token"
|
||||
|
||||
override fun intercept(chain: Interceptor.Chain): Response {
|
||||
val newRequest = chain.request()
|
||||
.newBuilder()
|
||||
.addHeader("Authorization", headerValue)
|
||||
.addHeader(AUTHORIZATION_HEADER, headerValue)
|
||||
.build()
|
||||
return chain.proceed(newRequest)
|
||||
}
|
||||
|
||||
@@ -0,0 +1,40 @@
|
||||
package gq.kirmanak.mealie.data.impl
|
||||
|
||||
import com.google.common.truth.Truth.assertThat
|
||||
import dagger.hilt.android.testing.HiltAndroidTest
|
||||
import gq.kirmanak.mealie.data.auth.impl.AUTHORIZATION_HEADER
|
||||
import gq.kirmanak.mealie.data.auth.impl.AuthImplTestData.TEST_TOKEN
|
||||
import gq.kirmanak.mealie.data.auth.impl.MockServerTest
|
||||
import okhttp3.OkHttpClient
|
||||
import okhttp3.Request
|
||||
import okhttp3.mockwebserver.MockResponse
|
||||
import org.junit.Test
|
||||
import javax.inject.Inject
|
||||
|
||||
@HiltAndroidTest
|
||||
class OkHttpBuilderTest : MockServerTest() {
|
||||
|
||||
@Inject
|
||||
lateinit var subject: OkHttpBuilder
|
||||
|
||||
@Test
|
||||
fun `when token null then no auth header`() {
|
||||
val client = subject.buildOkHttp(null)
|
||||
val header = sendRequestAndExtractAuthHeader(client)
|
||||
assertThat(header).isNull()
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `when token isn't null then auth header contains token`() {
|
||||
val client = subject.buildOkHttp(TEST_TOKEN)
|
||||
val header = sendRequestAndExtractAuthHeader(client)
|
||||
assertThat(header).isEqualTo("Bearer $TEST_TOKEN")
|
||||
}
|
||||
|
||||
private fun sendRequestAndExtractAuthHeader(client: OkHttpClient): String? {
|
||||
mockServer.enqueue(MockResponse())
|
||||
val request = Request.Builder().url(serverUrl).get().build()
|
||||
client.newCall(request).execute()
|
||||
return mockServer.takeRequest().getHeader(AUTHORIZATION_HEADER)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user