Browse Source

Merge pull request #13541 from nextcloud/bugfix/clear-connectivity-cache-after-login

BugFix - Dont Set Connectivity Cache True When Base Server Address Is Empty & Fix Screenshot Tests
Alper Öztürk 8 months ago
parent
commit
a2eba07608
18 changed files with 106 additions and 96 deletions
  1. BIN
      app/screenshots/gplay/debug/com.nextcloud.client.SyncedFoldersActivityIT_open.png
  2. BIN
      app/screenshots/gplay/debug/com.nextcloud.client.UploadListActivityActivityIT_openDrawer.png
  3. BIN
      app/screenshots/gplay/debug/com.owncloud.android.ui.activity.ContactsPreferenceActivityIT_openContactsPreference.png
  4. BIN
      app/screenshots/gplay/debug/com.owncloud.android.ui.activity.ContactsPreferenceActivityIT_openVCF.png
  5. BIN
      app/screenshots/gplay/debug/com.owncloud.android.ui.activity.FolderPickerActivityIT_open.png
  6. BIN
      app/screenshots/gplay/debug/com.owncloud.android.ui.activity.FolderPickerActivityIT_testChooseLocationAction.png
  7. BIN
      app/screenshots/gplay/debug/com.owncloud.android.ui.activity.FolderPickerActivityIT_testMoveOrCopy.png
  8. BIN
      app/screenshots/gplay/debug/com.owncloud.android.ui.activity.ManageAccountsActivityIT_open.png
  9. BIN
      app/screenshots/gplay/debug/com.owncloud.android.ui.activity.ReceiveExternalFilesActivityIT_open.png
  10. BIN
      app/screenshots/gplay/debug/com.owncloud.android.ui.activity.ReceiveExternalFilesActivityIT_openMultiAccount.png
  11. BIN
      app/screenshots/gplay/debug/com.owncloud.android.ui.fragment.BackupListFragmentIT_showCalendarList.png
  12. BIN
      app/screenshots/gplay/debug/com.owncloud.android.ui.fragment.BackupListFragmentIT_showContactList.png
  13. BIN
      app/screenshots/gplay/debug/com.owncloud.android.ui.fragment.BackupListFragmentIT_showLoading.png
  14. 0 10
      app/src/androidTest/java/com/owncloud/android/files/services/LegacyFileUploaderIT.kt
  15. 0 64
      app/src/androidTest/java/com/owncloud/android/ui/preview/PreviewTextFileFragmentTest.java
  16. 89 0
      app/src/androidTest/java/com/owncloud/android/ui/preview/PreviewTextFileFragmentTest.kt
  17. 15 20
      app/src/main/java/com/nextcloud/client/network/ConnectivityServiceImpl.java
  18. 2 2
      app/src/test/java/com/nextcloud/client/network/ConnectivityServiceTest.kt

BIN
app/screenshots/gplay/debug/com.nextcloud.client.SyncedFoldersActivityIT_open.png


BIN
app/screenshots/gplay/debug/com.nextcloud.client.UploadListActivityActivityIT_openDrawer.png


BIN
app/screenshots/gplay/debug/com.owncloud.android.ui.activity.ContactsPreferenceActivityIT_openContactsPreference.png


BIN
app/screenshots/gplay/debug/com.owncloud.android.ui.activity.ContactsPreferenceActivityIT_openVCF.png


BIN
app/screenshots/gplay/debug/com.owncloud.android.ui.activity.FolderPickerActivityIT_open.png


BIN
app/screenshots/gplay/debug/com.owncloud.android.ui.activity.FolderPickerActivityIT_testChooseLocationAction.png


BIN
app/screenshots/gplay/debug/com.owncloud.android.ui.activity.FolderPickerActivityIT_testMoveOrCopy.png


BIN
app/screenshots/gplay/debug/com.owncloud.android.ui.activity.ManageAccountsActivityIT_open.png


BIN
app/screenshots/gplay/debug/com.owncloud.android.ui.activity.ReceiveExternalFilesActivityIT_open.png


BIN
app/screenshots/gplay/debug/com.owncloud.android.ui.activity.ReceiveExternalFilesActivityIT_openMultiAccount.png


BIN
app/screenshots/gplay/debug/com.owncloud.android.ui.fragment.BackupListFragmentIT_showCalendarList.png


BIN
app/screenshots/gplay/debug/com.owncloud.android.ui.fragment.BackupListFragmentIT_showContactList.png


BIN
app/screenshots/gplay/debug/com.owncloud.android.ui.fragment.BackupListFragmentIT_showLoading.png


+ 0 - 10
app/src/androidTest/java/com/owncloud/android/files/services/LegacyFileUploaderIT.kt

