diff options
author | Stefan Niedermann <info@niedermann.it> | 2022-01-17 14:05:24 +0300 |
---|---|---|
committer | Stefan Niedermann <info@niedermann.it> | 2022-01-17 14:05:24 +0300 |
commit | 83e5789646de7717f2f3128b73574c9c4bd3bbc0 (patch) | |
tree | 316cce32975fced008604be1091096a4a52bf95a /app/src/test | |
parent | 7a1a8a2137c066f00bb7ac874706228bf7986347 (diff) |
Add unit tests for ServerCommunicationErrorHandler
Signed-off-by: Stefan Niedermann <info@niedermann.it>
Diffstat (limited to 'app/src/test')
-rw-r--r-- | app/src/test/java/it/niedermann/nextcloud/deck/api/ServerCommunicationErrorHandlerTest.java | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/app/src/test/java/it/niedermann/nextcloud/deck/api/ServerCommunicationErrorHandlerTest.java b/app/src/test/java/it/niedermann/nextcloud/deck/api/ServerCommunicationErrorHandlerTest.java new file mode 100644 index 000000000..aa7ca0837 --- /dev/null +++ b/app/src/test/java/it/niedermann/nextcloud/deck/api/ServerCommunicationErrorHandlerTest.java @@ -0,0 +1,49 @@ +package it.niedermann.nextcloud.deck.api; + +import static org.junit.Assert.assertEquals; + +import com.nextcloud.android.sso.exceptions.UnknownErrorException; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.robolectric.RobolectricTestRunner; + +import it.niedermann.nextcloud.deck.exceptions.OfflineException; + +@RunWith(RobolectricTestRunner.class) +public class ServerCommunicationErrorHandlerTest { + + @Test + public void shouldMap_UnknownErrorExceptions_To_OfflineExceptions_ForConnectionTimeout() { + final var result = ServerCommunicationErrorHandler.translateError(new UnknownErrorException("failed to connect to myhome.example.com/2222:A:B:C:D (port 443) from /2020:A:B:C:D (port 42803) after 60000ms: isConnected failed: ECONNREFUSED (Connection refused)")); + assertEquals(OfflineException.class, result.getClass()); + assertEquals(OfflineException.Reason.CONNECTION_REFUSED, ((OfflineException) result).getReason()); + } + + @Test + public void shouldMap_ClassNotFoundExceptions_To_OfflineExceptions_ForConnectionRefused() { + final var result = ServerCommunicationErrorHandler.translateError(new ClassNotFoundException("java.lang.ClassNotFoundException: org.apache.commons.httpclient.ConnectTimeoutException")); + assertEquals(OfflineException.class, result.getClass()); + assertEquals(OfflineException.Reason.CONNECTION_TIMEOUT, ((OfflineException) result).getReason()); + } + + @Test + public void shouldSkip_UnknownErrorExceptions_ForOtherCases() { + final var result = ServerCommunicationErrorHandler.translateError(new UnknownErrorException("Foo Bar")); + assertEquals(UnknownErrorException.class, result.getClass()); + assertEquals("Foo Bar", result.getMessage()); + } + + @Test + public void shouldSkip_ClassNotFoundExceptions_ForOtherCases() { + final var result = ServerCommunicationErrorHandler.translateError(new ClassNotFoundException("Foo Bar")); + assertEquals(ClassNotFoundException.class, result.getClass()); + assertEquals("Foo Bar", result.getMessage()); + } + + @Test + public void shouldSkip_KnownExceptions_WithNullMessages() { + assertEquals(ClassNotFoundException.class, ServerCommunicationErrorHandler.translateError(new ClassNotFoundException()).getClass()); + assertEquals(UnknownErrorException.class, ServerCommunicationErrorHandler.translateError(new UnknownErrorException()).getClass()); + } +} |