Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Unverified Commit 4f89e82d authored by Ricki Hirner's avatar Ricki Hirner
Browse files

Correctly connect/disconnect providers and grant permissions

parent 750b2344
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -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'
+13 −12
Original line number Diff line number Diff line
@@ -5,9 +5,11 @@
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

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

+23 −17
Original line number Diff line number Diff line
@@ -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 {

    companion object {

        @JvmField
    @Rule
        @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() {
+24 −14
Original line number Diff line number Diff line
@@ -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 {

    companion object {

        @JvmField
    @Rule
        @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()
    }


+30 −17
Original line number Diff line number Diff line
@@ -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 {

    private val testAccount = Account("TEST", JtxContract.JtxCollection.TEST_ACCOUNT_TYPE)
    private lateinit var contentResolver: ContentResolver
    companion object {

        val context = InstrumentationRegistry.getInstrumentation().targetContext
        val contentResolver = context.contentResolver

        private lateinit var client: ContentProviderClient
    lateinit var context: Context

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


Loading