Map ClientBuildException.WellKnownDeserializationException to AuthenticationException.InvalidServerName, so that the error displayed to the user is more explicit. Closes #6368

This commit is contained in:
Benoit Marty
2026-03-17 18:02:26 +01:00
parent 754f783d56
commit e5f50a901c
2 changed files with 11 additions and 3 deletions

View File

@@ -22,7 +22,10 @@ fun Throwable.mapAuthenticationException(): AuthenticationException {
is ClientBuildException.Sdk -> AuthenticationException.Generic(message)
is ClientBuildException.ServerUnreachable -> AuthenticationException.ServerUnreachable(message)
is ClientBuildException.SlidingSync -> AuthenticationException.Generic(message)
is ClientBuildException.WellKnownDeserializationException -> AuthenticationException.Generic(message)
is ClientBuildException.WellKnownDeserializationException -> {
// Can happen if the .well-known URL has a redirection to an HTML page for instance
AuthenticationException.InvalidServerName(message)
}
is ClientBuildException.WellKnownLookupFailed -> AuthenticationException.Generic(message)
is ClientBuildException.EventCache -> AuthenticationException.Generic(message)
}

View File

@@ -30,6 +30,13 @@ class AuthenticationExceptionMappingTest {
assertThat(mappedException).isException<AuthenticationException.Generic>("Generic exception")
}
@Test
fun `mapping a WellKnownDeserializationException returns a InvalidServerName AuthenticationException`() {
val exception = ClientBuildException.WellKnownDeserializationException("WellKnown Deserialization")
val mappedException = exception.mapAuthenticationException()
assertThat(mappedException).isException<AuthenticationException.InvalidServerName>("WellKnown Deserialization")
}
@Test
fun `mapping specific exceptions map to their kotlin counterparts`() {
assertThat(ClientBuildException.Generic("Unknown error").mapAuthenticationException())
@@ -50,8 +57,6 @@ class AuthenticationExceptionMappingTest {
.isException<AuthenticationException.ServerUnreachable>("Server unreachable")
assertThat(ClientBuildException.SlidingSync("Sliding Sync").mapAuthenticationException())
.isException<AuthenticationException.Generic>("Sliding Sync")
assertThat(ClientBuildException.WellKnownDeserializationException("WellKnown Deserialization").mapAuthenticationException())
.isException<AuthenticationException.Generic>("WellKnown Deserialization")
assertThat(ClientBuildException.WellKnownLookupFailed("WellKnown Lookup Failed").mapAuthenticationException())
.isException<AuthenticationException.Generic>("WellKnown Lookup Failed")
assertThat(ClientBuildException.EventCache("EventCache error").mapAuthenticationException())