From 0ff9afa4c67413216062aec40af032b506ce1653 Mon Sep 17 00:00:00 2001 From: Kirill Kamakin Date: Sat, 13 Nov 2021 19:03:13 +0300 Subject: [PATCH] Add OkHttpBuilder tests --- .../data/auth/impl/AuthOkHttpInterceptor.kt | 4 +- .../mealie/data/impl/OkHttpBuilderTest.kt | 40 +++++++++++++++++++ 2 files changed, 43 insertions(+), 1 deletion(-) create mode 100644 app/src/test/java/gq/kirmanak/mealie/data/impl/OkHttpBuilderTest.kt diff --git a/app/src/main/java/gq/kirmanak/mealie/data/auth/impl/AuthOkHttpInterceptor.kt b/app/src/main/java/gq/kirmanak/mealie/data/auth/impl/AuthOkHttpInterceptor.kt index 0c3b8fc..1742dab 100644 --- a/app/src/main/java/gq/kirmanak/mealie/data/auth/impl/AuthOkHttpInterceptor.kt +++ b/app/src/main/java/gq/kirmanak/mealie/data/auth/impl/AuthOkHttpInterceptor.kt @@ -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) } diff --git a/app/src/test/java/gq/kirmanak/mealie/data/impl/OkHttpBuilderTest.kt b/app/src/test/java/gq/kirmanak/mealie/data/impl/OkHttpBuilderTest.kt new file mode 100644 index 0000000..0c0cb1f --- /dev/null +++ b/app/src/test/java/gq/kirmanak/mealie/data/impl/OkHttpBuilderTest.kt @@ -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) + } +} \ No newline at end of file