Add caldav subscription test

pull/1381/head
Alex Baker 5 years ago
parent 11fdf0f825
commit e2f253da98

@ -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 = """
<?xml version="1.0"?>

@ -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))
}

@ -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
)
}
}
Loading…
Cancel
Save