Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Unverified Commit a233a63b authored by cketti's avatar cketti Committed by GitHub
Browse files

Merge pull request #7100 from thundernest/update_ServerSettingsValidator

Add an `AuthStateStorage` parameter to `ServerSettingsValidator`
parents 3bc0bada 8e7a5f35
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -6,6 +6,7 @@ import com.fsck.k9.BuildConfig
import com.fsck.k9.backend.BackendManager
import com.fsck.k9.backend.imap.BackendIdleRefreshManager
import com.fsck.k9.backend.imap.SystemAlarmManager
import com.fsck.k9.mail.oauth.OAuth2TokenProviderFactory
import com.fsck.k9.mail.store.imap.IdleRefreshManager
import org.koin.core.qualifier.named
import org.koin.dsl.module
@@ -34,6 +35,7 @@ val backendsModule = module {
    single<IdleRefreshManager> { BackendIdleRefreshManager(alarmManager = get()) }
    single { Pop3BackendFactory(get(), get()) }
    single(named("ClientIdAppName")) { BuildConfig.CLIENT_ID_APP_NAME }
    single<OAuth2TokenProviderFactory> { RealOAuth2TokenProviderFactory(context = get()) }

    developmentModuleAdditions()
}
+14 −0
Original line number Diff line number Diff line
package com.fsck.k9.backends

import android.content.Context
import com.fsck.k9.mail.oauth.AuthStateStorage
import com.fsck.k9.mail.oauth.OAuth2TokenProvider
import com.fsck.k9.mail.oauth.OAuth2TokenProviderFactory

class RealOAuth2TokenProviderFactory(
    private val context: Context,
) : OAuth2TokenProviderFactory {
    override fun create(authStateStorage: AuthStateStorage): OAuth2TokenProvider {
        return RealOAuth2TokenProvider(context, authStateStorage)
    }
}
+2 −2
Original line number Diff line number Diff line
@@ -55,7 +55,7 @@ val featureAccountSetupModule: Module = module {
        ValidateServerSettings(
            imapValidator = ImapServerSettingsValidator(
                trustedSocketFactory = get(),
                oAuth2TokenProvider = null, // TODO
                oAuth2TokenProviderFactory = get(),
                clientIdAppName = "null",
            ),
            pop3Validator = Pop3ServerSettingsValidator(
@@ -63,7 +63,7 @@ val featureAccountSetupModule: Module = module {
            ),
            smtpValidator = SmtpServerSettingsValidator(
                trustedSocketFactory = get(),
                oAuth2TokenProvider = null, // TODO
                oAuth2TokenProviderFactory = get(),
            ),
        )
    }
+3 −3
Original line number Diff line number Diff line
@@ -17,9 +17,9 @@ internal class ValidateServerSettings(
    override suspend fun execute(settings: ServerSettings): ServerSettingsValidationResult =
        withContext(coroutineDispatcher) {
            return@withContext when (settings.type) {
                "imap" -> imapValidator.checkServerSettings(settings)
                "pop3" -> pop3Validator.checkServerSettings(settings)
                "smtp" -> smtpValidator.checkServerSettings(settings)
                "imap" -> imapValidator.checkServerSettings(settings, authStateStorage = null)
                "pop3" -> pop3Validator.checkServerSettings(settings, authStateStorage = null)
                "smtp" -> smtpValidator.checkServerSettings(settings, authStateStorage = null)
                else -> {
                    throw IllegalArgumentException("Unsupported server type: ${settings.type}")
                }
+10 −0
Original line number Diff line number Diff line
@@ -9,6 +9,8 @@ import app.k9mail.feature.account.setup.ui.incoming.AccountIncomingConfigContrac
import app.k9mail.feature.account.setup.ui.options.AccountOptionsContract
import app.k9mail.feature.account.setup.ui.outgoing.AccountOutgoingConfigContract
import app.k9mail.feature.account.setup.ui.validation.AccountValidationContract
import com.fsck.k9.mail.oauth.OAuth2TokenProvider
import com.fsck.k9.mail.oauth.OAuth2TokenProviderFactory
import com.fsck.k9.mail.ssl.TrustedSocketFactory
import okhttp3.OkHttpClient
import org.junit.Test
@@ -37,6 +39,14 @@ class AccountSetupModuleKtTest : KoinTest {
            AccountCreator { _ -> AccountCreatorResult.Success("accountUuid") }
        }
        single<OAuthConfigurationFactory> { OAuthConfigurationFactory { emptyMap() } }
        single<OAuth2TokenProviderFactory> {
            OAuth2TokenProviderFactory { _ ->
                object : OAuth2TokenProvider {
                    override fun getToken(timeoutMillis: Long) = TODO()
                    override fun invalidateToken() = TODO()
                }
            }
        }
    }

    @Test
Loading