diff options
author | Tobias Kaminsky <tobias@kaminsky.me> | 2020-09-03 16:43:00 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-09-03 16:43:00 +0300 |
commit | 48e6277ee4ecbf73591504f82260f6b50a2d35dc (patch) | |
tree | 3ca17988c39362f06f3eab2f038bd506f1bd10ff | |
parent | 54b44af08fdeedf975066d65a03014a3b519bc0d (diff) | |
parent | 5619d595edf7d3c9790440eb284fb5f47770bda7 (diff) |
Merge pull request #499 from nextcloud/backport/497/stable-2.3rc-2.3.1-012.3.1stable-2.3
[stable-2.3] use plain userId for search
6 files changed, 43 insertions, 8 deletions
@@ -98,6 +98,7 @@ services: - su www-data -c "OC_PASS=user1 php /var/www/html/occ user:add --password-from-env --display-name='User One' user1" - su www-data -c "OC_PASS=user2 php /var/www/html/occ user:add --password-from-env --display-name='User Two' user2" - su www-data -c "OC_PASS=user3 php /var/www/html/occ user:add --password-from-env --display-name='User Three' user3" + - su www-data -c "OC_PASS=test php /var/www/html/occ user:add --password-from-env --display-name='Test@Test' test@test" - su www-data -c "php /var/www/html/occ user:setting user2 files quota 1G" - su www-data -c "php /var/www/html/occ group:add users" - su www-data -c "php /var/www/html/occ group:adduser users user1" @@ -177,6 +178,7 @@ services: - su www-data -c "OC_PASS=user1 php /var/www/html/occ user:add --password-from-env --display-name='User One' user1" - su www-data -c "OC_PASS=user2 php /var/www/html/occ user:add --password-from-env --display-name='User Two' user2" - su www-data -c "OC_PASS=user3 php /var/www/html/occ user:add --password-from-env --display-name='User Three' user3" + - su www-data -c "OC_PASS=test php /var/www/html/occ user:add --password-from-env --display-name='Test@Test' test@test" - su www-data -c "php /var/www/html/occ user:setting user2 files quota 1G" - su www-data -c "php /var/www/html/occ group:add users" - su www-data -c "php /var/www/html/occ group:adduser users user1" diff --git a/scripts/analysis/lint-results.txt b/scripts/analysis/lint-results.txt index 68af22cd..4088c4cd 100644 --- a/scripts/analysis/lint-results.txt +++ b/scripts/analysis/lint-results.txt @@ -1,2 +1,2 @@ DO NOT TOUCH; GENERATED BY DRONE - <span class="mdl-layout-title">Lint Report: 1 warning</span> + <span class="mdl-layout-title">Lint Report: 6 warning</span> diff --git a/src/androidTest/java/com/owncloud/android/lib/resources/files/SearchRemoteOperationTest.java b/src/androidTest/java/com/owncloud/android/lib/resources/files/SearchRemoteOperationTest.java index dd655a22..a50ac1fc 100644 --- a/src/androidTest/java/com/owncloud/android/lib/resources/files/SearchRemoteOperationTest.java +++ b/src/androidTest/java/com/owncloud/android/lib/resources/files/SearchRemoteOperationTest.java @@ -26,7 +26,13 @@ */ package com.owncloud.android.lib.resources.files; +import android.net.Uri; +import android.os.Bundle; + import com.owncloud.android.AbstractIT; +import com.owncloud.android.lib.common.OwnCloudBasicCredentials; +import com.owncloud.android.lib.common.OwnCloudClient; +import com.owncloud.android.lib.common.OwnCloudClientFactory; import com.owncloud.android.lib.common.operations.RemoteOperationResult; import com.owncloud.android.lib.resources.files.model.RemoteFile; @@ -34,6 +40,8 @@ import org.junit.Test; import java.io.IOException; +import androidx.test.platform.app.InstrumentationRegistry; + import static junit.framework.TestCase.assertEquals; import static junit.framework.TestCase.assertTrue; @@ -343,4 +351,22 @@ public class SearchRemoteOperationTest extends AbstractIT { assertEquals(1, result.getData().size()); assertEquals("/folder/", ((RemoteFile) result.getData().get(0)).getRemotePath()); } + + @Test + public void testSearchWithAtInUsername() { + Bundle arguments = InstrumentationRegistry.getArguments(); + Uri url = Uri.parse(arguments.getString("TEST_SERVER_URL")); + + OwnCloudClient client = OwnCloudClientFactory.createOwnCloudClient(url, context, true); + client.setCredentials(new OwnCloudBasicCredentials("test@test", "test")); + client.setUserId("test@test"); // for test same as userId + + SearchRemoteOperation sut = new SearchRemoteOperation("", + SearchRemoteOperation.SearchType.FILE_SEARCH, + true); + + RemoteOperationResult result = sut.execute(client); + assertTrue(result.isSuccess()); + assertEquals(0, result.getData().size()); + } } diff --git a/src/main/java/com/owncloud/android/lib/common/OwnCloudClient.java b/src/main/java/com/owncloud/android/lib/common/OwnCloudClient.java index 0a6a21c6..8b5732d1 100644 --- a/src/main/java/com/owncloud/android/lib/common/OwnCloudClient.java +++ b/src/main/java/com/owncloud/android/lib/common/OwnCloudClient.java @@ -432,4 +432,8 @@ public class OwnCloudClient extends HttpClient { public String getUserId() { return Uri.encode(userId); } + + public String getUserIdPlain() { + return userId; + } } diff --git a/src/main/java/com/owncloud/android/lib/common/utils/WebDavFileUtils.java b/src/main/java/com/owncloud/android/lib/common/utils/WebDavFileUtils.java index 43b39752..75168fb3 100644 --- a/src/main/java/com/owncloud/android/lib/common/utils/WebDavFileUtils.java +++ b/src/main/java/com/owncloud/android/lib/common/utils/WebDavFileUtils.java @@ -54,7 +54,7 @@ public class WebDavFileUtils { OwnCloudClient client, boolean isReadFolderOperation, boolean isSearchOperation, - String userId) { + String userIdPlain) { ArrayList<Object> mFolderAndFiles = new ArrayList<>(); WebdavEntry we; @@ -62,15 +62,15 @@ public class WebDavFileUtils { if (isReadFolderOperation) { we = new WebdavEntry(remoteData.getResponses()[0], - client.getWebdavUri().getPath()); + client.getWebdavUri().getPath()); mFolderAndFiles.add(fillOCFile(we)); } else { start = 0; } String stripString = client.getWebdavUri().getPath(); - if (isSearchOperation && userId != null) { - stripString = stripString.substring(0, stripString.lastIndexOf("/")) + "/dav/files/" + userId; + if (isSearchOperation && userIdPlain != null) { + stripString = stripString.substring(0, stripString.lastIndexOf("/")) + "/dav/files/" + userIdPlain; stripString = stripString.replaceAll(" ", "%20"); } diff --git a/src/main/java/com/owncloud/android/lib/resources/files/SearchRemoteOperation.java b/src/main/java/com/owncloud/android/lib/resources/files/SearchRemoteOperation.java index 343ba587..cf3d047f 100644 --- a/src/main/java/com/owncloud/android/lib/resources/files/SearchRemoteOperation.java +++ b/src/main/java/com/owncloud/android/lib/resources/files/SearchRemoteOperation.java @@ -98,7 +98,7 @@ public class SearchRemoteOperation extends RemoteOperation { Namespace.XMLNS_NAMESPACE, searchQuery), searchType, - getClient().getUserId(), + getClient().getUserIdPlain(), timestamp, limit, filterOutFiles); @@ -112,8 +112,11 @@ public class SearchRemoteOperation extends RemoteOperation { // get data from remote folder MultiStatus dataInServer = searchMethod.getResponseBodyAsMultiStatus(); WebDavFileUtils webDavFileUtils = new WebDavFileUtils(); - ArrayList<Object> mFolderAndFiles = webDavFileUtils.readData(dataInServer, client, false, true, - client.getUserId()); + ArrayList<Object> mFolderAndFiles = webDavFileUtils.readData(dataInServer, + client, + false, + true, + client.getUserIdPlain()); // Result of the operation result = new RemoteOperationResult(true, status, searchMethod.getResponseHeaders()); |