From 03ea12000ca0c08e2a7bf17adf6ca186f51a9e57 Mon Sep 17 00:00:00 2001 From: Amine Date: Sun, 9 Mar 2025 14:41:56 +0100 Subject: [PATCH] fix: Url validation was not failing login. Added tests. --- .../android/LoginActivityTest.kt | 14 ++++++++++++++ .../readerforselfossv2/android/LoginActivity.kt | 13 ++++++++----- 2 files changed, 22 insertions(+), 5 deletions(-) diff --git a/androidApp/src/androidTest/kotlin/bou/amine/apps/readerforselfossv2/android/LoginActivityTest.kt b/androidApp/src/androidTest/kotlin/bou/amine/apps/readerforselfossv2/android/LoginActivityTest.kt index 817a7d0..30d2938 100644 --- a/androidApp/src/androidTest/kotlin/bou/amine/apps/readerforselfossv2/android/LoginActivityTest.kt +++ b/androidApp/src/androidTest/kotlin/bou/amine/apps/readerforselfossv2/android/LoginActivityTest.kt @@ -60,9 +60,23 @@ class LoginActivityTest { fun urlError() { performLogin("10.0.2.2:8888") onView(withId(R.id.urlView)).perform(click()) + onView(withId(R.id.urlView)).check(matches(withError(R.string.login_url_problem))) + } + + @Test + fun connectError() { + performLogin("http://10.0.2.2:8889") + onView(withId(R.id.urlView)).perform(click()) onView(withId(R.id.urlView)).check(matches(withError(R.string.wrong_infos))) } + @Test + fun urlSlashError() { + performLogin("https://google.fr/toto") + onView(withId(R.id.urlView)).perform(click()) + onView(withId(R.id.urlView)).check(matches(withError(R.string.login_url_problem))) + } + @Test fun multiError() { onView(withId(R.id.signInButton)).perform(click()) diff --git a/androidApp/src/main/java/bou/amine/apps/readerforselfossv2/android/LoginActivity.kt b/androidApp/src/main/java/bou/amine/apps/readerforselfossv2/android/LoginActivity.kt index ac3a41f..7aa4a47 100644 --- a/androidApp/src/main/java/bou/amine/apps/readerforselfossv2/android/LoginActivity.kt +++ b/androidApp/src/main/java/bou/amine/apps/readerforselfossv2/android/LoginActivity.kt @@ -149,9 +149,10 @@ class LoginActivity : .toString() .trim() - failInvalidUrl(url) - failLoginDetails(password, login) - + val cancelUrl = failInvalidUrl(url) + if (cancelUrl) return + val cancelDetails = failLoginDetails(password, login) + if (cancelDetails) return showProgress(true) appSettingsService.updateSelfSigned(binding.selfSigned.isChecked) @@ -193,7 +194,7 @@ class LoginActivity : private fun failLoginDetails( password: String, login: String, - ) { + ): Boolean { var lastFocusedView: View? = null var cancel = false if (isWithLogin) { @@ -210,9 +211,10 @@ class LoginActivity : } } maybeCancelAndFocusView(cancel, lastFocusedView) + return cancel } - private fun failInvalidUrl(url: String) { + private fun failInvalidUrl(url: String): Boolean { val focusView = binding.urlView var cancel = false if (url.isBaseUrlInvalid()) { @@ -232,6 +234,7 @@ class LoginActivity : } } maybeCancelAndFocusView(cancel, focusView) + return cancel } private fun maybeCancelAndFocusView(