diff --git a/app/src/test/java/gq/kirmanak/mealient/data/auth/impl/AuthRepoImplTest.kt b/app/src/test/java/gq/kirmanak/mealient/data/auth/impl/AuthRepoImplTest.kt index 64f828b..e180433 100644 --- a/app/src/test/java/gq/kirmanak/mealient/data/auth/impl/AuthRepoImplTest.kt +++ b/app/src/test/java/gq/kirmanak/mealient/data/auth/impl/AuthRepoImplTest.kt @@ -4,8 +4,10 @@ import com.google.common.truth.Truth.assertThat import gq.kirmanak.mealient.data.auth.AuthDataSource import gq.kirmanak.mealient.data.auth.AuthRepo import gq.kirmanak.mealient.data.auth.AuthStorage +import gq.kirmanak.mealient.data.baseurl.BaseURLStorage import gq.kirmanak.mealient.logging.Logger 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_TOKEN import gq.kirmanak.mealient.test.AuthImplTestData.TEST_USERNAME @@ -24,6 +26,9 @@ class AuthRepoImplTest { @MockK lateinit var dataSource: AuthDataSource + @MockK + lateinit var baseURLStorage: BaseURLStorage + @MockK(relaxUnitFun = true) lateinit var storage: AuthStorage @@ -35,7 +40,7 @@ class AuthRepoImplTest { @Before fun setUp() { MockKAnnotations.init(this) - subject = AuthRepoImpl(storage, dataSource, logger) + subject = AuthRepoImpl(storage, dataSource, baseURLStorage, logger) } @Test @@ -46,7 +51,14 @@ class AuthRepoImplTest { @Test 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) coVerifyAll { storage.setAuthHeader(TEST_AUTH_HEADER) @@ -58,7 +70,8 @@ class AuthRepoImplTest { @Test 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", "") } confirmVerified(storage) } @@ -94,10 +107,13 @@ class AuthRepoImplTest { fun `when invalidate with credentials then calls authenticate`() = runTest { coEvery { storage.getEmail() } returns TEST_USERNAME 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() 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 { coEvery { storage.getEmail() } returns "invalid" 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() coVerify { storage.setEmail(null) } }