diff --git a/app/src/test/java/com/m57/hermescontrol/data/remote/DashboardSessionTokenRefresherTest.kt b/app/src/test/java/com/m57/hermescontrol/data/remote/DashboardSessionTokenRefresherTest.kt index 8a877134..84f4844f 100644 --- a/app/src/test/java/com/m57/hermescontrol/data/remote/DashboardSessionTokenRefresherTest.kt +++ b/app/src/test/java/com/m57/hermescontrol/data/remote/DashboardSessionTokenRefresherTest.kt @@ -1,5 +1,10 @@ package com.m57.hermescontrol.data.remote +import com.m57.hermescontrol.data.local.AuthManager +import io.mockk.every +import io.mockk.mockkObject +import io.mockk.unmockkAll +import io.mockk.verify import okhttp3.OkHttpClient import okhttp3.mockwebserver.MockResponse import okhttp3.mockwebserver.MockWebServer @@ -16,11 +21,14 @@ class DashboardSessionTokenRefresherTest { fun setUp() { server = MockWebServer() server.start() + mockkObject(OkHttpProvider) + every { OkHttpProvider.probe } returns OkHttpClient() } @AfterEach fun tearDown() { server.shutdown() + unmockkAll() } @Test @@ -67,4 +75,45 @@ class DashboardSessionTokenRefresherTest { assertNull(token) } + + @Test + fun refreshUpdatesAuthManagerOnSuccess() { + mockkObject(AuthManager) + every { AuthManager.baseUrl() } returns server.url("/").toString() + every { AuthManager.setToken(any()) } returns Unit + + server.enqueue( + MockResponse() + .setResponseCode(200) + .setBody(""""""), + ) + + val token = DashboardSessionTokenRefresher.refresh() + + assertEquals("mocked-token", token) + verify { AuthManager.setToken("mocked-token") } + } + + @Test + fun refreshReturnsNullOnException() { + mockkObject(AuthManager) + every { AuthManager.baseUrl() } throws RuntimeException("Network Error") + + val token = DashboardSessionTokenRefresher.refresh() + + assertNull(token) + } + + @Test + fun refreshReturnsNullWhenFetchReturnsNull() { + mockkObject(AuthManager) + every { AuthManager.baseUrl() } returns server.url("/").toString() + // No token returned from fetch + server.enqueue(MockResponse().setResponseCode(200).setBody("")) + + val token = DashboardSessionTokenRefresher.refresh() + + assertNull(token) + verify(exactly = 0) { AuthManager.setToken(any()) } + } }