Skip to content

Commit

Permalink
Merge pull request #888 from nextcloud/backport/887/stable-2.10
Browse files Browse the repository at this point in the history
[stable-2.10] Restore userID encoding when building files DAV uri
  • Loading branch information
AlvaroBrey authored May 6, 2022
2 parents 7b5c368 + 3541e7d commit da50609
Show file tree
Hide file tree
Showing 5 changed files with 66 additions and 7 deletions.
2 changes: 2 additions & 0 deletions .drone.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down Expand Up @@ -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"
Expand Down
Original file line number Diff line number Diff line change
@@ -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)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -180,7 +180,7 @@ class NextcloudClient private constructor(
}

fun getUserIdEncoded(): String {
return UserIdEncoder.encode(delegate.userId!!)
return delegate.userIdEncoded!!
}

fun getUserIdPlain(): String {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
*/
Expand All @@ -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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -433,11 +433,7 @@ private void logCookie(Cookie cookie) {
* @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() {
Expand Down

0 comments on commit da50609

Please sign in to comment.