Add OCOwnerPrincipal property

pull/1381/head
Alex Baker 5 years ago
parent af28d42e2e
commit 4e36ddcd74

@ -19,6 +19,8 @@ import kotlinx.coroutines.launch
import org.tasks.billing.BillingClient import org.tasks.billing.BillingClient
import org.tasks.billing.Inventory import org.tasks.billing.Inventory
import org.tasks.caldav.property.Invite import org.tasks.caldav.property.Invite
import org.tasks.caldav.property.OCOwnerPrincipal
import org.tasks.caldav.property.PropertyUtils.register
import org.tasks.caldav.property.ShareAccess import org.tasks.caldav.property.ShareAccess
import org.tasks.files.FileHelper import org.tasks.files.FileHelper
import org.tasks.injection.InjectingJobIntentService import org.tasks.injection.InjectingJobIntentService
@ -93,10 +95,11 @@ class Tasks : Application(), Configuration.Provider {
FileHelper.delete(context, preferences.cacheDirectory) FileHelper.delete(context, preferences.cacheDirectory)
billingClient.get().queryPurchases() billingClient.get().queryPurchases()
appWidgetManager.get().reconfigureWidgets() appWidgetManager.get().reconfigureWidgets()
PropertyRegistry.register(listOf( PropertyRegistry.register(
ShareAccess.Factory(), ShareAccess.Factory(),
Invite.Factory() Invite.Factory(),
)) OCOwnerPrincipal.Factory(),
)
} }
override fun getWorkManagerConfiguration(): Configuration = Configuration.Builder() override fun getWorkManagerConfiguration(): Configuration = Configuration.Builder()

