Skip to content

Commit 017ae9d

Browse files
use dav4jvm search and proppatch
Signed-off-by: tobiasKaminsky <[email protected]>
1 parent 3ec02eb commit 017ae9d

File tree

144 files changed

+4721
-2697
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

144 files changed

+4721
-2697
lines changed

gradle/verification-metadata.xml

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3696,6 +3696,30 @@
36963696
</sha256>
36973697
</artifact>
36983698
</component>
3699+
<component group="com.github.bitfireAT" name="dav4jvm" version="2b414984a82f57248f6d519a328e93862b471316">
3700+
<artifact name="dav4jvm-2b414984a82f57248f6d519a328e93862b471316.jar">
3701+
<sha256 value="997da50a0c2a9b9f3eb465bc4638ae2cd038140280485c040bfeab31f0cea205" origin="Generated by Gradle" reason="Artifact is not signed"/>
3702+
</artifact>
3703+
<artifact name="dav4jvm-2b414984a82f57248f6d519a328e93862b471316.module">
3704+
<sha256 value="4c534cfe4abe03386cd004e9fe419fd444da7ad37fa15251751d6b94d3545ac8" origin="Generated by Gradle" reason="Artifact is not signed"/>
3705+
</artifact>
3706+
</component>
3707+
<component group="com.github.bitfireAT" name="dav4jvm" version="b8be778">
3708+
<artifact name="dav4jvm-b8be778.jar">
3709+
<sha256 value="f65d8d62b60af85360b3a998e86844d8f9a4f01f182fcc61ca47619aa3520658" origin="Generated by Gradle" reason="Artifact is not signed"/>
3710+
</artifact>
3711+
<artifact name="dav4jvm-b8be778.module">
3712+
<sha256 value="dcada32bc5e01a4851d9fac98daae4c4080daa9307febb0b7898e241133c66c8" origin="Generated by Gradle" reason="Artifact is not signed"/>
3713+
</artifact>
3714+
</component>
3715+
<component group="com.github.bitfireAT" name="dav4jvm" version="c1bc143488">
3716+
<artifact name="dav4jvm-c1bc143488.jar">
3717+
<sha256 value="a54377987c9ff260cc5d1296739a268bebb59f38bfb2936c2411471f1445d339" origin="Generated by Gradle" reason="Artifact is not signed"/>
3718+
</artifact>
3719+
<artifact name="dav4jvm-c1bc143488.module">
3720+
<sha256 value="0b8662b56af6a1e7b22db91bd39db2d16c9e0d00c11f978395a997dda007b788" origin="Generated by Gradle" reason="Artifact is not signed"/>
3721+
</artifact>
3722+
</component>
36993723
<component group="com.google" name="google" version="1">
37003724
<artifact name="google-1.pom">
37013725
<sha256 value="cd6db17a11a31ede794ccbd1df0e4d9750f640234731f21cff885a9997277e81" origin="Generated by Gradle" reason="Artifact is not signed"/>

