Fix AuthRepoImplTest
This commit is contained in:
@@ -4,8 +4,10 @@ import com.google.common.truth.Truth.assertThat
|
|||||||
import gq.kirmanak.mealient.data.auth.AuthDataSource
|
import gq.kirmanak.mealient.data.auth.AuthDataSource
|
||||||
import gq.kirmanak.mealient.data.auth.AuthRepo
|
import gq.kirmanak.mealient.data.auth.AuthRepo
|
||||||
import gq.kirmanak.mealient.data.auth.AuthStorage
|
import gq.kirmanak.mealient.data.auth.AuthStorage
|
||||||
|
import gq.kirmanak.mealient.data.baseurl.BaseURLStorage
|
||||||
import gq.kirmanak.mealient.logging.Logger
|
import gq.kirmanak.mealient.logging.Logger
|
||||||
import gq.kirmanak.mealient.test.AuthImplTestData.TEST_AUTH_HEADER
|
import gq.kirmanak.mealient.test.AuthImplTestData.TEST_AUTH_HEADER
|
||||||
|
import gq.kirmanak.mealient.test.AuthImplTestData.TEST_BASE_URL
|
||||||
import gq.kirmanak.mealient.test.AuthImplTestData.TEST_PASSWORD
|
import gq.kirmanak.mealient.test.AuthImplTestData.TEST_PASSWORD
|
||||||
import gq.kirmanak.mealient.test.AuthImplTestData.TEST_TOKEN
|
import gq.kirmanak.mealient.test.AuthImplTestData.TEST_TOKEN
|
||||||
import gq.kirmanak.mealient.test.AuthImplTestData.TEST_USERNAME
|
import gq.kirmanak.mealient.test.AuthImplTestData.TEST_USERNAME
|
||||||
@@ -24,6 +26,9 @@ class AuthRepoImplTest {
|
|||||||
@MockK
|
@MockK
|
||||||
lateinit var dataSource: AuthDataSource
|
lateinit var dataSource: AuthDataSource
|
||||||
|
|
||||||
|
@MockK
|
||||||
|
lateinit var baseURLStorage: BaseURLStorage
|
||||||
|
|
||||||
@MockK(relaxUnitFun = true)
|
@MockK(relaxUnitFun = true)
|
||||||
lateinit var storage: AuthStorage
|
lateinit var storage: AuthStorage
|
||||||
|
|
||||||
@@ -35,7 +40,7 @@ class AuthRepoImplTest {
|
|||||||
@Before
|
@Before
|
||||||
fun setUp() {
|
fun setUp() {
|
||||||
MockKAnnotations.init(this)
|
MockKAnnotations.init(this)
|
||||||
subject = AuthRepoImpl(storage, dataSource, logger)
|
subject = AuthRepoImpl(storage, dataSource, baseURLStorage, logger)
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -46,7 +51,14 @@ class AuthRepoImplTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun `when authenticate successfully then saves to storage`() = runTest {
|
fun `when authenticate successfully then saves to storage`() = runTest {
|
||||||
coEvery { dataSource.authenticate(eq(TEST_USERNAME), eq(TEST_PASSWORD)) } returns TEST_TOKEN
|
coEvery {
|
||||||
|
dataSource.authenticate(
|
||||||
|
eq(TEST_USERNAME),
|
||||||
|
eq(TEST_PASSWORD),
|
||||||
|
eq(TEST_BASE_URL)
|
||||||
|
)
|
||||||
|
} returns TEST_TOKEN
|
||||||
|
coEvery { baseURLStorage.requireBaseURL() } returns TEST_BASE_URL
|
||||||
subject.authenticate(TEST_USERNAME, TEST_PASSWORD)
|
subject.authenticate(TEST_USERNAME, TEST_PASSWORD)
|
||||||
coVerifyAll {
|
coVerifyAll {
|
||||||
storage.setAuthHeader(TEST_AUTH_HEADER)
|
storage.setAuthHeader(TEST_AUTH_HEADER)
|
||||||
@@ -58,7 +70,8 @@ class AuthRepoImplTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun `when authenticate fails then does not change storage`() = runTest {
|
fun `when authenticate fails then does not change storage`() = runTest {
|
||||||
coEvery { dataSource.authenticate(any(), any()) } throws RuntimeException()
|
coEvery { dataSource.authenticate(any(), any(), any()) } throws RuntimeException()
|
||||||
|
coEvery { baseURLStorage.requireBaseURL() } returns TEST_BASE_URL
|
||||||
runCatching { subject.authenticate("invalid", "") }
|
runCatching { subject.authenticate("invalid", "") }
|
||||||
confirmVerified(storage)
|
confirmVerified(storage)
|
||||||
}
|
}
|
||||||
@@ -94,10 +107,13 @@ class AuthRepoImplTest {
|
|||||||
fun `when invalidate with credentials then calls authenticate`() = runTest {
|
fun `when invalidate with credentials then calls authenticate`() = runTest {
|
||||||
coEvery { storage.getEmail() } returns TEST_USERNAME
|
coEvery { storage.getEmail() } returns TEST_USERNAME
|
||||||
coEvery { storage.getPassword() } returns TEST_PASSWORD
|
coEvery { storage.getPassword() } returns TEST_PASSWORD
|
||||||
coEvery { dataSource.authenticate(eq(TEST_USERNAME), eq(TEST_PASSWORD)) } returns TEST_TOKEN
|
coEvery { baseURLStorage.requireBaseURL() } returns TEST_BASE_URL
|
||||||
|
coEvery {
|
||||||
|
dataSource.authenticate(eq(TEST_USERNAME), eq(TEST_PASSWORD), eq(TEST_BASE_URL))
|
||||||
|
} returns TEST_TOKEN
|
||||||
subject.invalidateAuthHeader()
|
subject.invalidateAuthHeader()
|
||||||
coVerifyAll {
|
coVerifyAll {
|
||||||
dataSource.authenticate(eq(TEST_USERNAME), eq(TEST_PASSWORD))
|
dataSource.authenticate(eq(TEST_USERNAME), eq(TEST_PASSWORD), eq(TEST_BASE_URL))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -105,7 +121,8 @@ class AuthRepoImplTest {
|
|||||||
fun `when invalidate with credentials and auth fails then clears email`() = runTest {
|
fun `when invalidate with credentials and auth fails then clears email`() = runTest {
|
||||||
coEvery { storage.getEmail() } returns "invalid"
|
coEvery { storage.getEmail() } returns "invalid"
|
||||||
coEvery { storage.getPassword() } returns ""
|
coEvery { storage.getPassword() } returns ""
|
||||||
coEvery { dataSource.authenticate(any(), any()) } throws RuntimeException()
|
coEvery { baseURLStorage.requireBaseURL() } returns TEST_BASE_URL
|
||||||
|
coEvery { dataSource.authenticate(any(), any(), any()) } throws RuntimeException()
|
||||||
subject.invalidateAuthHeader()
|
subject.invalidateAuthHeader()
|
||||||
coVerify { storage.setEmail(null) }
|
coVerify { storage.setEmail(null) }
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user