Add From24AuthMigrationExecutorTest tests
This commit is contained in:
@@ -8,9 +8,7 @@ import dagger.hilt.android.qualifiers.ApplicationContext
|
|||||||
import dagger.hilt.android.testing.HiltAndroidTest
|
import dagger.hilt.android.testing.HiltAndroidTest
|
||||||
import gq.kirmanak.mealient.data.auth.AuthStorage
|
import gq.kirmanak.mealient.data.auth.AuthStorage
|
||||||
import gq.kirmanak.mealient.data.auth.impl.AuthStorageImpl.Companion.AUTH_HEADER_KEY
|
import gq.kirmanak.mealient.data.auth.impl.AuthStorageImpl.Companion.AUTH_HEADER_KEY
|
||||||
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.FakeLogger
|
|
||||||
import gq.kirmanak.mealient.test.HiltRobolectricTest
|
import gq.kirmanak.mealient.test.HiltRobolectricTest
|
||||||
import io.mockk.MockKAnnotations
|
import io.mockk.MockKAnnotations
|
||||||
import kotlinx.coroutines.ExperimentalCoroutinesApi
|
import kotlinx.coroutines.ExperimentalCoroutinesApi
|
||||||
@@ -28,8 +26,6 @@ class AuthStorageImplTest : HiltRobolectricTest() {
|
|||||||
@ApplicationContext
|
@ApplicationContext
|
||||||
lateinit var context: Context
|
lateinit var context: Context
|
||||||
|
|
||||||
private val logger: Logger = FakeLogger()
|
|
||||||
|
|
||||||
lateinit var subject: AuthStorage
|
lateinit var subject: AuthStorage
|
||||||
|
|
||||||
lateinit var sharedPreferences: SharedPreferences
|
lateinit var sharedPreferences: SharedPreferences
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ import javax.inject.Inject
|
|||||||
@OptIn(ExperimentalCoroutinesApi::class)
|
@OptIn(ExperimentalCoroutinesApi::class)
|
||||||
@HiltAndroidTest
|
@HiltAndroidTest
|
||||||
class DisclaimerStorageImplTest : HiltRobolectricTest() {
|
class DisclaimerStorageImplTest : HiltRobolectricTest() {
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
lateinit var subject: DisclaimerStorageImpl
|
lateinit var subject: DisclaimerStorageImpl
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,81 @@
|
|||||||
|
package gq.kirmanak.mealient.data.migration
|
||||||
|
|
||||||
|
import android.content.Context
|
||||||
|
import android.content.SharedPreferences
|
||||||
|
import androidx.core.content.edit
|
||||||
|
import com.google.common.truth.Truth.assertThat
|
||||||
|
import dagger.hilt.android.qualifiers.ApplicationContext
|
||||||
|
import dagger.hilt.android.testing.HiltAndroidTest
|
||||||
|
import gq.kirmanak.mealient.data.auth.AuthRepo
|
||||||
|
import gq.kirmanak.mealient.test.HiltRobolectricTest
|
||||||
|
import io.mockk.MockKAnnotations
|
||||||
|
import io.mockk.coEvery
|
||||||
|
import io.mockk.coVerify
|
||||||
|
import io.mockk.impl.annotations.MockK
|
||||||
|
import kotlinx.coroutines.ExperimentalCoroutinesApi
|
||||||
|
import kotlinx.coroutines.test.runTest
|
||||||
|
import org.junit.Before
|
||||||
|
import org.junit.Test
|
||||||
|
import java.io.IOException
|
||||||
|
import javax.inject.Inject
|
||||||
|
|
||||||
|
@OptIn(ExperimentalCoroutinesApi::class)
|
||||||
|
@HiltAndroidTest
|
||||||
|
class From24AuthMigrationExecutorTest : HiltRobolectricTest() {
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
@ApplicationContext
|
||||||
|
lateinit var context: Context
|
||||||
|
|
||||||
|
@MockK(relaxUnitFun = true)
|
||||||
|
lateinit var authRepo: AuthRepo
|
||||||
|
|
||||||
|
private lateinit var subject: MigrationExecutor
|
||||||
|
private lateinit var sharedPreferences: SharedPreferences
|
||||||
|
|
||||||
|
@Before
|
||||||
|
fun setUp() {
|
||||||
|
MockKAnnotations.init(this)
|
||||||
|
sharedPreferences = context.getSharedPreferences("test", Context.MODE_PRIVATE)
|
||||||
|
subject = From24AuthMigrationExecutor(sharedPreferences, authRepo, logger)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun `when there were email and password expect authentication`() = runTest {
|
||||||
|
sharedPreferences.edit(commit = true) {
|
||||||
|
putString("email", "email_value")
|
||||||
|
putString("password", "pass_value")
|
||||||
|
}
|
||||||
|
subject.executeMigration()
|
||||||
|
coVerify { authRepo.authenticate(eq("email_value"), eq("pass_value")) }
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun `when there were email and password expect them gone`() = runTest {
|
||||||
|
sharedPreferences.edit(commit = true) {
|
||||||
|
putString("email", "email_value")
|
||||||
|
putString("password", "pass_value")
|
||||||
|
}
|
||||||
|
subject.executeMigration()
|
||||||
|
assertThat(sharedPreferences.getString("email", null)).isNull()
|
||||||
|
assertThat(sharedPreferences.getString("password", null)).isNull()
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun `when there is email and password but authenticate fails expect values gone`() = runTest {
|
||||||
|
sharedPreferences.edit(commit = true) {
|
||||||
|
putString("email", "email_value")
|
||||||
|
putString("password", "pass_value")
|
||||||
|
}
|
||||||
|
coEvery { authRepo.authenticate(any(), any()) } throws IOException()
|
||||||
|
subject.executeMigration()
|
||||||
|
assertThat(sharedPreferences.getString("email", null)).isNull()
|
||||||
|
assertThat(sharedPreferences.getString("password", null)).isNull()
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun `when there was no email and password expect no authentication`() = runTest {
|
||||||
|
subject.executeMigration()
|
||||||
|
coVerify(inverse = true) { authRepo.authenticate(any(), any()) }
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -3,6 +3,7 @@ package gq.kirmanak.mealient.test
|
|||||||
import androidx.test.ext.junit.runners.AndroidJUnit4
|
import androidx.test.ext.junit.runners.AndroidJUnit4
|
||||||
import dagger.hilt.android.testing.HiltAndroidRule
|
import dagger.hilt.android.testing.HiltAndroidRule
|
||||||
import dagger.hilt.android.testing.HiltTestApplication
|
import dagger.hilt.android.testing.HiltTestApplication
|
||||||
|
import gq.kirmanak.mealient.logging.Logger
|
||||||
import org.junit.Before
|
import org.junit.Before
|
||||||
import org.junit.Rule
|
import org.junit.Rule
|
||||||
import org.junit.runner.RunWith
|
import org.junit.runner.RunWith
|
||||||
@@ -15,6 +16,8 @@ abstract class HiltRobolectricTest {
|
|||||||
@get:Rule
|
@get:Rule
|
||||||
var hiltRule = HiltAndroidRule(this)
|
var hiltRule = HiltAndroidRule(this)
|
||||||
|
|
||||||
|
protected val logger: Logger = FakeLogger()
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
fun inject() {
|
fun inject() {
|
||||||
hiltRule.inject()
|
hiltRule.inject()
|
||||||
|
|||||||
Reference in New Issue
Block a user