library/build.gradle

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,8 +61,7 @@ configurations {
6161
dependencies {
6262
implementation 'org.apache.jackrabbit:jackrabbit-webdav:2.13.5'
6363
api 'com.squareup.okhttp3:okhttp:5.0.0-alpha.12'
64-
implementation 'com.github.bitfireAT:dav4jvm:2.2.1'
65-
// in transition phase, we use old and new libs
64+
api 'com.github.bitfireAT:dav4jvm:2b414984a82f57248f6d519a328e93862b471316' // in transition phase, we use old and new libs
6665
implementation group: 'com.google.code.gson', name: 'gson', version: '2.11.0'
6766
implementation 'androidx.annotation:annotation:1.9.0'
6867
compileOnly 'com.google.code.findbugs:annotations:3.0.1u2'

library/src/androidTest/java/com/nextcloud/android/lib/resources/dashboard/DashboardGetWidgetItemsRemoteOperationIT.kt

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ package com.nextcloud.android.lib.resources.dashboard
99

1010
import com.owncloud.android.AbstractIT
1111
import com.owncloud.android.lib.resources.files.CreateFolderRemoteOperation
12+
import com.owncloud.android.lib.resources.files.RemoveFileRemoteOperation
1213
import com.owncloud.android.lib.resources.shares.CreateShareRemoteOperation
1314
import com.owncloud.android.lib.resources.shares.OCShare
1415
import com.owncloud.android.lib.resources.shares.ShareType
@@ -22,11 +23,13 @@ class DashboardGetWidgetItemsRemoteOperationIT : AbstractIT() {
2223
// only on NC25+
2324
testOnlyOnServer(NextcloudVersion.nextcloud_25)
2425

26+
val folderPath = "/testFolder"
27+
2528
// create folder to have some content
26-
assertTrue(CreateFolderRemoteOperation("/testFolder", false).execute(client2).isSuccess)
29+
assertTrue(CreateFolderRemoteOperation(folderPath, false).execute(nextcloudClient2).isSuccess)
2730
assertTrue(
2831
CreateShareRemoteOperation(
29-
"/testFolder",
32+
folderPath,
3033
ShareType.USER,
3134
client.userId,
3235
false,
@@ -37,17 +40,19 @@ class DashboardGetWidgetItemsRemoteOperationIT : AbstractIT() {
3740
)
3841

3942
val widgetId = "activity"
40-
val result =
41-
DashboardGetWidgetItemsRemoteOperation(widgetId, LIMIT_SIZE).execute(nextcloudClient)
43+
val result = DashboardGetWidgetItemsRemoteOperation(widgetId, LIMIT_SIZE).execute(nextcloudClient)
4244

4345
assertTrue(result.isSuccess)
44-
assertTrue(result.resultData[widgetId]?.isNotEmpty() ?: false)
46+
assertTrue(result.resultData?.get(widgetId)?.isNotEmpty() ?: false)
4547

46-
val firstResult = result.resultData[widgetId]?.get(0)
48+
val firstResult = result.resultData?.get(widgetId)?.get(0)
4749
assertTrue(firstResult?.title?.isNotEmpty() == true)
4850
assertTrue(firstResult?.subtitle != null)
4951
assertTrue(firstResult?.link?.isNotEmpty() == true)
5052
assertTrue(firstResult?.iconUrl?.isNotEmpty() == true)
53+
54+
// remove folder
55+
assertTrue(RemoveFileRemoteOperation(folderPath).execute(nextcloudClient2).isSuccess)
5156
}
5257

5358
@Test
@@ -57,7 +62,7 @@ class DashboardGetWidgetItemsRemoteOperationIT : AbstractIT() {
5762
DashboardGetWidgetItemsRemoteOperation(widgetId, LIMIT_SIZE).execute(nextcloudClient)
5863

5964
assertTrue(result.isSuccess)
60-
assertTrue(result.resultData.isEmpty())
65+
assertTrue(result.resultData?.isEmpty() ?: false)
6166
}
6267

6368
companion object {

library/src/androidTest/java/com/nextcloud/android/lib/resources/dashboard/DashboardListWidgetsRemoteOperationIT.kt

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -22,14 +22,14 @@ class DashboardListWidgetsRemoteOperationIT : AbstractIT() {
2222
val result = DashboardListWidgetsRemoteOperation().execute(nextcloudClient)
2323
assertTrue(result.isSuccess)
2424

25-
assertTrue(result.resultData.isNotEmpty())
25+
assertTrue(result.resultData?.isNotEmpty() ?: false)
2626

27-
assertTrue(result.resultData["recommendations"]?.buttons?.getOrNull(0) == null)
27+
assertTrue(result.resultData?.get("recommendations")?.buttons?.getOrNull(0) == null)
2828

29-
assertEquals(1, result.resultData["activity"]?.buttons?.size)
30-
assertTrue(result.resultData["activity"]?.buttons?.getOrNull(0)?.type == DashBoardButtonType.MORE)
31-
assertTrue(result.resultData["activity"]?.roundIcons == false)
29+
assertEquals(1, result.resultData?.get("activity")?.buttons?.size)
30+
assertTrue(result.resultData?.get("activity")?.buttons?.getOrNull(0)?.type == DashBoardButtonType.MORE)
31+
assertTrue(result.resultData?.get("activity")?.roundIcons == false)
3232

33-
assertTrue(result.resultData["user_status"]?.roundIcons == true)
33+
assertTrue(result.resultData?.get("user_status")?.roundIcons == true)
3434
}
3535
}

library/src/androidTest/java/com/nextcloud/android/lib/resources/directediting/DirectEditingObtainRemoteOperationIT.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,9 @@ class DirectEditingObtainRemoteOperationIT : AbstractIT() {
1919
fun testGetAll() {
2020
val result = DirectEditingObtainRemoteOperation().run(nextcloudClient)
2121
assertTrue(result.isSuccess)
22+
assertNotNull(result.resultData)
2223

23-
val (editors, creators) = result.resultData
24+
val (editors, creators) = result.resultData!!
2425
assertTrue(editors.containsKey("text"))
2526

2627
val textEditor = editors["text"]

library/src/androidTest/java/com/nextcloud/android/lib/resources/directediting/DirectEditingOpenFileRemoteOperationIT.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ public void openFile() throws IOException {
3434
1464818400
3535
).execute(client).isSuccess());
3636

37-
TestCase.assertTrue(new ReadFileRemoteOperation(remotePath).execute(client).isSuccess());
37+
TestCase.assertTrue(new ReadFileRemoteOperation(remotePath).execute(nextcloudClient).isSuccess());
3838

3939
// open file
4040
RemoteOperationResult<String> result = new DirectEditingOpenFileRemoteOperation(remotePath, "text")
@@ -58,7 +58,7 @@ public void openFileWithSpecialChars() throws IOException {
5858
1464818400
5959
).execute(client).isSuccess());
6060

61-
TestCase.assertTrue(new ReadFileRemoteOperation(remotePath).execute(client).isSuccess());
61+
TestCase.assertTrue(new ReadFileRemoteOperation(remotePath).execute(nextcloudClient).isSuccess());
6262

6363
// open file
6464
RemoteOperationResult<String> result = new DirectEditingOpenFileRemoteOperation(remotePath, "text")
@@ -82,7 +82,7 @@ public void openFileWithSpecialChars2() throws IOException {
8282
1464818400
8383
).execute(client).isSuccess());
8484

85-
TestCase.assertTrue(new ReadFileRemoteOperation(remotePath).execute(client).isSuccess());
85+
TestCase.assertTrue(new ReadFileRemoteOperation(remotePath).execute(nextcloudClient).isSuccess());
8686

8787
// open file
8888
RemoteOperationResult<String> result = new DirectEditingOpenFileRemoteOperation(remotePath, "text")
@@ -98,7 +98,7 @@ public void openFileWithSpecialChars2() throws IOException {
9898
public void openNonExistingFile() {
9999
String remotePath = "/nonExisting.md";
100100

101-
TestCase.assertFalse(new ReadFileRemoteOperation(remotePath).execute(client).isSuccess());
101+
TestCase.assertFalse(new ReadFileRemoteOperation(remotePath).execute(nextcloudClient).isSuccess());
102102

103103
// open file
104104
RemoteOperationResult<String> result = new DirectEditingOpenFileRemoteOperation(remotePath, "text")

library/src/androidTest/java/com/nextcloud/android/lib/resources/files/ToggleFileLockRemoteOperationIT.kt

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,11 @@ import com.owncloud.android.lib.resources.files.UploadFileRemoteOperation
1313
import com.owncloud.android.lib.resources.files.model.FileLockType
1414
import com.owncloud.android.lib.resources.files.model.RemoteFile
1515
import com.owncloud.android.lib.resources.status.NextcloudVersion.Companion.nextcloud_24
16+
import okhttp3.internal.http.HTTP_NOT_IMPLEMENTED
1617
import org.junit.Assert.assertEquals
1718
import org.junit.Assert.assertFalse
1819
import org.junit.Assert.assertTrue
20+
import org.junit.Assume.assumeTrue
1921
import org.junit.Test
2022

2123
class ToggleFileLockRemoteOperationIT : AbstractIT() {
@@ -32,21 +34,24 @@ class ToggleFileLockRemoteOperationIT : AbstractIT() {
3234
UploadFileRemoteOperation(filePath, remotePath, "text/markdown", 1464818400)
3335
.execute(client).isSuccess
3436
)
35-
val initialFile =
36-
ReadFileRemoteOperation(remotePath).execute(client).singleData as RemoteFile
37+
val initialFile = ReadFileRemoteOperation(remotePath).execute(nextcloudClient).resultData as RemoteFile
3738
assertFalse("File shouldn't be locked", initialFile.isLocked)
3839

3940
// lock file
4041
val lockResult = ToggleFileLockRemoteOperation(toLock = true, remotePath).execute(nextcloudClient)
42+
43+
// check if file locking is enabled (files_lock app needs to be installed)
44+
assumeTrue(lockResult.httpCode != HTTP_NOT_IMPLEMENTED)
45+
4146
assertTrue("File lock failed", lockResult.isSuccess)
42-
val lockFile = ReadFileRemoteOperation(remotePath).execute(client).singleData as RemoteFile
47+
val lockFile = ReadFileRemoteOperation(remotePath).execute(nextcloudClient).resultData as RemoteFile
4348
assertTrue("File should be locked", lockFile.isLocked)
4449
assertEquals("Wrong lock type", FileLockType.MANUAL, lockFile.lockType)
4550

4651
// unlock again
4752
val unlockResult = ToggleFileLockRemoteOperation(toLock = false, remotePath).execute(nextcloudClient)
4853
assertTrue("File unlock failed", unlockResult.isSuccess)
49-
val unlockFile = ReadFileRemoteOperation(remotePath).execute(client).singleData as RemoteFile
54+
val unlockFile = ReadFileRemoteOperation(remotePath).execute(nextcloudClient).resultData as RemoteFile
5055
assertFalse("File shouldn't be locked", unlockFile.isLocked)
5156
}
5257
}

library/src/androidTest/java/com/nextcloud/android/lib/resources/groupfolders/GetGroupfoldersRemoteOperationIT.kt

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,20 +9,19 @@ package com.nextcloud.android.lib.resources.groupfolders
99

1010
import com.owncloud.android.AbstractIT
1111
import com.owncloud.android.lib.resources.status.GetCapabilitiesRemoteOperation
12-
import com.owncloud.android.lib.resources.status.OCCapability
1312
import org.junit.Assert.assertEquals
1413
import org.junit.Assume.assumeTrue
1514
import org.junit.Test
1615

1716
class GetGroupfoldersRemoteOperationIT : AbstractIT() {
1817
@Test
1918
fun getGroupfolders() {
20-
val capability = GetCapabilitiesRemoteOperation().execute(client).singleData as OCCapability
19+
val capability = GetCapabilitiesRemoteOperation().execute(nextcloudClient).resultData
2120

22-
assumeTrue(capability.groupfolders.isTrue)
21+
assumeTrue(capability?.groupfolders?.isTrue == true)
2322

2423
val map = GetGroupfoldersRemoteOperation().execute(nextcloudClient).resultData
25-
assertEquals(1, map.size)
26-
assertEquals("groupfolder", map["1"]?.mountPoint)
24+
assertEquals(1, map?.size)
25+
assertEquals("groupfolder", map?.get("1")?.mountPoint)
2726
}
2827
}

library/src/androidTest/java/com/nextcloud/android/lib/resources/search/SearchProvidersRemoteOperationIT.kt

Lines changed: 7 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ package com.nextcloud.android.lib.resources.search
99

1010
import com.owncloud.android.AbstractIT
1111
import com.owncloud.android.lib.resources.status.GetCapabilitiesRemoteOperation
12-
import com.owncloud.android.lib.resources.status.OCCapability
1312
import com.owncloud.android.lib.resources.status.OwnCloudVersion
1413
import org.junit.Assert.assertFalse
1514
import org.junit.Assert.assertNotNull
@@ -28,22 +27,18 @@ class SearchProvidersRemoteOperationIT : AbstractIT() {
2827
assertTrue(result.isSuccess)
2928

3029
val providers = result.resultData
31-
32-
assertTrue(providers.eTag.isNotBlank())
33-
assertTrue(providers.providers.isNotEmpty())
34-
assertNotNull(providers.providers.find { it.name == "Files" })
35-
assertNull(providers.providers.find { it.name == "RandomSearchProvider" })
30+
assertTrue(providers?.eTag?.isNotBlank() == true)
31+
assertNotNull(providers?.providers)
32+
assertTrue(providers?.providers?.isNotEmpty() == true)
33+
assertNotNull(providers?.providers?.find { it.name == "Files" })
34+
assertNull(providers?.providers?.find { it.name == "RandomSearchProvider" })
3635
}
3736

3837
@Test
3938
fun getSearchProvidersOnOldServer() {
4039
// only on < NC20
41-
val ocCapability =
42-
GetCapabilitiesRemoteOperation()
43-
.execute(nextcloudClient).singleData as OCCapability
44-
assumeTrue(
45-
ocCapability.version.isOlderThan(OwnCloudVersion.nextcloud_20)
46-
)
40+
val ocCapability = GetCapabilitiesRemoteOperation().execute(nextcloudClient).resultData
41+
assumeTrue(ocCapability?.version?.isOlderThan(OwnCloudVersion.nextcloud_20) == true)
4742

4843
val result = nextcloudClient.execute(UnifiedSearchProvidersRemoteOperation())
4944
assertFalse(result.isSuccess)

library/src/androidTest/java/com/nextcloud/android/lib/resources/search/UnifiedSearchRemoteOperationIT.kt

Lines changed: 12 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ package com.nextcloud.android.lib.resources.search
1010
import com.owncloud.android.AbstractIT
1111
import com.owncloud.android.lib.resources.files.CreateFolderRemoteOperation
1212
import com.owncloud.android.lib.resources.files.ReadFileRemoteOperation
13-
import com.owncloud.android.lib.resources.files.model.RemoteFile
1413
import org.junit.Assert.assertEquals
1514
import org.junit.Assert.assertFalse
1615
import org.junit.Assert.assertNotNull
@@ -36,28 +35,25 @@ class UnifiedSearchRemoteOperationIT : AbstractIT() {
3635
fun filesSearchEmptyResult() {
3736
val result = UnifiedSearchRemoteOperation("files", "test").execute(nextcloudClient)
3837
assertTrue(result.isSuccess)
39-
40-
val data = result.resultData
41-
assertTrue(data.entries.isEmpty())
38+
assertNotNull(result.resultData)
39+
assertTrue(result.resultData?.entries?.isEmpty() == true)
4240
}
4341

4442
@Test
4543
fun filesSearch() {
4644
val remotePath = "/testFolder"
47-
assertTrue(CreateFolderRemoteOperation(remotePath, true).execute(client).isSuccess)
48-
val remoteFile =
49-
ReadFileRemoteOperation(remotePath)
50-
.execute(client).data[0] as RemoteFile
51-
val fileId = remoteFile.localId
45+
assertTrue(CreateFolderRemoteOperation(remotePath, true).execute(nextcloudClient).isSuccess)
46+
val remoteFile = ReadFileRemoteOperation(remotePath).execute(nextcloudClient).resultData
47+
val fileId = remoteFile?.localId
5248

5349
val result = UnifiedSearchRemoteOperation("files", "test").execute(nextcloudClient)
5450
assertTrue(result.isSuccess)
5551

5652
val data = result.resultData
57-
assertEquals("Files", data.name)
58-
assertTrue(data.entries.isNotEmpty())
53+
assertEquals("Files", data?.name)
54+
assertTrue(data?.entries?.isNotEmpty() == true)
5955

60-
val firstResult = data.entries.find { it.title == "testFolder" }
56+
val firstResult = data?.entries?.find { it.title == "testFolder" }
6157

6258
assertNotNull(firstResult)
6359
assertEquals(remotePath, firstResult?.remotePath())
@@ -66,14 +62,14 @@ class UnifiedSearchRemoteOperationIT : AbstractIT() {
6662

6763
@Test
6864
fun filesSearchWhitespace() {
69-
assertTrue(CreateFolderRemoteOperation("/test Folder/", true).execute(client).isSuccess)
65+
assertTrue(CreateFolderRemoteOperation("/test Folder/", true).execute(nextcloudClient).isSuccess)
7066

7167
val result = UnifiedSearchRemoteOperation("files", "test").execute(nextcloudClient)
7268
assertTrue(result.isSuccess)
7369

7470
val data = result.resultData
75-
assertTrue(data.name == "Files")
76-
assertTrue(data.entries.isNotEmpty())
77-
assertNotNull(data.entries.find { it.title == "test Folder" })
71+
assertTrue(data?.name == "Files")
72+
assertTrue(data?.entries?.isNotEmpty() == true)
73+
assertNotNull(data?.entries?.find { it.title == "test Folder" })
7874
}
7975
}

0 commit comments

Comments
 (0)