@@ -1,10 +0,0 @@
-/*
- * Nextcloud - Android Client
- *
- * SPDX-FileCopyrightText: 2022 Tobias Kaminsky <tobias@kaminsky.me>
- * SPDX-FileCopyrightText: 2022 Nextcloud GmbH
- * SPDX-License-Identifier: AGPL-3.0-or-later OR GPL-2.0-only
- */
-package com.owncloud.android.files.services
-
-class LegacyFileUploaderIT : FileUploaderIT()

+ 0 - 64
app/src/androidTest/java/com/owncloud/android/ui/preview/PreviewTextFileFragmentTest.java

@@ -1,64 +0,0 @@
-/*
- * Nextcloud - Android Client
- *
- * SPDX-FileCopyrightText: 2020 Tobias Kaminsky <tobias@kaminsky.me>
- * SPDX-FileCopyrightText: 2020 Nextcloud GmbH
- * SPDX-License-Identifier: AGPL-3.0-or-later OR GPL-2.0-only
- */
-package com.owncloud.android.ui.preview;
-
-import com.owncloud.android.AbstractIT;
-import com.owncloud.android.datamodel.OCFile;
-import com.owncloud.android.ui.activity.FileDisplayActivity;
-import com.owncloud.android.utils.MimeTypeUtil;
-import com.owncloud.android.utils.ScreenshotTest;
-
-import org.junit.Rule;
-import org.junit.Test;
-
-import java.io.File;
-import java.io.IOException;
-
-import androidx.test.espresso.intent.rule.IntentsTestRule;
-
-public class PreviewTextFileFragmentTest extends AbstractIT {
-    @Rule public IntentsTestRule<FileDisplayActivity> activityRule = new IntentsTestRule<>(FileDisplayActivity.class,
-                                                                                           true,
-                                                                                           false);
-
-    @Test
-    @ScreenshotTest
-    public void displaySimpleTextFile() throws IOException {
-        FileDisplayActivity sut = activityRule.launchActivity(null);
-
-        shortSleep();
-
-        File file = getDummyFile("nonEmpty.txt");
-        OCFile test = new OCFile("/text.md");
-        test.setMimeType(MimeTypeUtil.MIMETYPE_TEXT_MARKDOWN);
-        test.setStoragePath(file.getAbsolutePath());
-        sut.startTextPreview(test, false);
-
-        shortSleep();
-
-        screenshot(sut);
-    }
-
-    @Test
-    @ScreenshotTest
-    public void displayJavaSnippetFile() throws IOException {
-        FileDisplayActivity sut = activityRule.launchActivity(null);
-
-        shortSleep();
-
-        File file = getFile("java.md");
-        OCFile test = new OCFile("/java.md");
-        test.setMimeType(MimeTypeUtil.MIMETYPE_TEXT_MARKDOWN);
-        test.setStoragePath(file.getAbsolutePath());
-        sut.startTextPreview(test, false);
-
-        shortSleep();
-
-        screenshot(sut);
-    }
-}

+ 89 - 0
app/src/androidTest/java/com/owncloud/android/ui/preview/PreviewTextFileFragmentTest.kt

