Add OkHttpBuilder tests

This commit is contained in:
Kirill Kamakin
2021-11-13 19:03:13 +03:00
parent b6b11a9f49
commit 0ff9afa4c6
2 changed files with 43 additions and 1 deletions

View File

@@ -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)
}

View File

@@ -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)
}
}