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

Unverified Commit 906747cc authored by tobiasKaminsky's avatar tobiasKaminsky Committed by alperozturk
Browse files

test for tags

parent 57da6f04
Loading
Loading
Loading
Loading
+57 −0
Original line number Diff line number Diff line
@@ -9,8 +9,19 @@ package com.owncloud.android.lib.resources.tags

import com.nextcloud.test.RandomStringGenerator
import com.owncloud.android.AbstractIT
import com.owncloud.android.lib.common.network.WebdavEntry
import com.owncloud.android.lib.resources.files.CreateFolderRemoteOperation
import com.owncloud.android.lib.resources.files.ReadFileRemoteOperation
import com.owncloud.android.lib.resources.files.ReadFolderRemoteOperation
import com.owncloud.android.lib.resources.files.model.RemoteFile
import junit.framework.TestCase.assertEquals
import junit.framework.TestCase.assertTrue
import org.apache.commons.httpclient.HttpStatus
import org.apache.jackrabbit.webdav.client.methods.PropPatchMethod
import org.apache.jackrabbit.webdav.property.DavPropertyNameSet
import org.apache.jackrabbit.webdav.property.DavPropertySet
import org.apache.jackrabbit.webdav.property.DefaultDavProperty
import org.apache.jackrabbit.webdav.xml.Namespace
import org.junit.Test

class GetTagsRemoteOperationIT : AbstractIT() {
@@ -34,5 +45,51 @@ class GetTagsRemoteOperationIT : AbstractIT() {
        sut = GetTagsRemoteOperation().execute(client)
        assertTrue(sut.isSuccess)
        assertEquals(count + 1, sut.resultData.size)

        // add color to one tag
        val plainColor = "ff00ff"
        val colorWithHex = "#$plainColor"
        val tag = sut.resultData.first()
        val newProps = DavPropertySet()
        newProps.add(
            DefaultDavProperty(
                "nc:color",
                plainColor,
                Namespace.getNamespace(WebdavEntry.NAMESPACE_NC)
            )
        )
        val propPatchMethod =
            PropPatchMethod(
                client.baseUri.toString() + "/remote.php/dav/systemtags/" + tag.id,
                newProps,
                DavPropertyNameSet()
            )
        assertTrue(client.executeMethod(propPatchMethod) == HttpStatus.SC_MULTI_STATUS)

        sut = GetTagsRemoteOperation().execute(client)

        assertEquals(colorWithHex, sut.resultData.find { it.id == tag.id }?.color)

        // add colored tag to file
        val tagFolder = "/coloredFolder"
        assertTrue(CreateFolderRemoteOperation(tagFolder, true).execute(client).isSuccess)
        val folderMetadata = ReadFileRemoteOperation(tagFolder).execute(client)
        assertTrue(
            PutTagRemoteOperation(
                tag.id,
                (folderMetadata.data[0] as RemoteFile).localId
            ).execute(nextcloudClient).isSuccess
        )

        // read metadata
        val rootMetadata = ReadFolderRemoteOperation("/").execute(client)
        assertEquals(
            colorWithHex,
            (rootMetadata.data as ArrayList<RemoteFile>)
                .find { it.remotePath == tagFolder }
                ?.tags
                ?.first()
                ?.color
        )
    }
}
+15 −13
Original line number Diff line number Diff line
@@ -395,8 +395,10 @@ class WebdavEntry constructor(

            prop = propSet[EXTENDED_PROPERTY_SYSTEM_TAGS, ncNamespace]
            if (prop?.value != null) {
                tags = when (prop.value) {
                    is ArrayList<*> -> (prop.value as ArrayList<*>)
                tags =
                    when (prop.value) {
                        is ArrayList<*> ->
                            (prop.value as ArrayList<*>)
                                .filterIsInstance<Element>()
                                .map { parseTag(it) }
                                .toTypedArray()
+4 −1
Original line number Diff line number Diff line
@@ -7,4 +7,7 @@

package com.owncloud.android.lib.resources.systemTag

data class SystemTag(val name: String, val color: String?)
data class SystemTag(
    val name: String,
    val color: String?
)
+16 −1
Original line number Diff line number Diff line
@@ -9,6 +9,8 @@ package com.owncloud.android.lib.resources.tags

import com.owncloud.android.lib.common.OwnCloudClient
import com.owncloud.android.lib.common.network.WebdavEntry.Companion.EXTENDED_PROPERTY_NAME_REMOTE_ID
import com.owncloud.android.lib.common.network.WebdavEntry.Companion.EXTENDED_PROPERTY_SYSTEM_TAGS_COLOR
import com.owncloud.android.lib.common.network.WebdavEntry.Companion.NAMESPACE_NC
import com.owncloud.android.lib.common.network.WebdavEntry.Companion.NAMESPACE_OC
import com.owncloud.android.lib.common.network.WebdavEntry.Companion.SHAREES_DISPLAY_NAME
import com.owncloud.android.lib.common.operations.RemoteOperation
@@ -18,15 +20,18 @@ import org.apache.jackrabbit.webdav.client.methods.PropFindMethod
import org.apache.jackrabbit.webdav.property.DavPropertyNameSet
import org.apache.jackrabbit.webdav.xml.Namespace

@Suppress("NestedBlockDepth")
class GetTagsRemoteOperation : RemoteOperation<List<Tag>>() {
    @Deprecated("Deprecated in Java")
    override fun run(client: OwnCloudClient): RemoteOperationResult<List<Tag>> {
        val ocNamespace = Namespace.getNamespace(NAMESPACE_OC)
        val ncNamespace = Namespace.getNamespace(NAMESPACE_NC)

        val propSet =
            DavPropertyNameSet().apply {
                add(EXTENDED_PROPERTY_NAME_REMOTE_ID, ocNamespace)
                add(SHAREES_DISPLAY_NAME, ocNamespace)
                add(EXTENDED_PROPERTY_SYSTEM_TAGS_COLOR, ncNamespace)
            }

        val propFindMethod =
@@ -55,7 +60,17 @@ class GetTagsRemoteOperation : RemoteOperation<List<Tag>>() {
                            .get(SHAREES_DISPLAY_NAME, ocNamespace)
                            .value as String

                    result.add(Tag(id, name))
                    var color =
                        it
                            .getProperties(HttpStatus.SC_OK)
                            .get(EXTENDED_PROPERTY_SYSTEM_TAGS_COLOR, ncNamespace)
                            ?.value as String?

                    if (color != null) {
                        color = "#$color"
                    }

                    result.add(Tag(id, name, color))
                }
            }

+2 −1
Original line number Diff line number Diff line
@@ -9,5 +9,6 @@ package com.owncloud.android.lib.resources.tags

data class Tag(
    val id: String,
    val name: String
    val name: String,
    val color: String?
)