@@ -0,0 +1,89 @@
+/*
+ * Nextcloud - Android Client
+ *
+ * SPDX-FileCopyrightText: 2024 Alper Ozturk <alper.ozturk@nextcloud.com>
+ * SPDX-License-Identifier: AGPL-3.0-or-later
+ */
+package com.owncloud.android.ui.preview
+
+import androidx.annotation.UiThread
+import androidx.test.core.app.launchActivity
+import androidx.test.espresso.Espresso.onView
+import androidx.test.espresso.IdlingRegistry
+import androidx.test.espresso.assertion.ViewAssertions.matches
+import androidx.test.espresso.matcher.ViewMatchers.isDisplayed
+import androidx.test.espresso.matcher.ViewMatchers.isRoot
+import com.owncloud.android.AbstractIT
+import com.owncloud.android.datamodel.OCFile
+import com.owncloud.android.ui.activity.FileDisplayActivity
+import com.owncloud.android.utils.EspressoIdlingResource
+import com.owncloud.android.utils.MimeTypeUtil
+import com.owncloud.android.utils.ScreenshotTest
+import org.junit.After
+import org.junit.Before
+import org.junit.Test
+import java.io.IOException
+
+class PreviewTextFileFragmentTest : AbstractIT() {
+    private val testClassName = "com.owncloud.android.ui.preview.PreviewTextFileFragmentTest"
+
+    @Before
+    fun registerIdlingResource() {
+        IdlingRegistry.getInstance().register(EspressoIdlingResource.countingIdlingResource)
+    }
+
+    @After
+    fun unregisterIdlingResource() {
+        IdlingRegistry.getInstance().unregister(EspressoIdlingResource.countingIdlingResource)
+    }
+
+    @Test
+    @ScreenshotTest
+    @UiThread
+    @Throws(IOException::class)
+    fun displaySimpleTextFile() {
+        launchActivity<FileDisplayActivity>().use { scenario ->
+            scenario.onActivity { sut ->
+                val test = OCFile("/text.md").apply {
+                    mimeType = MimeTypeUtil.MIMETYPE_TEXT_MARKDOWN
+                    storagePath = getDummyFile("nonEmpty.txt").absolutePath
+                }
+
+                onIdleSync {
+                    EspressoIdlingResource.increment()
+                    sut.startTextPreview(test, true)
+                    EspressoIdlingResource.decrement()
+
+                    val screenShotName = createName(testClassName + "_" + "displaySimpleTextFile", "")
+                    onView(isRoot()).check(matches(isDisplayed()))
+                    screenshotViaName(sut, screenShotName)
+                }
+            }
+        }
+    }
+
+    @Test
+    @ScreenshotTest
+    @UiThread
+    @Throws(IOException::class)
+    fun displayJavaSnippetFile() {
+        launchActivity<FileDisplayActivity>().use { scenario ->
+            scenario.onActivity { sut ->
+                val test = OCFile("/java.md").apply {
+                    mimeType = MimeTypeUtil.MIMETYPE_TEXT_MARKDOWN
+                    storagePath = getFile("java.md").absolutePath
+                }
+
+                onIdleSync {
+                    EspressoIdlingResource.increment()
+                    sut.startTextPreview(test, true)
+                    EspressoIdlingResource.decrement()
+
+                    val screenShotName = createName(testClassName + "_" + "displayJavaSnippetFile", "")
+                    onView(isRoot()).check(matches(isDisplayed()))
+                    screenshotViaName(sut, screenShotName)
+                }
+            }
+        }
+    }
+}

+ 15 - 20
app/src/main/java/com/nextcloud/client/network/ConnectivityServiceImpl.java

@@ -90,28 +90,23 @@ class ConnectivityServiceImpl implements ConnectivityService {
         if (cachedValue != null) {
             return cachedValue;
         } else {
+            Server server = accountManager.getUser().getServer();
+            String baseServerAddress = server.getUri().toString();
+
             boolean result;
             Connectivity c = getConnectivity();
-            if (c.isConnected() && c.isWifi() && !c.isMetered()) {
-
-                Server server = accountManager.getUser().getServer();
-                String baseServerAddress = server.getUri().toString();
-                if (baseServerAddress.isEmpty()) {
-                    result = true;
-                } else {
-
-                    GetMethod get = requestBuilder.invoke(baseServerAddress + CONNECTIVITY_CHECK_ROUTE);
-                    PlainClient client = clientFactory.createPlainClient();
-
-                    int status = get.execute(client);
-
-                    // Content-Length is not available when using chunked transfer encoding, so check for -1 as well
-                    result = !(status == HttpStatus.SC_NO_CONTENT && get.getResponseContentLength() <= 0);
-                    get.releaseConnection();
-                    if (result) {
-                        Log_OC.w(TAG, "isInternetWalled(): Failed to GET " + CONNECTIVITY_CHECK_ROUTE + "," +
-                            " assuming connectivity is impaired");
-                    }
+            if (c.isConnected() && c.isWifi() && !c.isMetered() && !baseServerAddress.isEmpty()) {
+                GetMethod get = requestBuilder.invoke(baseServerAddress + CONNECTIVITY_CHECK_ROUTE);
+                PlainClient client = clientFactory.createPlainClient();
+
+                int status = get.execute(client);
+
+                // Content-Length is not available when using chunked transfer encoding, so check for -1 as well
+                result = !(status == HttpStatus.SC_NO_CONTENT && get.getResponseContentLength() <= 0);
+                get.releaseConnection();
+                if (result) {
+                    Log_OC.w(TAG, "isInternetWalled(): Failed to GET " + CONNECTIVITY_CHECK_ROUTE + "," +
+                        " assuming connectivity is impaired");
                 }
             } else {
                 result = !c.isConnected();

+ 2 - 2
app/src/test/java/com/nextcloud/client/network/ConnectivityServiceTest.kt

@@ -293,7 +293,7 @@ class ConnectivityServiceTest {
         }
 
         @Test
-        fun `check request is not sent when server uri is not set`() {
+        fun `check cache value when server uri is not set`() {
             // GIVEN
             //      network connectivity is present
             //      user has no server URI (empty)
@@ -307,7 +307,7 @@ class ConnectivityServiceTest {
             // THEN
             //      connection is walled
             //      request is not sent
-            assertTrue("Server should not be accessible", result)
+            assertFalse("Cached value not set", result)
             verify(requestBuilder, never()).invoke(any())
             verify(getRequest, never()).execute(any<PlainClient>())
         }