Add OkHttpBuilder tests
This commit is contained in:
@@ -3,13 +3,15 @@ package gq.kirmanak.mealie.data.auth.impl
|
|||||||
import okhttp3.Interceptor
|
import okhttp3.Interceptor
|
||||||
import okhttp3.Response
|
import okhttp3.Response
|
||||||
|
|
||||||
|
const val AUTHORIZATION_HEADER = "Authorization"
|
||||||
|
|
||||||
class AuthOkHttpInterceptor(token: String) : Interceptor {
|
class AuthOkHttpInterceptor(token: String) : Interceptor {
|
||||||
private val headerValue = "Bearer $token"
|
private val headerValue = "Bearer $token"
|
||||||
|
|
||||||
override fun intercept(chain: Interceptor.Chain): Response {
|
override fun intercept(chain: Interceptor.Chain): Response {
|
||||||
val newRequest = chain.request()
|
val newRequest = chain.request()
|
||||||
.newBuilder()
|
.newBuilder()
|
||||||
.addHeader("Authorization", headerValue)
|
.addHeader(AUTHORIZATION_HEADER, headerValue)
|
||||||
.build()
|
.build()
|
||||||
return chain.proceed(newRequest)
|
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