added DEV version to repo
This commit is contained in:
parent
1ef725ef20
commit
23e673bfdf
2135 changed files with 97033 additions and 21206 deletions
|
|
@ -3,7 +3,7 @@
|
|||
*
|
||||
* SPDX-FileCopyrightText: 2020 Tobias Kaminsky <tobias@kaminsky.me>
|
||||
* SPDX-FileCopyrightText: 2020 Nextcloud GmbH
|
||||
* SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
* SPDX-License-Identifier: AGPL-3.0-or-later OR GPL-2.0-only
|
||||
*/
|
||||
package com.owncloud.android.utils
|
||||
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
*
|
||||
* SPDX-FileCopyrightText: 2022 Tobias Kaminsky <tobias@kaminsky.me>
|
||||
* SPDX-FileCopyrightText: 2022 Nextcloud GmbH
|
||||
* SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
* SPDX-License-Identifier: AGPL-3.0-or-later OR GPL-2.0-only
|
||||
*/
|
||||
package com.owncloud.android.utils
|
||||
|
||||
|
|
|
|||
|
|
@ -1,9 +1,9 @@
|
|||
/*
|
||||
* Nextcloud - Android Client
|
||||
*
|
||||
* SPDX-FileCopyrightText: 2023 Alper Ozturk <alper_ozturk@proton.me>
|
||||
* SPDX-FileCopyrightText: 2023 Alper Ozturk <alper.ozturk@nextcloud.com>
|
||||
* SPDX-FileCopyrightText: 2023 Nextcloud GmbH
|
||||
* SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
* SPDX-License-Identifier: AGPL-3.0-or-later OR GPL-2.0-only
|
||||
*/
|
||||
package com.owncloud.android.utils
|
||||
|
||||
|
|
@ -12,18 +12,15 @@ import android.graphics.Bitmap
|
|||
import android.graphics.drawable.BitmapDrawable
|
||||
import androidx.test.platform.app.InstrumentationRegistry
|
||||
import org.junit.After
|
||||
import org.junit.Assert.fail
|
||||
import org.junit.Before
|
||||
import org.junit.Test
|
||||
|
||||
class DrawableUtilTests {
|
||||
|
||||
private var sut: DrawableUtil? = null
|
||||
private var context: Context? = null
|
||||
|
||||
@Before
|
||||
fun setUp() {
|
||||
sut = DrawableUtil()
|
||||
context = InstrumentationRegistry.getInstrumentation().context
|
||||
}
|
||||
|
||||
|
|
@ -32,18 +29,13 @@ class DrawableUtilTests {
|
|||
val bitmap: Bitmap = Bitmap.createBitmap(2, 2, Bitmap.Config.ARGB_8888)
|
||||
val drawable = BitmapDrawable(context?.resources, bitmap)
|
||||
|
||||
val layerDrawable = sut?.addDrawableAsOverlay(drawable, drawable)
|
||||
val layerDrawable = DrawableUtil.addDrawableAsOverlay(drawable, drawable)
|
||||
|
||||
if (layerDrawable == null) {
|
||||
fail("Layer drawable expected to be not null")
|
||||
}
|
||||
|
||||
assert(layerDrawable?.numberOfLayers == 2)
|
||||
assert(layerDrawable.numberOfLayers == 2)
|
||||
}
|
||||
|
||||
@After
|
||||
fun destroy() {
|
||||
sut = null
|
||||
context = null
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
*
|
||||
* SPDX-FileCopyrightText: 2023 Tobias Kaminsky <tobias@kaminsky.me>
|
||||
* SPDX-FileCopyrightText: 2023 Nextcloud GmbH
|
||||
* SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
* SPDX-License-Identifier: AGPL-3.0-or-later OR GPL-2.0-only
|
||||
*/
|
||||
package com.owncloud.android.utils
|
||||
|
||||
|
|
@ -118,7 +118,7 @@ nDO4ew==
|
|||
)
|
||||
|
||||
val users = mutableListOf(
|
||||
DecryptedUser(userId, cert)
|
||||
DecryptedUser(userId, cert, null)
|
||||
)
|
||||
|
||||
// val filedrop = mutableMapOf(
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
*
|
||||
* SPDX-FileCopyrightText: 2023 Tobias Kaminsky <tobias@kaminsky.me>
|
||||
* SPDX-FileCopyrightText: 2023 Nextcloud GmbH
|
||||
* SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
* SPDX-License-Identifier: AGPL-3.0-or-later OR GPL-2.0-only
|
||||
*/
|
||||
package com.owncloud.android.utils
|
||||
|
||||
|
|
|
|||
|
|
@ -3,13 +3,14 @@
|
|||
*
|
||||
* SPDX-FileCopyrightText: 2023 Tobias Kaminsky <tobias@kaminsky.me>
|
||||
* SPDX-FileCopyrightText: 2023 Nextcloud GmbH
|
||||
* SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
* SPDX-License-Identifier: AGPL-3.0-or-later OR GPL-2.0-only
|
||||
*/
|
||||
package com.owncloud.android.utils
|
||||
|
||||
import com.google.gson.reflect.TypeToken
|
||||
import com.nextcloud.client.account.MockUser
|
||||
import com.nextcloud.common.User
|
||||
import com.nextcloud.utils.extensions.findMetadataKeyByUserId
|
||||
import com.owncloud.android.EncryptionIT
|
||||
import com.owncloud.android.datamodel.OCFile
|
||||
import com.owncloud.android.datamodel.e2e.v1.decrypted.Data
|
||||
|
|
@ -221,7 +222,7 @@ class EncryptionUtilsV2IT : EncryptionIT() {
|
|||
val metadataKeyBase64 = EncryptionUtils.generateKeyString()
|
||||
val metadataKey = EncryptionUtils.decodeStringToBase64Bytes(metadataKeyBase64)
|
||||
|
||||
val user = DecryptedUser("t1", encryptionTestUtils.t1PublicKey)
|
||||
val user = DecryptedUser("t1", encryptionTestUtils.t1PublicKey, null)
|
||||
|
||||
val encryptedUser = encryptionUtilsV2.encryptUser(user, metadataKey)
|
||||
assertNotEquals(encryptedUser.encryptedMetadataKey, metadataKeyBase64)
|
||||
|
|
@ -274,6 +275,11 @@ class EncryptionUtilsV2IT : EncryptionIT() {
|
|||
arbitraryDataProvider
|
||||
)
|
||||
|
||||
// V1 doesn't have decryptedMetadataKey so that we can ignore it for comparison
|
||||
for (user in decrypted.users) {
|
||||
user.decryptedMetadataKey = null
|
||||
}
|
||||
|
||||
assertEquals(metadataFile, decrypted)
|
||||
}
|
||||
|
||||
|
|
@ -290,7 +296,8 @@ class EncryptionUtilsV2IT : EncryptionIT() {
|
|||
mimeType = MimeType.JPEG
|
||||
},
|
||||
EncryptionUtils.generateIV(),
|
||||
EncryptionUtils.generateUid(), // random string, not real tag
|
||||
// random string, not real tag
|
||||
EncryptionUtils.generateUid(),
|
||||
EncryptionUtils.generateKey(),
|
||||
metadataFile,
|
||||
storageManager
|
||||
|
|
@ -404,8 +411,8 @@ class EncryptionUtilsV2IT : EncryptionIT() {
|
|||
assertTrue(true) // if we reach this, test is successful
|
||||
}
|
||||
|
||||
private fun generateDecryptedFileV1(): com.owncloud.android.datamodel.e2e.v1.decrypted.DecryptedFile {
|
||||
return com.owncloud.android.datamodel.e2e.v1.decrypted.DecryptedFile().apply {
|
||||
private fun generateDecryptedFileV1(): com.owncloud.android.datamodel.e2e.v1.decrypted.DecryptedFile =
|
||||
com.owncloud.android.datamodel.e2e.v1.decrypted.DecryptedFile().apply {
|
||||
encrypted = Data().apply {
|
||||
key = EncryptionUtils.generateKeyString()
|
||||
filename = "Random filename.jpg"
|
||||
|
|
@ -415,7 +422,6 @@ class EncryptionUtilsV2IT : EncryptionIT() {
|
|||
initializationVector = EncryptionUtils.generateKeyString()
|
||||
authenticationTag = EncryptionUtils.generateKeyString()
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testMigrateDecryptedV1ToV2() {
|
||||
|
|
@ -488,7 +494,7 @@ class EncryptionUtilsV2IT : EncryptionIT() {
|
|||
|
||||
var metadataFile = generateDecryptedFolderMetadataFile(enc1, enc1Cert)
|
||||
|
||||
metadataFile = encryptionUtilsV2.addShareeToMetadata(metadataFile, enc2.accountName, enc2Cert)
|
||||
metadataFile = encryptionUtilsV2.addShareeToMetadata(metadataFile, enc2.accountName, enc2Cert, null)
|
||||
|
||||
val encryptedMetadataFile = encryptionUtilsV2.encryptFolderMetadataFile(
|
||||
metadataFile,
|
||||
|
|
@ -540,7 +546,12 @@ class EncryptionUtilsV2IT : EncryptionIT() {
|
|||
val enc1 = MockUser("enc1", "Nextcloud")
|
||||
val enc2 = MockUser("enc2", "Nextcloud")
|
||||
var metadataFile = generateDecryptedFolderMetadataFile(enc1, enc1Cert)
|
||||
metadataFile = encryptionUtilsV2.addShareeToMetadata(metadataFile, enc2.accountName, enc2Cert)
|
||||
metadataFile = encryptionUtilsV2.addShareeToMetadata(
|
||||
metadataFile,
|
||||
enc2.accountName,
|
||||
enc2Cert,
|
||||
metadataFile.users.findMetadataKeyByUserId(enc2.accountName)
|
||||
)
|
||||
|
||||
assertEquals(2, metadataFile.users.size)
|
||||
|
||||
|
|
@ -585,7 +596,7 @@ class EncryptionUtilsV2IT : EncryptionIT() {
|
|||
)
|
||||
|
||||
val users = mutableListOf(
|
||||
DecryptedUser(user.accountName, cert)
|
||||
DecryptedUser(user.accountName, cert, null)
|
||||
)
|
||||
|
||||
metadata.keyChecksums.add(encryptionUtilsV2.hashMetadataKey(metadata.metadataKey))
|
||||
|
|
@ -733,8 +744,6 @@ class EncryptionUtilsV2IT : EncryptionIT() {
|
|||
|Rei/RGBQ==","userId": "john"}],"version": "2"}
|
||||
""".trimMargin()
|
||||
|
||||
val base64Metadata = EncryptionUtils.encodeStringToBase64String(metadata)
|
||||
|
||||
val privateKey = EncryptionUtils.PEMtoPrivateKey(encryptionTestUtils.t1PrivateKey)
|
||||
val certificateT1 = EncryptionUtils.convertCertFromString(encryptionTestUtils.t1PublicKey)
|
||||
val certificateEnc2 = EncryptionUtils.convertCertFromString(enc2Cert)
|
||||
|
|
@ -745,23 +754,18 @@ class EncryptionUtilsV2IT : EncryptionIT() {
|
|||
metadata
|
||||
)
|
||||
|
||||
val base64Ans = encryptionUtilsV2.extractSignedString(signed)
|
||||
|
||||
// verify
|
||||
val certs = listOf(
|
||||
certificateEnc2,
|
||||
certificateT1
|
||||
)
|
||||
assertTrue(encryptionUtilsV2.verifySignedMessage(signed, certs))
|
||||
assertTrue(encryptionUtilsV2.verifySignedMessage(base64Ans, base64Metadata, certs))
|
||||
|
||||
assertTrue(encryptionUtilsV2.verifySignedData(signed, certs))
|
||||
}
|
||||
|
||||
@Throws(Throwable::class)
|
||||
@Test
|
||||
fun sign() {
|
||||
val sut = "randomstring123"
|
||||
val json = "randomstring123"
|
||||
val jsonBase64 = EncryptionUtils.encodeStringToBase64String(json)
|
||||
|
||||
val privateKey = EncryptionUtils.PEMtoPrivateKey(encryptionTestUtils.t1PrivateKey)
|
||||
val certificate = EncryptionUtils.convertCertFromString(encryptionTestUtils.t1PublicKey)
|
||||
|
|
@ -772,15 +776,12 @@ class EncryptionUtilsV2IT : EncryptionIT() {
|
|||
sut
|
||||
)
|
||||
|
||||
val base64Ans = encryptionUtilsV2.extractSignedString(signed)
|
||||
|
||||
// verify
|
||||
val certs = listOf(
|
||||
EncryptionUtils.convertCertFromString(enc2Cert),
|
||||
certificate
|
||||
)
|
||||
assertTrue(encryptionUtilsV2.verifySignedMessage(signed, certs))
|
||||
assertTrue(encryptionUtilsV2.verifySignedMessage(base64Ans, jsonBase64, certs))
|
||||
|
||||
assertTrue(encryptionUtilsV2.verifySignedData(signed, certs))
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
@ -856,6 +857,11 @@ class EncryptionUtilsV2IT : EncryptionIT() {
|
|||
arbitraryDataProvider
|
||||
)
|
||||
|
||||
// V1 doesn't have decryptedMetadataKey so that we can ignore it for comparison
|
||||
for (user in decryptedFolderMetadata2.users) {
|
||||
user.decryptedMetadataKey = null
|
||||
}
|
||||
|
||||
// compare
|
||||
assertTrue(
|
||||
EncryptionTestIT.compareJsonStrings(
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
* Nextcloud - Android Client
|
||||
*
|
||||
* SPDX-FileCopyrightText: 2024 Your Name <your@email.com>
|
||||
* SPDX-FileCopyrightText: 2024 Alper Ozturk <alper.ozturk@nextcloud.com>
|
||||
* SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
*/
|
||||
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
*
|
||||
* SPDX-FileCopyrightText: 2022 Tobias Kaminsky <tobias@kaminsky.me>
|
||||
* SPDX-FileCopyrightText: 2022 Nextcloud GmbH
|
||||
* SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
* SPDX-License-Identifier: AGPL-3.0-or-later OR GPL-2.0-only
|
||||
*/
|
||||
package com.owncloud.android.utils
|
||||
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
*
|
||||
* SPDX-FileCopyrightText: 2020 Tobias Kaminsky <tobias@kaminsky.me>
|
||||
* SPDX-FileCopyrightText: 2020 Nextcloud GmbH
|
||||
* SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
* SPDX-License-Identifier: AGPL-3.0-or-later OR GPL-2.0-only
|
||||
*/
|
||||
package com.owncloud.android.utils
|
||||
|
||||
|
|
@ -141,7 +141,6 @@ class FileStorageUtilsIT : AbstractIT() {
|
|||
assertEquals("Internal storage/", pathToUserFriendlyDisplay("/storage/emulated/0/"))
|
||||
}
|
||||
|
||||
private fun pathToUserFriendlyDisplay(path: String): String {
|
||||
return pathToUserFriendlyDisplay(path, targetContext, targetContext.resources)
|
||||
}
|
||||
private fun pathToUserFriendlyDisplay(path: String): String =
|
||||
pathToUserFriendlyDisplay(path, targetContext, targetContext.resources)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
* Nextcloud - Android Client
|
||||
*
|
||||
* SPDX-FileCopyrightText: 2020 Andy Scherzinger <info@andy-scherzinger.de>
|
||||
* SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
* SPDX-License-Identifier: AGPL-3.0-or-later OR GPL-2.0-only
|
||||
*/
|
||||
package com.owncloud.android.utils
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
* Nextcloud - Android Client
|
||||
*
|
||||
* SPDX-FileCopyrightText: 2024 Your Name <your@email.com>
|
||||
* SPDX-FileCopyrightText: 2024 Alper Ozturk <alper.ozturk@nextcloud.com>
|
||||
* SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
*/
|
||||
package com.owncloud.android.utils
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
* Nextcloud - Android Client
|
||||
*
|
||||
* SPDX-FileCopyrightText: 2020 Andy Scherzinger <info@andy-scherzinger.de>
|
||||
* SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
* SPDX-License-Identifier: AGPL-3.0-or-later OR GPL-2.0-only
|
||||
*/
|
||||
package com.owncloud.android.utils
|
||||
|
||||
|
|
@ -11,6 +11,7 @@ import com.owncloud.android.AbstractIT
|
|||
import com.owncloud.android.datamodel.MediaFolder
|
||||
import com.owncloud.android.datamodel.MediaFolderType
|
||||
import com.owncloud.android.datamodel.SyncedFolder
|
||||
import com.owncloud.android.utils.SyncedFolderUtils.hasExcludePrefix
|
||||
import org.apache.commons.io.FileUtils
|
||||
import org.junit.AfterClass
|
||||
import org.junit.Assert
|
||||
|
|
@ -205,6 +206,21 @@ class SyncedFolderUtilsTest : AbstractIT() {
|
|||
Assert.assertFalse(SyncedFolderUtils.isQualifyingMediaFolder(folder))
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testInstantUploadPathIgnoreExcludedPrefixes() {
|
||||
val testFiles = listOf(
|
||||
"IMG_nnn.jpg",
|
||||
"my_documents",
|
||||
"Music",
|
||||
".trashed_IMG_nnn.jpg",
|
||||
".pending_IMG_nnn.jpg",
|
||||
".nomedia",
|
||||
".thumbdata_IMG_nnn",
|
||||
".thumbnail"
|
||||
).filter { !hasExcludePrefix(it) }
|
||||
Assert.assertTrue(testFiles.size == 3)
|
||||
}
|
||||
|
||||
companion object {
|
||||
private const val SELFIE = "selfie.png"
|
||||
private const val SCREENSHOT = "screenshot.JPG"
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
*
|
||||
* SPDX-FileCopyrightText: 2023 Tobias Kaminsky <tobias@kaminsky.me>
|
||||
* SPDX-FileCopyrightText: 2023 Nextcloud GmbH
|
||||
* SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
* SPDX-License-Identifier: AGPL-3.0-or-later OR GPL-2.0-only
|
||||
*/
|
||||
package com.owncloud.android.utils.theme
|
||||
|
||||
|
|
@ -17,9 +17,12 @@ import org.junit.Test
|
|||
class CapabilityUtilsIT : AbstractIT() {
|
||||
@Test
|
||||
fun checkOutdatedWarning() {
|
||||
assertFalse(test(NextcloudVersion.nextcloud_28))
|
||||
assertFalse(test(NextcloudVersion.nextcloud_27))
|
||||
assertFalse(test(NextcloudVersion.nextcloud_31))
|
||||
assertFalse(test(NextcloudVersion.nextcloud_30))
|
||||
|
||||
assertTrue(test(NextcloudVersion.nextcloud_29))
|
||||
assertTrue(test(NextcloudVersion.nextcloud_28))
|
||||
assertTrue(test(NextcloudVersion.nextcloud_27))
|
||||
assertTrue(test(NextcloudVersion.nextcloud_26))
|
||||
assertTrue(test(NextcloudVersion.nextcloud_25))
|
||||
assertTrue(test(NextcloudVersion.nextcloud_24))
|
||||
|
|
@ -27,13 +30,8 @@ class CapabilityUtilsIT : AbstractIT() {
|
|||
assertTrue(test(NextcloudVersion.nextcloud_22))
|
||||
assertTrue(test(NextcloudVersion.nextcloud_21))
|
||||
assertTrue(test(OwnCloudVersion.nextcloud_20))
|
||||
assertTrue(test(OwnCloudVersion.nextcloud_19))
|
||||
assertTrue(test(OwnCloudVersion.nextcloud_18))
|
||||
assertTrue(test(OwnCloudVersion.nextcloud_17))
|
||||
assertTrue(test(OwnCloudVersion.nextcloud_16))
|
||||
}
|
||||
|
||||
private fun test(version: OwnCloudVersion): Boolean {
|
||||
return CapabilityUtils.checkOutdatedWarning(targetContext.resources, version, false)
|
||||
}
|
||||
private fun test(version: OwnCloudVersion): Boolean =
|
||||
CapabilityUtils.checkOutdatedWarning(targetContext.resources, version, false)
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue