Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/android-library.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorÁlvaro Brey <alvaro.brey@nextcloud.com>2022-05-06 10:34:01 +0300
committerGitHub <noreply@github.com>2022-05-06 10:34:01 +0300
commitda5060982caf807d32d9560ae18f4ae951ddad96 (patch)
treed332435001ad889e02756909f70fcbfb1b9f189d
parent7b5c3685f4912d3651b4bcda9f6e836c13f0238a (diff)
parent3541e7d762906c9a5646d80428d8f294db612c17 (diff)
Merge pull request #888 from nextcloud/backport/887/stable-2.102.10.1
[stable-2.10] Restore userID encoding when building files DAV uri
-rw-r--r--.drone.yml2
-rw-r--r--library/src/androidTest/java/com/owncloud/android/lib/common/UsernameVariationsIT.kt58
-rw-r--r--library/src/main/java/com/nextcloud/common/NextcloudClient.kt2
-rw-r--r--library/src/main/java/com/nextcloud/common/NextcloudUriDelegate.kt5
-rw-r--r--library/src/main/java/com/owncloud/android/lib/common/OwnCloudClient.java6
5 files changed, 66 insertions, 7 deletions
diff --git a/.drone.yml b/.drone.yml
index 21a3981b..0067bdf2 100644
--- a/.drone.yml
+++ b/.drone.yml
@@ -107,6 +107,7 @@ services:
- 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 "OC_PASS=test php /var/www/html/occ user:add --password-from-env --display-name='Test Spaces' '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"
@@ -201,6 +202,7 @@ services:
- 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 "OC_PASS=test php /var/www/html/occ user:add --password-from-env --display-name='Test Spaces' '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/library/src/androidTest/java/com/owncloud/android/lib/common/UsernameVariationsIT.kt b/library/src/androidTest/java/com/owncloud/android/lib/common/UsernameVariationsIT.kt
new file mode 100644
index 00000000..2ca83a3f
--- /dev/null
+++ b/library/src/androidTest/java/com/owncloud/android/lib/common/UsernameVariationsIT.kt
@@ -0,0 +1,58 @@
+/*
+ * Nextcloud Android Library is available under MIT license
+ *
+ * @author Álvaro Brey Vilas
+ * Copyright (C) 2022 Álvaro Brey Vilas
+ * Copyright (C) 2022 Nextcloud GmbH
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
+ * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+ * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+
+package com.owncloud.android.lib.common
+
+import com.owncloud.android.AbstractIT
+import com.owncloud.android.lib.resources.files.ExistenceCheckRemoteOperation
+import org.junit.Assert
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.junit.runners.Parameterized
+
+@RunWith(Parameterized::class)
+class UsernameVariationsIT(private val username: String) : AbstractIT() {
+ companion object {
+ @Parameterized.Parameters(name = "{0}")
+ @JvmStatic
+ fun data(): Collection<Array<Any>> = listOf(
+ arrayOf("test"),
+ arrayOf("test test"),
+ arrayOf("test@test")
+ )
+ }
+
+ @Test
+ fun testExistenceCheckWithUsername() {
+ val ocClient = OwnCloudClientFactory.createOwnCloudClient(url, context, true)
+ ocClient.credentials = OwnCloudBasicCredentials(username, "test")
+ ocClient.userId = username // for test same as userId
+
+ val existenceCheck = ExistenceCheckRemoteOperation("/", false).execute(ocClient)
+ Assert.assertTrue(existenceCheck.isSuccess)
+ }
+}
diff --git a/library/src/main/java/com/nextcloud/common/NextcloudClient.kt b/library/src/main/java/com/nextcloud/common/NextcloudClient.kt
index bd233be8..30dca153 100644
--- a/library/src/main/java/com/nextcloud/common/NextcloudClient.kt
+++ b/library/src/main/java/com/nextcloud/common/NextcloudClient.kt
@@ -180,7 +180,7 @@ class NextcloudClient private constructor(
}
fun getUserIdEncoded(): String {
- return UserIdEncoder.encode(delegate.userId!!)
+ return delegate.userIdEncoded!!
}
fun getUserIdPlain(): String {
diff --git a/library/src/main/java/com/nextcloud/common/NextcloudUriDelegate.kt b/library/src/main/java/com/nextcloud/common/NextcloudUriDelegate.kt
index dacf6bdf..a2960b25 100644
--- a/library/src/main/java/com/nextcloud/common/NextcloudUriDelegate.kt
+++ b/library/src/main/java/com/nextcloud/common/NextcloudUriDelegate.kt
@@ -41,6 +41,9 @@ class NextcloudUriDelegate(baseUri: Uri, var userId: String?) : NextcloudUriProv
constructor(baseUri: Uri) : this(baseUri, null)
+ val userIdEncoded: String?
+ get() = userId?.let { UserIdEncoder.encode(it) }
+
/**
* Root URI of the Nextcloud server
*/
@@ -51,7 +54,7 @@ class NextcloudUriDelegate(baseUri: Uri, var userId: String?) : NextcloudUriProv
}
override val filesDavUri: Uri
- get() = Uri.parse("$davUri/files/$userId")
+ get() = Uri.parse("$davUri/files/$userIdEncoded")
override val uploadUri: Uri
get() = Uri.parse(baseUri.toString() + AccountUtils.DAV_UPLOAD)
override val davUri: Uri
diff --git a/library/src/main/java/com/owncloud/android/lib/common/OwnCloudClient.java b/library/src/main/java/com/owncloud/android/lib/common/OwnCloudClient.java
index 3bfba70c..d3d082f3 100644
--- a/library/src/main/java/com/owncloud/android/lib/common/OwnCloudClient.java
+++ b/library/src/main/java/com/owncloud/android/lib/common/OwnCloudClient.java
@@ -433,11 +433,7 @@ public class OwnCloudClient extends HttpClient {
* @return uri-encoded userId
*/
public String getUserId() {
- final String userId = nextcloudUriDelegate.getUserId();
- if (userId == null) {
- return null;
- }
- return UserIdEncoder.encode(userId);
+ return nextcloudUriDelegate.getUserIdEncoded();
}
public String getUserIdPlain() {