Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/bitfireAT/ical4android.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRicki Hirner <hirner@bitfire.at>2022-06-16 20:10:01 +0300
committerRicki Hirner <hirner@bitfire.at>2022-06-16 20:10:01 +0300
commit4f89e82dfa6943706cc85dd6ee2ba9e944a59d3b (patch)
treec59cf8851951d8c2815d173578aac3e166a01516
parent750b234490de3e6270f48f358b8d20963eb418e2 (diff)
Correctly connect/disconnect providers and grant permissions
-rw-r--r--build.gradle4
-rw-r--r--src/androidTest/java/at/bitfire/ical4android/AbstractTasksTest.kt25
-rw-r--r--src/androidTest/java/at/bitfire/ical4android/AndroidCalendarTest.kt40
-rw-r--r--src/androidTest/java/at/bitfire/ical4android/AndroidEventTest.kt38
-rw-r--r--src/androidTest/java/at/bitfire/ical4android/JtxCollectionTest.kt47
-rw-r--r--src/androidTest/java/at/bitfire/ical4android/JtxICalObjectTest.kt46
-rw-r--r--src/androidTest/java/at/bitfire/ical4android/TestUtils.kt17
7 files changed, 123 insertions, 94 deletions
diff --git a/build.gradle b/build.gradle
index b96cafd..99e65ca 100644
--- a/build.gradle
+++ b/build.gradle
@@ -18,7 +18,7 @@ buildscript {
}
dependencies {
- classpath 'com.android.tools.build:gradle:7.2.0'
+ classpath 'com.android.tools.build:gradle:7.2.1'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:${versions.kotlin}"
classpath "org.jetbrains.dokka:dokka-gradle-plugin:${versions.dokka}"
}
@@ -101,7 +101,7 @@ dependencies {
implementation "commons-io:commons-io:${versions.commonsIO}"
implementation 'org.slf4j:slf4j-jdk14:1.7.32'
- implementation 'androidx.core:core-ktx:1.7.0'
+ implementation 'androidx.core:core-ktx:1.8.0'
androidTestImplementation 'androidx.test:core:1.4.0'
androidTestImplementation 'androidx.test:runner:1.4.0'
diff --git a/src/androidTest/java/at/bitfire/ical4android/AbstractTasksTest.kt b/src/androidTest/java/at/bitfire/ical4android/AbstractTasksTest.kt
index 16431eb..e77b7f9 100644
--- a/src/androidTest/java/at/bitfire/ical4android/AbstractTasksTest.kt
+++ b/src/androidTest/java/at/bitfire/ical4android/AbstractTasksTest.kt
@@ -5,16 +5,18 @@
package at.bitfire.ical4android
import androidx.test.platform.app.InstrumentationRegistry
+import androidx.test.rule.GrantPermissionRule
import org.junit.After
import org.junit.Assume
import org.junit.Before
+import org.junit.Rule
import org.junit.runner.RunWith
import org.junit.runners.Parameterized
@RunWith(Parameterized::class)
abstract class AbstractTasksTest(
- val providerName: TaskProvider.ProviderName
+ val providerName: TaskProvider.ProviderName
) {
companion object {
@@ -23,20 +25,19 @@ abstract class AbstractTasksTest(
fun taskProviders() = listOf(TaskProvider.ProviderName.OpenTasks,TaskProvider.ProviderName.TasksOrg)
}
- private val providerOrNull: TaskProvider? by lazy {
- TaskProvider.acquire(InstrumentationRegistry.getInstrumentation().context, providerName)
- }
- protected val provider: TaskProvider by lazy {
- Assume.assumeNotNull(providerOrNull)
- providerOrNull!!
- }
+ @JvmField
+ @Rule
+ val permissionRule = GrantPermissionRule.grant(*providerName.permissions)
- init {
- TestUtils.requestPermissions(providerName.permissions)
- }
+ var providerOrNull: TaskProvider? = null
+ lateinit var provider: TaskProvider
@Before
open fun prepare() {
+ providerOrNull = TaskProvider.acquire(InstrumentationRegistry.getInstrumentation().context, providerName)
+ Assume.assumeNotNull(providerOrNull) // will halt here if providerOrNull is null
+
+ provider = providerOrNull!!
Ical4Android.log.fine("Using task provider: $provider")
}
@@ -45,4 +46,4 @@ abstract class AbstractTasksTest(
providerOrNull?.close()
}
-}
+} \ No newline at end of file
diff --git a/src/androidTest/java/at/bitfire/ical4android/AndroidCalendarTest.kt b/src/androidTest/java/at/bitfire/ical4android/AndroidCalendarTest.kt
index 3af1bb8..a8ab2f4 100644
--- a/src/androidTest/java/at/bitfire/ical4android/AndroidCalendarTest.kt
+++ b/src/androidTest/java/at/bitfire/ical4android/AndroidCalendarTest.kt
@@ -20,40 +20,46 @@ import at.bitfire.ical4android.impl.TestCalendar
import at.bitfire.ical4android.impl.TestEvent
import net.fortuna.ical4j.model.property.DtEnd
import net.fortuna.ical4j.model.property.DtStart
-import org.junit.After
+import org.junit.*
import org.junit.Assert.assertEquals
import org.junit.Assert.assertNotNull
-import org.junit.Before
-import org.junit.Rule
-import org.junit.Test
class AndroidCalendarTest {
- @JvmField
- @Rule
- val permissionRule = GrantPermissionRule.grant(
+ companion object {
+
+ @JvmField
+ @ClassRule
+ val permissionRule = GrantPermissionRule.grant(
Manifest.permission.READ_CALENDAR,
Manifest.permission.WRITE_CALENDAR
- )!!
+ )
- private val testAccount = Account("ical4android.AndroidCalendarTest", CalendarContract.ACCOUNT_TYPE_LOCAL)
+ lateinit var provider: ContentProviderClient
+
+ @BeforeClass
+ @JvmStatic
+ fun connectProvider() {
+ provider = InstrumentationRegistry.getInstrumentation().targetContext.contentResolver.acquireContentProviderClient(CalendarContract.AUTHORITY)!!
+ }
+
+ @AfterClass
+ @JvmStatic
+ fun closeProvider() {
+ provider.closeCompat()
+ }
- private lateinit var provider: ContentProviderClient
+ }
+
+ private val testAccount = Account("ical4android.AndroidCalendarTest", CalendarContract.ACCOUNT_TYPE_LOCAL)
@Before
fun prepare() {
- provider = InstrumentationRegistry.getInstrumentation().targetContext.contentResolver.acquireContentProviderClient(CalendarContract.AUTHORITY)!!
-
// make sure there are no colors for testAccount
AndroidCalendar.removeColors(provider, testAccount)
assertEquals(0, countColors(testAccount))
}
- @After
- fun shutdown() {
- provider.closeCompat()
- }
-
@Test
fun testManageCalendars() {
diff --git a/src/androidTest/java/at/bitfire/ical4android/AndroidEventTest.kt b/src/androidTest/java/at/bitfire/ical4android/AndroidEventTest.kt
index d9839ae..baaabb5 100644
--- a/src/androidTest/java/at/bitfire/ical4android/AndroidEventTest.kt
+++ b/src/androidTest/java/at/bitfire/ical4android/AndroidEventTest.kt
@@ -5,6 +5,7 @@ package at.bitfire.ical4android
import android.Manifest
import android.accounts.Account
+import android.content.ContentProviderClient
import android.content.ContentUris
import android.content.ContentValues
import android.database.DatabaseUtils
@@ -25,11 +26,8 @@ import net.fortuna.ical4j.model.component.VAlarm
import net.fortuna.ical4j.model.parameter.*
import net.fortuna.ical4j.model.property.*
import net.fortuna.ical4j.util.TimeZones
-import org.junit.After
+import org.junit.*
import org.junit.Assert.*
-import org.junit.Before
-import org.junit.Rule
-import org.junit.Test
import java.net.URI
import java.time.Duration
import java.time.Period
@@ -37,12 +35,30 @@ import java.util.*
class AndroidEventTest {
- @JvmField
- @Rule
- val permissionRule = GrantPermissionRule.grant(
+ companion object {
+
+ @JvmField
+ @ClassRule
+ val permissionRule = GrantPermissionRule.grant(
Manifest.permission.READ_CALENDAR,
Manifest.permission.WRITE_CALENDAR
- )!!
+ )
+
+ lateinit var provider: ContentProviderClient
+
+ @BeforeClass
+ @JvmStatic
+ fun connectProvider() {
+ provider = getInstrumentation().targetContext.contentResolver.acquireContentProviderClient(CalendarContract.AUTHORITY)!!
+ }
+
+ @AfterClass
+ @JvmStatic
+ fun closeProvider() {
+ provider.closeCompat()
+ }
+
+ }
private val testAccount = Account("ical4android@example.com", CalendarContract.ACCOUNT_TYPE_LOCAL)
@@ -52,11 +68,6 @@ class AndroidEventTest {
private val tzIdDefault = java.util.TimeZone.getDefault().id
private val tzDefault = DateUtils.ical4jTimeZone(tzIdDefault)
-
- private val provider by lazy {
- getInstrumentation().targetContext.contentResolver.acquireContentProviderClient(CalendarContract.AUTHORITY)!!
- }
-
private lateinit var calendarUri: Uri
private lateinit var calendar: TestCalendar
@@ -70,7 +81,6 @@ class AndroidEventTest {
@After
fun shutdown() {
calendar.delete()
- provider.closeCompat()
}
diff --git a/src/androidTest/java/at/bitfire/ical4android/JtxCollectionTest.kt b/src/androidTest/java/at/bitfire/ical4android/JtxCollectionTest.kt
index 7840b95..29b5157 100644
--- a/src/androidTest/java/at/bitfire/ical4android/JtxCollectionTest.kt
+++ b/src/androidTest/java/at/bitfire/ical4android/JtxCollectionTest.kt
@@ -6,25 +6,47 @@ package at.bitfire.ical4android
import android.accounts.Account
import android.content.ContentProviderClient
-import android.content.ContentResolver
import android.content.ContentValues
-import android.content.Context
import androidx.test.platform.app.InstrumentationRegistry
+import androidx.test.rule.GrantPermissionRule
import at.bitfire.ical4android.MiscUtils.ContentProviderClientHelper.closeCompat
import at.bitfire.ical4android.impl.TestJtxCollection
import at.techbee.jtx.JtxContract
import at.techbee.jtx.JtxContract.asSyncAdapter
import junit.framework.TestCase.*
-import org.junit.After
-import org.junit.Before
-import org.junit.Test
+import org.junit.*
class JtxCollectionTest {
+ companion object {
+
+ val context = InstrumentationRegistry.getInstrumentation().targetContext
+ val contentResolver = context.contentResolver
+
+ private lateinit var client: ContentProviderClient
+
+ @JvmField
+ @ClassRule
+ val permissionRule = GrantPermissionRule.grant(*TaskProvider.PERMISSIONS_JTX)
+
+ @BeforeClass
+ @JvmStatic
+ fun openProvider() {
+ val clientOrNull = contentResolver.acquireContentProviderClient(JtxContract.AUTHORITY)
+ Assume.assumeNotNull(clientOrNull)
+
+ client = clientOrNull!!
+ }
+
+ @AfterClass
+ @JvmStatic
+ fun closeProvider() {
+ client.closeCompat()
+ }
+
+ }
+
private val testAccount = Account("TEST", JtxContract.JtxCollection.TEST_ACCOUNT_TYPE)
- private lateinit var contentResolver: ContentResolver
- private lateinit var client: ContentProviderClient
- lateinit var context: Context
private val url = "https://jtx.techbee.at"
private val displayname = "jtx"
@@ -38,14 +60,6 @@ class JtxCollectionTest {
put(JtxContract.JtxCollection.SYNC_VERSION, syncversion)
}
- @Before
- fun setUp() {
- context = InstrumentationRegistry.getInstrumentation().targetContext
- contentResolver = context.contentResolver
- TestUtils.requestPermissions(TaskProvider.ProviderName.JtxBoard.permissions)
- client = contentResolver.acquireContentProviderClient(JtxContract.AUTHORITY)!!
- }
-
@After
fun tearDown() {
var collections = JtxCollection.find(testAccount, client, context, TestJtxCollection.Factory, null, null)
@@ -54,7 +68,6 @@ class JtxCollectionTest {
}
collections = JtxCollection.find(testAccount, client, context, TestJtxCollection.Factory, null, null)
assertEquals(0, collections.size)
- client.closeCompat()
}
diff --git a/src/androidTest/java/at/bitfire/ical4android/JtxICalObjectTest.kt b/src/androidTest/java/at/bitfire/ical4android/JtxICalObjectTest.kt
index 9527dba..f82c07d 100644
--- a/src/androidTest/java/at/bitfire/ical4android/JtxICalObjectTest.kt
+++ b/src/androidTest/java/at/bitfire/ical4android/JtxICalObjectTest.kt
@@ -6,12 +6,12 @@ package at.bitfire.ical4android
import android.accounts.Account
import android.content.ContentProviderClient
-import android.content.ContentResolver
import android.content.ContentValues
-import android.content.Context
import android.database.DatabaseUtils
import android.os.ParcelFileDescriptor
import androidx.test.platform.app.InstrumentationRegistry
+import androidx.test.rule.GrantPermissionRule
+import at.bitfire.ical4android.MiscUtils.ContentProviderClientHelper.closeCompat
import at.bitfire.ical4android.impl.TestJtxCollection
import at.techbee.jtx.JtxContract
import at.techbee.jtx.JtxContract.JtxICalObject
@@ -20,21 +20,43 @@ import at.techbee.jtx.JtxContract.asSyncAdapter
import junit.framework.TestCase.*
import net.fortuna.ical4j.model.Calendar
import net.fortuna.ical4j.model.Property
-import org.junit.After
-import org.junit.Assert
-import org.junit.Before
-import org.junit.Test
+import org.junit.*
import java.io.ByteArrayOutputStream
import java.io.InputStreamReader
class JtxICalObjectTest {
+ companion object {
+
+ val context = InstrumentationRegistry.getInstrumentation().targetContext
+ val contentResolver = context.contentResolver
+
+ private lateinit var client: ContentProviderClient
+
+ @JvmField
+ @ClassRule
+ val permissionRule = GrantPermissionRule.grant(*TaskProvider.PERMISSIONS_JTX)
+
+ @BeforeClass
+ @JvmStatic
+ fun openProvider() {
+ val clientOrNull = contentResolver.acquireContentProviderClient(JtxContract.AUTHORITY)
+ Assume.assumeNotNull(clientOrNull)
+
+ client = clientOrNull!!
+ }
+
+ @AfterClass
+ @JvmStatic
+ fun closeProvider() {
+ client.closeCompat()
+ }
+
+ }
+
private val testAccount = Account("TEST", JtxContract.JtxCollection.TEST_ACCOUNT_TYPE)
- private lateinit var contentResolver: ContentResolver
- private lateinit var client: ContentProviderClient
var collection: JtxCollection<at.bitfire.ical4android.JtxICalObject>? = null
var sample: at.bitfire.ical4android.JtxICalObject? = null
- lateinit var context: Context
private val url = "https://jtx.techbee.at"
private val displayname = "jtxTest"
@@ -50,11 +72,6 @@ class JtxICalObjectTest {
@Before
fun setUp() {
- context = InstrumentationRegistry.getInstrumentation().targetContext
- contentResolver = context.contentResolver
- TestUtils.requestPermissions(TaskProvider.ProviderName.JtxBoard.permissions)
- client = contentResolver.acquireContentProviderClient(JtxContract.AUTHORITY)!!
-
val collectionUri = JtxCollection.create(testAccount, client, cvCollection)
assertNotNull(collectionUri)
collection = JtxCollection.find(testAccount, client, context, TestJtxCollection.Factory, null, null)[0]
@@ -104,7 +121,6 @@ class JtxICalObjectTest {
@After
fun tearDown() {
-
collection?.delete()
val collections = JtxCollection.find(testAccount, client, context, TestJtxCollection.Factory, null, null)
assertEquals(0, collections.size)
diff --git a/src/androidTest/java/at/bitfire/ical4android/TestUtils.kt b/src/androidTest/java/at/bitfire/ical4android/TestUtils.kt
deleted file mode 100644
index 3387920..0000000
--- a/src/androidTest/java/at/bitfire/ical4android/TestUtils.kt
+++ /dev/null
@@ -1,17 +0,0 @@
-/***************************************************************************************************
- * Copyright © All Contributors. See LICENSE and AUTHORS in the root directory for details.
- **************************************************************************************************/
-
-package at.bitfire.ical4android
-
-import androidx.test.runner.permission.PermissionRequester
-
-object TestUtils {
-
- fun requestPermissions(permissions: Array<String>) {
- PermissionRequester().apply {
- addPermissions(*permissions)
- }.requestPermissions()
- }
-
-} \ No newline at end of file