From a32a78751a30e28e61e5c4f133c9e95fef480bd6 Mon Sep 17 00:00:00 2001 From: Adam Brown Date: Wed, 27 Jul 2022 16:25:22 +0100 Subject: [PATCH] adding test around login with username and password --- .../onboarding/OnboardingViewModelTest.kt | 20 +++++++++++++++++++ .../vector/app/test/fakes/FakeLoginWizard.kt | 4 ++++ 2 files changed, 24 insertions(+) diff --git a/vector/src/test/java/im/vector/app/features/onboarding/OnboardingViewModelTest.kt b/vector/src/test/java/im/vector/app/features/onboarding/OnboardingViewModelTest.kt index a932f187f0..d6cfcac96f 100644 --- a/vector/src/test/java/im/vector/app/features/onboarding/OnboardingViewModelTest.kt +++ b/vector/src/test/java/im/vector/app/features/onboarding/OnboardingViewModelTest.kt @@ -75,6 +75,7 @@ private val DEFAULT_SELECTED_HOMESERVER_STATE = SELECTED_HOMESERVER_STATE.copy(u private const val AN_EMAIL = "hello@example.com" private const val A_PASSWORD = "a-password" private const val A_USERNAME = "hello-world" +private const val A_DEVICE_NAME = "a-device-name" private const val A_MATRIX_ID = "@$A_USERNAME:matrix.org" private const val A_LOGIN_TOKEN = "a-login-token" @@ -161,6 +162,25 @@ class OnboardingViewModelTest { .finish() } + @Test + fun `given can login with username and password, when logging in, then emits AccountSignedIn`() = runTest { + val test = viewModel.test() + fakeAuthenticationService.givenLoginWizard(fakeLoginWizard) + fakeLoginWizard.givenLoginSuccess(A_USERNAME, A_PASSWORD, A_DEVICE_NAME, fakeSession) + givenInitialisesSession(fakeSession) + + viewModel.handle(OnboardingAction.AuthenticateAction.Login(A_USERNAME, A_PASSWORD, A_DEVICE_NAME)) + + test + .assertStatesChanges( + initialState, + { copy(isLoading = true) }, + { copy(isLoading = false) } + ) + .assertEvents(OnboardingViewEvents.OnAccountSignedIn) + .finish() + } + @Test fun `given registration started with currentThreePid, when handling InitWith, then emits restored session OnSendEmailSuccess`() = runTest { val test = viewModel.test() diff --git a/vector/src/test/java/im/vector/app/test/fakes/FakeLoginWizard.kt b/vector/src/test/java/im/vector/app/test/fakes/FakeLoginWizard.kt index e255fa7deb..ba702a324c 100644 --- a/vector/src/test/java/im/vector/app/test/fakes/FakeLoginWizard.kt +++ b/vector/src/test/java/im/vector/app/test/fakes/FakeLoginWizard.kt @@ -33,6 +33,10 @@ class FakeLoginWizard : LoginWizard by mockk() { coEvery { loginWithToken(token) } returns result } + fun givenLoginSuccess(username: String, password: String, deviceName: String, result: Session) { + coEvery { login(username, password, deviceName) } returns result + } + fun givenConfirmResetPasswordSuccess(password: String) { coJustRun { resetPasswordMailConfirmed(password) } }