From e2f253da98ad5a16ce499cf77d6f602dfb9b52c7 Mon Sep 17 00:00:00 2001 From: Alex Baker Date: Tue, 23 Feb 2021 14:45:50 -0600 Subject: [PATCH] Add caldav subscription test --- .../tasks/caldav/CaldavSynchronizerTest.kt | 36 +------------- .../java/org/tasks/caldav/CaldavTest.kt | 47 +++++++++++++++++++ .../tasks/caldav/CaldavSubscriptionTest.kt | 31 ++++++++++++ 3 files changed, 79 insertions(+), 35 deletions(-) create mode 100644 app/src/androidTest/java/org/tasks/caldav/CaldavTest.kt create mode 100644 app/src/androidTestGoogleplay/java/org/tasks/caldav/CaldavSubscriptionTest.kt diff --git a/app/src/androidTest/java/org/tasks/caldav/CaldavSynchronizerTest.kt b/app/src/androidTest/java/org/tasks/caldav/CaldavSynchronizerTest.kt index cfafc97c0..71e63b074 100644 --- a/app/src/androidTest/java/org/tasks/caldav/CaldavSynchronizerTest.kt +++ b/app/src/androidTest/java/org/tasks/caldav/CaldavSynchronizerTest.kt @@ -5,43 +5,24 @@ import com.todoroo.astrid.helper.UUIDHelper import dagger.hilt.android.testing.HiltAndroidTest import dagger.hilt.android.testing.UninstallModules import kotlinx.coroutines.runBlocking -import okhttp3.mockwebserver.MockResponse -import okhttp3.mockwebserver.MockWebServer -import org.junit.After import org.junit.Assert.* import org.junit.Before import org.junit.Test -import org.tasks.R import org.tasks.data.CaldavAccount import org.tasks.data.CaldavCalendar -import org.tasks.data.CaldavDao -import org.tasks.data.TaskDao -import org.tasks.injection.InjectingTestCase import org.tasks.injection.ProductionModule import org.tasks.makers.CaldavTaskMaker.CALENDAR import org.tasks.makers.CaldavTaskMaker.ETAG import org.tasks.makers.CaldavTaskMaker.OBJECT import org.tasks.makers.CaldavTaskMaker.newCaldavTask -import org.tasks.preferences.Preferences -import org.tasks.security.KeyStoreEncryption -import javax.inject.Inject @UninstallModules(ProductionModule::class) @HiltAndroidTest -class CaldavSynchronizerTest : InjectingTestCase() { - @Inject lateinit var synchronizer: CaldavSynchronizer - @Inject lateinit var encryption: KeyStoreEncryption - @Inject lateinit var preferences: Preferences - @Inject lateinit var caldavDao: CaldavDao - @Inject lateinit var taskDao: TaskDao - private val server = MockWebServer() - lateinit var account: CaldavAccount +class CaldavSynchronizerTest : CaldavTest() { @Before override fun setUp() = runBlocking { super.setUp() - preferences.setBoolean(R.string.p_debug_pro, true) - server.start() account = CaldavAccount().apply { uuid = UUIDHelper.newUUID() username = "username" @@ -51,9 +32,6 @@ class CaldavSynchronizerTest : InjectingTestCase() { } } - @After - fun after() = server.shutdown() - @Test fun setMessageOnError() = runBlocking { enqueueFailure(500) @@ -110,18 +88,6 @@ class CaldavSynchronizerTest : InjectingTestCase() { assertEquals("Test task", taskDao.fetch(caldavTask.task)!!.title) } - private fun enqueue(vararg responses: String) = responses.forEach { - server.enqueue( - MockResponse() - .setResponseCode(207) - .setHeader("Content-Type", "text/xml; charset=\"utf-8\"") - .setBody(it) - ) - } - - private fun enqueueFailure(code: Int = 500) = - server.enqueue(MockResponse().setResponseCode(code)) - companion object { private val OC_SHARE_PROPFIND = """ diff --git a/app/src/androidTest/java/org/tasks/caldav/CaldavTest.kt b/app/src/androidTest/java/org/tasks/caldav/CaldavTest.kt new file mode 100644 index 000000000..d7c01b6bb --- /dev/null +++ b/app/src/androidTest/java/org/tasks/caldav/CaldavTest.kt @@ -0,0 +1,47 @@ +package org.tasks.caldav + +import com.todoroo.astrid.dao.TaskDao +import okhttp3.mockwebserver.MockResponse +import okhttp3.mockwebserver.MockWebServer +import org.junit.After +import org.junit.Before +import org.tasks.R +import org.tasks.data.CaldavAccount +import org.tasks.data.CaldavDao +import org.tasks.injection.InjectingTestCase +import org.tasks.preferences.Preferences +import org.tasks.security.KeyStoreEncryption +import javax.inject.Inject + +abstract class CaldavTest : InjectingTestCase() { + @Inject lateinit var synchronizer: CaldavSynchronizer + @Inject lateinit var encryption: KeyStoreEncryption + @Inject lateinit var preferences: Preferences + @Inject lateinit var caldavDao: CaldavDao + @Inject lateinit var taskDao: TaskDao + protected val server = MockWebServer() + protected lateinit var account: CaldavAccount + + @Before + override fun setUp() { + super.setUp() + + preferences.setBoolean(R.string.p_debug_pro, true) + server.start() + } + + @After + fun after() = server.shutdown() + + protected fun enqueue(vararg responses: String) = responses.forEach { + server.enqueue( + MockResponse() + .setResponseCode(207) + .setHeader("Content-Type", "text/xml; charset=\"utf-8\"") + .setBody(it) + ) + } + + protected fun enqueueFailure(code: Int = 500) = + server.enqueue(MockResponse().setResponseCode(code)) +} \ No newline at end of file diff --git a/app/src/androidTestGoogleplay/java/org/tasks/caldav/CaldavSubscriptionTest.kt b/app/src/androidTestGoogleplay/java/org/tasks/caldav/CaldavSubscriptionTest.kt new file mode 100644 index 000000000..82528f81b --- /dev/null +++ b/app/src/androidTestGoogleplay/java/org/tasks/caldav/CaldavSubscriptionTest.kt @@ -0,0 +1,31 @@ +package org.tasks.caldav + +import com.todoroo.astrid.helper.UUIDHelper +import dagger.hilt.android.testing.HiltAndroidTest +import dagger.hilt.android.testing.UninstallModules +import kotlinx.coroutines.runBlocking +import org.junit.Assert.assertEquals +import org.junit.Test +import org.tasks.R +import org.tasks.data.CaldavAccount +import org.tasks.injection.ProductionModule + +@UninstallModules(ProductionModule::class) +@HiltAndroidTest +class CaldavSubscriptionTest : CaldavTest() { + @Test + fun cantSyncWithoutPro() = runBlocking { + preferences.setBoolean(R.string.p_debug_pro, false) + account = CaldavAccount().apply { + uuid = UUIDHelper.newUUID() + id = caldavDao.insert(this) + } + + synchronizer.sync(account) + + assertEquals( + context.getString(R.string.requires_pro_subscription), + caldavDao.getAccountByUuid(account.uuid!!)?.error + ) + } +} \ No newline at end of file