diff options
7 files changed, 61 insertions, 22 deletions
diff --git a/gradle.properties b/gradle.properties index 60377ad6..d20565d6 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,4 +2,6 @@ NC_TEST_SERVER_BASEURL=https://server NC_TEST_SERVER_USERNAME=test NC_TEST_SERVER_PASSWORD=test +NC_TEST_SERVER_USERNAME2=admin +NC_TEST_SERVER_PASSWORD2=admin android.useAndroidX=true diff --git a/library/build.gradle b/library/build.gradle index a813250d..e441791b 100644 --- a/library/build.gradle +++ b/library/build.gradle @@ -131,6 +131,8 @@ android { testInstrumentationRunnerArgument "TEST_SERVER_URL", "${NC_TEST_SERVER_BASEURL}" testInstrumentationRunnerArgument "TEST_SERVER_USERNAME", "${NC_TEST_SERVER_USERNAME}" testInstrumentationRunnerArgument "TEST_SERVER_PASSWORD", "${NC_TEST_SERVER_PASSWORD}" + testInstrumentationRunnerArgument "TEST_SERVER_USERNAME2", "${NC_TEST_SERVER_USERNAME2}" + testInstrumentationRunnerArgument "TEST_SERVER_PASSWORD2", "${NC_TEST_SERVER_PASSWORD2}" testInstrumentationRunnerArguments disableAnalytics: 'true' multiDexEnabled true diff --git a/library/src/androidTest/java/com/nextcloud/android/lib/resources/dashboard/DashboardGetWidgetItemsRemoteOperationIT.kt b/library/src/androidTest/java/com/nextcloud/android/lib/resources/dashboard/DashboardGetWidgetItemsRemoteOperationIT.kt index 75a59a39..a52be361 100644 --- a/library/src/androidTest/java/com/nextcloud/android/lib/resources/dashboard/DashboardGetWidgetItemsRemoteOperationIT.kt +++ b/library/src/androidTest/java/com/nextcloud/android/lib/resources/dashboard/DashboardGetWidgetItemsRemoteOperationIT.kt @@ -23,13 +23,30 @@ package com.nextcloud.android.lib.resources.dashboard import com.owncloud.android.AbstractIT +import com.owncloud.android.lib.resources.files.CreateFolderRemoteOperation +import com.owncloud.android.lib.resources.shares.CreateShareRemoteOperation +import com.owncloud.android.lib.resources.shares.ShareType import org.junit.Assert.assertTrue import org.junit.Test class DashboardGetWidgetItemsRemoteOperationIT : AbstractIT() { @Test fun getItems() { - val widgetId = "recommendations" + // create folder to have some content + assertTrue(CreateFolderRemoteOperation("/testFolder", false).execute(client2).isSuccess) + assertTrue( + CreateShareRemoteOperation( + "/testFolder", + ShareType.USER, + client.userId, + false, + "", + 31 + ).execute(client2) + .isSuccess + ) + + val widgetId = "activity" val result = DashboardGetWidgetItemsRemoteOperation(widgetId, LIMIT_SIZE).execute(nextcloudClient) diff --git a/library/src/androidTest/java/com/nextcloud/android/lib/resources/dashboard/DashboardListWidgetsRemoteOperationIT.kt b/library/src/androidTest/java/com/nextcloud/android/lib/resources/dashboard/DashboardListWidgetsRemoteOperationIT.kt index df163e53..69b2d1f6 100644 --- a/library/src/androidTest/java/com/nextcloud/android/lib/resources/dashboard/DashboardListWidgetsRemoteOperationIT.kt +++ b/library/src/androidTest/java/com/nextcloud/android/lib/resources/dashboard/DashboardListWidgetsRemoteOperationIT.kt @@ -37,11 +37,10 @@ class DashboardListWidgetsRemoteOperationIT : AbstractIT() { assertTrue(result.resultData["recommendations"]?.buttons?.getOrNull(0) == null) - assertTrue(result.resultData["notes"]?.buttons?.getOrNull(0)?.text?.isNotEmpty() == true) - assertTrue(result.resultData["notes"]?.buttons?.getOrNull(0)?.type == DashBoardButtonType.NEW) - assertTrue(result.resultData["notes"]?.roundIcons == false) + assertEquals(1, result.resultData["activity"]?.buttons?.size) + assertTrue(result.resultData["activity"]?.buttons?.getOrNull(0)?.type == DashBoardButtonType.MORE) + assertTrue(result.resultData["activity"]?.roundIcons == false) - assertEquals(0, result.resultData["activity"]?.buttons?.size) - assertTrue(result.resultData["activity"]?.roundIcons == true) + assertTrue(result.resultData["user_status"]?.roundIcons == true) } } diff --git a/library/src/androidTest/java/com/owncloud/android/AbstractIT.java b/library/src/androidTest/java/com/owncloud/android/AbstractIT.java index 352761a6..c8692779 100644 --- a/library/src/androidTest/java/com/owncloud/android/AbstractIT.java +++ b/library/src/androidTest/java/com/owncloud/android/AbstractIT.java @@ -81,6 +81,7 @@ public abstract class AbstractIT { public static final int MILLI_TO_SECOND = 1000; public static OwnCloudClient client; + public static OwnCloudClient client2; protected static NextcloudClient nextcloudClient; protected static Context context; protected static Uri url; @@ -107,6 +108,14 @@ public abstract class AbstractIT { client.setCredentials(new OwnCloudBasicCredentials(loginName, password)); client.setUserId(loginName); // for test same as userId + // second user to test internal sharing + String loginName2 = arguments.getString("TEST_SERVER_USERNAME2"); + String password2 = arguments.getString("TEST_SERVER_PASSWORD2"); + + client2 = OwnCloudClientFactory.createOwnCloudClient(url, context, true); + client2.setCredentials(new OwnCloudBasicCredentials(loginName2, password2)); + client2.setUserId(loginName2); // for test same as userId + OwnCloudClientManagerFactory.setUserAgent("Mozilla/5.0 (Android) Nextcloud-android/1.0.0"); String userId = loginName; // for test same as userId diff --git a/library/src/main/java/com/nextcloud/android/lib/resources/search/UnifiedSearchRemoteOperation.kt b/library/src/main/java/com/nextcloud/android/lib/resources/search/UnifiedSearchRemoteOperation.kt index 91b03bfb..093adaf0 100644 --- a/library/src/main/java/com/nextcloud/android/lib/resources/search/UnifiedSearchRemoteOperation.kt +++ b/library/src/main/java/com/nextcloud/android/lib/resources/search/UnifiedSearchRemoteOperation.kt @@ -66,8 +66,8 @@ class UnifiedSearchRemoteOperation( var uri = client.baseUri.toString() + ENDPOINT + provider + - JSON_FORMAT + SEARCH + + JSON_FORMAT + TERM + URLEncoder.encode(query, "UTF-8") + LIMIT.format(limit) diff --git a/library/src/main/java/com/owncloud/android/lib/common/network/WebdavEntry.java b/library/src/main/java/com/owncloud/android/lib/common/network/WebdavEntry.java index fa872fe8..57c830c9 100644 --- a/library/src/main/java/com/owncloud/android/lib/common/network/WebdavEntry.java +++ b/library/src/main/java/com/owncloud/android/lib/common/network/WebdavEntry.java @@ -46,6 +46,7 @@ import java.util.List; import javax.annotation.Nullable; +import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; import lombok.Getter; import lombok.Setter; @@ -124,16 +125,26 @@ public class WebdavEntry { @Getter private ShareeUser[] sharees = new ShareeUser[0]; @Getter private String richWorkspace = null; @Getter private boolean isLocked = false; - @Getter private FileLockType lockOwnerType = null; - @Getter private String lockOwnerId = null; - @Getter private String lockOwnerDisplayName = null; - @Getter private long lockTimestamp; - @Getter private String lockOwnerEditor = null; - @Getter private long lockTimeout; - @Getter private String lockToken = null; + @Getter + private FileLockType lockOwnerType = null; + @Getter + private String lockOwnerId = null; + @Getter + private String lockOwnerDisplayName = null; + @Getter + private long lockTimestamp; + @Getter + private String lockOwnerEditor = null; + @Getter + private long lockTimeout; + @Getter + private String lockToken = null; public enum MountType {INTERNAL, EXTERNAL, GROUP} + @SuppressFBWarnings( + value = "STT_TOSTRING_STORED_IN_FIELD", + justification = "Will be replaced with davX5") public WebdavEntry(MultiStatusResponse ms, String splitElement) { resetData(); @@ -155,8 +166,7 @@ public class WebdavEntry { if (prop != null) { name = prop.getName().toString(); name = name.substring(1, name.length() - 1); - } - else { + } else { String[] tmp = path.split("/"); if (tmp.length > 0) name = tmp[tmp.length - 1]; @@ -178,7 +188,7 @@ public class WebdavEntry { } } } - + // check if it's a folder in the standard way: see RFC2518 12.2 . RFC4918 14.3 // {DAV:}resourcetype prop = propSet.get(DavPropertyName.RESOURCETYPE); @@ -186,9 +196,9 @@ public class WebdavEntry { Object value = prop.getValue(); if (value != null) { contentType = "DIR"; // a specific attribute would be better, - // but this is enough; - // unless while we have no reason to distinguish - // MIME types for folders + // but this is enough; + // unless while we have no reason to distinguish + // MIME types for folders } } @@ -341,7 +351,7 @@ public class WebdavEntry { } else { hasPreview = true; } - + // NC trashbin-original-location <nc:trashbin-original-location> prop = propSet.get(TRASHBIN_ORIGINAL_LOCATION, ncNamespace); if (prop != null) { @@ -386,7 +396,7 @@ public class WebdavEntry { ArrayList list = (ArrayList) prop.getValue(); List<ShareeUser> tempList = new ArrayList<>(); - + for (int i = 0; i < list.size(); i++) { Element element = (Element) list.get(i); |