@ -20,6 +20,7 @@ import okhttp3.OkHttpClient
import org.tasks.R import org.tasks.R
import org.tasks.Strings.isNullOrEmpty import org.tasks.Strings.isNullOrEmpty
import org.tasks.caldav.property.Invite import org.tasks.caldav.property.Invite
import org.tasks.caldav.property.OCOwnerPrincipal
import org.tasks.caldav.property.ShareAccess import org.tasks.caldav.property.ShareAccess
import org.tasks.data.CaldavAccount import org.tasks.data.CaldavAccount
import org.tasks.ui.DisplayableException import org.tasks.ui.DisplayableException
@ -219,7 +220,8 @@ open class CaldavClient(
CalendarColor.NAME, CalendarColor.NAME,
SyncToken.NAME, SyncToken.NAME,
ShareAccess.NAME, ShareAccess.NAME,
Invite.NAME Invite.NAME,
OCOwnerPrincipal.NAME,
) )
private suspend fun DavResource.propfind( private suspend fun DavResource.propfind(

@ -0,0 +1,19 @@
package org.tasks.caldav.property
import at.bitfire.dav4jvm.Property
import at.bitfire.dav4jvm.PropertyFactory
import at.bitfire.dav4jvm.XmlUtils
import org.xmlpull.v1.XmlPullParser
data class OCOwnerPrincipal(val owner: String): Property {
companion object {
@JvmField
val NAME = Property.Name(PropertyUtils.NS_OWNCLOUD, "owner-principal")
}
class Factory: PropertyFactory {
override fun getName() = NAME
override fun create(parser: XmlPullParser): OCOwnerPrincipal? =
XmlUtils.readText(parser)?.let { OCOwnerPrincipal(it) }
}
}

@ -0,0 +1,10 @@
package org.tasks.caldav.property
import at.bitfire.dav4jvm.PropertyFactory
import at.bitfire.dav4jvm.PropertyRegistry
object PropertyUtils {
const val NS_OWNCLOUD = "http://owncloud.org/ns"
fun PropertyRegistry.register(vararg factories: PropertyFactory) = register(factories.toList())
}

@ -4,44 +4,33 @@ import at.bitfire.dav4jvm.PropertyRegistry
import org.junit.Assert.* import org.junit.Assert.*
import org.junit.Before import org.junit.Before
import org.junit.Test import org.junit.Test
import org.tasks.caldav.property.PropertyUtils.toProperty import org.tasks.caldav.property.PropertyUtils.register
import org.tasks.caldav.property.ShareAccess.Companion.SHARED_OWNER import org.tasks.caldav.property.ShareAccess.Companion.SHARED_OWNER
import org.tasks.caldav.property.TestPropertyUtils.toProperty
class InviteTest { class InviteTest {
@Before @Before
fun setUp() { fun setUp() {
PropertyRegistry.register(listOf( PropertyRegistry.register(ShareAccess.Factory(), Invite.Factory())
ShareAccess.Factory(),
Invite.Factory()
))
} }
@Test @Test
fun emptyInvite() { fun emptyInvite() = assertTrue("<d:invite />".toProperty<Invite>().sharees.isEmpty())
val invite: Invite = "<d:invite />".toProperty()
assertTrue(invite.sharees.isEmpty()) @Test
} fun shareeAccess() = assertEquals(ShareAccess(SHARED_OWNER), sharee(SHARE_OWNER).access)
@Test @Test
fun shareeAccess() { fun shareeHref() = assertEquals("/principals/102967489186752069531", sharee(SHARE_OWNER).href)
assertEquals(ShareAccess(SHARED_OWNER), sharee(SHARE_OWNER).access)
}
@Test @Test
fun shareeHref() { fun inviteStatus() = assertEquals(Sharee.INVITE_ACCEPTED, sharee(SHARE_OWNER).response)
assertEquals("/principals/102967489186752069531", sharee(SHARE_OWNER).href)
}
@Test @Test
fun inviteStatus() { fun noComment() = assertNull(sharee(SHARE_OWNER).comment)
assertEquals(Sharee.INVITE_ACCEPTED, sharee(SHARE_OWNER).response)
}
@Test @Test
fun noComment() { fun noProperties() = assertTrue(sharee(SHARE_OWNER).properties.isEmpty())
assertNull(sharee(SHARE_OWNER).comment)
}
private fun sharee(xml: String): Sharee = xml.toProperty<Invite>().sharees.first() private fun sharee(xml: String): Sharee = xml.toProperty<Invite>().sharees.first()

@ -0,0 +1,22 @@
package org.tasks.caldav.property
import at.bitfire.dav4jvm.PropertyRegistry
import org.junit.Assert.assertEquals
import org.junit.Before
import org.junit.Test
import org.tasks.caldav.property.TestPropertyUtils.toProperty
class OCOwnerPrincipalTest {
@Before
fun setUp() {
PropertyRegistry.register(OCOwnerPrincipal.Factory())
}
@Test
fun ownerPrincipal() {
val owner = "<oc:owner-principal>principals/users/test</oc:owner-principal>"
.toProperty<OCOwnerPrincipal>("oc='${PropertyUtils.NS_OWNCLOUD}'")
assertEquals("principals/users/test", owner.owner)
}
}

@ -4,7 +4,7 @@ import at.bitfire.dav4jvm.PropertyRegistry
import org.junit.Assert.assertEquals import org.junit.Assert.assertEquals
import org.junit.Before import org.junit.Before
import org.junit.Test import org.junit.Test
import org.tasks.caldav.property.PropertyUtils.toProperty import org.tasks.caldav.property.TestPropertyUtils.toProperty
import org.tasks.caldav.property.ShareAccess.Companion.SHARED_OWNER import org.tasks.caldav.property.ShareAccess.Companion.SHARED_OWNER
class ShareAccessTest { class ShareAccessTest {

@ -4,9 +4,9 @@ import at.bitfire.dav4jvm.Property
import at.bitfire.dav4jvm.XmlUtils import at.bitfire.dav4jvm.XmlUtils
import java.io.StringReader import java.io.StringReader
object PropertyUtils { object TestPropertyUtils {
fun <T: Property> String.toProperty(): T = fun <T: Property> String.toProperty(ns: String = """d="DAV:""""): T =
toProperties() toProperties(ns)
.apply { if (this.size != 1) throw IllegalStateException("${this.size} items") } .apply { if (this.size != 1) throw IllegalStateException("${this.size} items") }
.first() .first()
.let { .let {
@ -14,12 +14,12 @@ object PropertyUtils {
it as T it as T
} }
fun String.toProperties(): List<Property> = fun String.toProperties(ns: String = """d="DAV:""""): List<Property> =
XmlUtils.newPullParser() XmlUtils.newPullParser()
.apply { .apply {
setInput( setInput(
StringReader(""" StringReader("""
<test xmlns:d="DAV:"> <test xmlns:$ns>
${this@toProperties} ${this@toProperties}
</test> </test>
""".trimIndent() """.trimIndent()
Loading…
Cancel
Save