[Add edge case tests for DashboardSessionTokenRefresher] (#694)
* Add edge case testing for DashboardSessionTokenRefresher Added tests to `DashboardSessionTokenRefresherTest.kt` to cover cases where `refresh()` catches exceptions or where `fetch()` returns null. Included a happy-path test for `refresh()`. * Add edge case testing for DashboardSessionTokenRefresher Added tests to `DashboardSessionTokenRefresherTest.kt` to cover cases where `refresh()` catches exceptions or where `fetch()` returns null. Included a happy-path test for `refresh()`.
This commit is contained in:
1 file changed
+49
+49
@@ -1,5 +1,10 @@
|
|||||||
package com.m57.hermescontrol.data.remote
|
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.OkHttpClient
|
||||||
import okhttp3.mockwebserver.MockResponse
|
import okhttp3.mockwebserver.MockResponse
|
||||||
import okhttp3.mockwebserver.MockWebServer
|
import okhttp3.mockwebserver.MockWebServer
|
||||||
@@ -16,11 +21,14 @@ class DashboardSessionTokenRefresherTest {
|
|||||||
fun setUp() {
|
fun setUp() {
|
||||||
server = MockWebServer()
|
server = MockWebServer()
|
||||||
server.start()
|
server.start()
|
||||||
|
mockkObject(OkHttpProvider)
|
||||||
|
every { OkHttpProvider.probe } returns OkHttpClient()
|
||||||
}
|
}
|
||||||
|
|
||||||
@AfterEach
|
@AfterEach
|
||||||
fun tearDown() {
|
fun tearDown() {
|
||||||
server.shutdown()
|
server.shutdown()
|
||||||
|
unmockkAll()
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -67,4 +75,45 @@ class DashboardSessionTokenRefresherTest {
|
|||||||
|
|
||||||
assertNull(token)
|
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("""<script>window.__HERMES_SESSION_TOKEN__ = "mocked-token";</script>"""),
|
||||||
|
)
|
||||||
|
|
||||||
|
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("<html></html>"))
|
||||||
|
|
||||||
|
val token = DashboardSessionTokenRefresher.refresh()
|
||||||
|
|
||||||
|
assertNull(token)
|
||||||
|
verify(exactly = 0) { AuthManager.setToken(any()) }
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Reference in new issue
Block a user