Browse Source

Fix order for space char

Signed-off-by: alperozturk <alper_ozturk@proton.me>
alperozturk 6 months ago
parent
commit
939388ffe4

+ 36 - 0
app/src/androidTest/java/com/nextcloud/utils/AutoRenameTests.kt

@@ -55,6 +55,18 @@ class AutoRenameTests : AbstractOnServerIT() {
         assert(result == expectedFilename) { "Expected $expectedFilename but got $result" }
     }
 
+    @Test
+    fun testStartEndInvalidExtensionsIfSpaceCharInTheEnd() {
+        capability = capability.apply {
+            forbiddenFilenameExtensionJson = """[".",".part",".part"," "]"""
+        }
+
+        val filename = " .file.part "
+        val result = AutoRename.rename(filename, capability)
+        val expectedFilename = "_file_part"
+        assert(result == expectedFilename) { "Expected $expectedFilename but got $result" }
+    }
+
     @Test
     fun testStartEndInvalidExtensions() {
         val filename = " .file.part "
@@ -63,6 +75,18 @@ class AutoRenameTests : AbstractOnServerIT() {
         assert(result == expectedFilename) { "Expected $expectedFilename but got $result" }
     }
 
+    @Test
+    fun testStartInvalidExtensionIfSpaceCharInTheEnd() {
+        capability = capability.apply {
+            forbiddenFilenameExtensionJson = """[".",".part",".part"," "]"""
+        }
+
+        val filename = " .file.part"
+        val result = AutoRename.rename(filename, capability)
+        val expectedFilename = "_file_part"
+        assert(result == expectedFilename) { "Expected $expectedFilename but got $result" }
+    }
+
     @Test
     fun testStartInvalidExtension() {
         val filename = " .file.part"
@@ -71,6 +95,18 @@ class AutoRenameTests : AbstractOnServerIT() {
         assert(result == expectedFilename) { "Expected $expectedFilename but got $result" }
     }
 
+    @Test
+    fun testEndInvalidExtensionIfSpaceCharInTheEnd() {
+        capability = capability.apply {
+            forbiddenFilenameExtensionJson = """[".",".part",".part"," "]"""
+        }
+
+        val filename = ".file.part "
+        val result = AutoRename.rename(filename, capability)
+        val expectedFilename = "_file_part"
+        assert(result == expectedFilename) { "Expected $expectedFilename but got $result" }
+    }
+
     @Test
     fun testEndInvalidExtension() {
         val filename = ".file.part "

+ 7 - 3
app/src/main/java/com/nextcloud/utils/autoRename/AutoRename.kt

@@ -46,12 +46,16 @@ object AutoRename {
             }
 
             forbiddenFilenameExtensionJson?.let {
+                // First handle if space char exist
+                forbiddenFilenameExtensions().find { it == StringConstants.SPACE }?.let {
+                    pathSegments.replaceAll { segment ->
+                        segment.trim()
+                    }
+                }
+
                 forbiddenFilenameExtensions().forEach { forbiddenExtension ->
                     pathSegments.replaceAll { segment ->
                         var modifiedSegment = segment
-                        if (forbiddenExtension == StringConstants.SPACE) {
-                            modifiedSegment = modifiedSegment.trim()
-                        }
 
                         if (modifiedSegment.endsWith(forbiddenExtension, ignoreCase = true) ||
                             modifiedSegment.startsWith(forbiddenExtension, ignoreCase = true)