mirror of
https://code.briarproject.org/briar/briar.git
synced 2026-02-12 18:59:06 +01:00
Add a test for sign-in
This requires an account to exist before as we can't restart our lifecycle. So we don't automatically clear app data after each test, but rather need to delete an existing account manually before each test.
This commit is contained in:
@@ -4,6 +4,8 @@ import org.briarproject.bramble.BrambleAndroidModule;
|
||||
import org.briarproject.bramble.BrambleCoreModule;
|
||||
import org.briarproject.bramble.account.BriarAccountModule;
|
||||
import org.briarproject.briar.BriarCoreModule;
|
||||
import org.briarproject.briar.android.account.SignInTestCreateAccount;
|
||||
import org.briarproject.briar.android.account.SignInTestSignIn;
|
||||
import org.briarproject.briar.android.attachment.AttachmentModule;
|
||||
import org.briarproject.briar.android.attachment.media.MediaModule;
|
||||
import org.briarproject.briar.android.navdrawer.NavDrawerActivityTest;
|
||||
@@ -26,4 +28,8 @@ public interface BriarUiTestComponent extends AndroidComponent {
|
||||
|
||||
void inject(NavDrawerActivityTest test);
|
||||
|
||||
void inject(SignInTestCreateAccount test);
|
||||
|
||||
void inject(SignInTestSignIn test);
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,65 @@
|
||||
package org.briarproject.briar.android.account;
|
||||
|
||||
import android.view.Gravity;
|
||||
|
||||
import org.briarproject.briar.R;
|
||||
import org.briarproject.briar.android.BriarUiTestComponent;
|
||||
import org.briarproject.briar.android.UiTest;
|
||||
import org.briarproject.briar.android.navdrawer.NavDrawerActivity;
|
||||
import org.briarproject.briar.android.splash.SplashScreenActivity;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
|
||||
import androidx.test.espresso.contrib.DrawerActions;
|
||||
import androidx.test.ext.junit.runners.AndroidJUnit4;
|
||||
|
||||
import static androidx.test.espresso.Espresso.onView;
|
||||
import static androidx.test.espresso.action.ViewActions.click;
|
||||
import static androidx.test.espresso.assertion.ViewAssertions.matches;
|
||||
import static androidx.test.espresso.contrib.DrawerMatchers.isClosed;
|
||||
import static androidx.test.espresso.matcher.ViewMatchers.hasDescendant;
|
||||
import static androidx.test.espresso.matcher.ViewMatchers.isDisplayed;
|
||||
import static androidx.test.espresso.matcher.ViewMatchers.isRoot;
|
||||
import static androidx.test.espresso.matcher.ViewMatchers.withClassName;
|
||||
import static androidx.test.espresso.matcher.ViewMatchers.withId;
|
||||
import static androidx.test.espresso.matcher.ViewMatchers.withText;
|
||||
import static org.briarproject.briar.android.ViewActions.waitFor;
|
||||
import static org.briarproject.briar.android.ViewActions.waitUntilMatches;
|
||||
import static org.hamcrest.Matchers.endsWith;
|
||||
|
||||
@RunWith(AndroidJUnit4.class)
|
||||
public class SignInTestCreateAccount extends UiTest {
|
||||
|
||||
@Override
|
||||
protected void inject(BriarUiTestComponent component) {
|
||||
component.inject(this);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void createAccount() throws Exception {
|
||||
accountManager.deleteAccount();
|
||||
accountManager.createAccount(USERNAME, PASSWORD);
|
||||
|
||||
startActivity(SplashScreenActivity.class);
|
||||
lifecycleManager.waitForStartup();
|
||||
waitFor(NavDrawerActivity.class);
|
||||
|
||||
// open nav drawer
|
||||
onView(withId(R.id.drawer_layout))
|
||||
.check(matches(isClosed(Gravity.START)))
|
||||
.perform(DrawerActions.open());
|
||||
|
||||
// click onboarding away (once shown)
|
||||
onView(isRoot()).perform(waitUntilMatches(hasDescendant(
|
||||
withClassName(endsWith("PromptView")))));
|
||||
onView(withClassName(endsWith("PromptView")))
|
||||
.perform(click());
|
||||
|
||||
// sign-out manually
|
||||
onView(withText(R.string.sign_out_button))
|
||||
.check(matches(isDisplayed()))
|
||||
.perform(click());
|
||||
lifecycleManager.waitForShutdown();
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,59 @@
|
||||
package org.briarproject.briar.android.account;
|
||||
|
||||
import android.view.Gravity;
|
||||
|
||||
import org.briarproject.briar.R;
|
||||
import org.briarproject.briar.android.BriarUiTestComponent;
|
||||
import org.briarproject.briar.android.UiTest;
|
||||
import org.briarproject.briar.android.login.StartupActivity;
|
||||
import org.briarproject.briar.android.navdrawer.NavDrawerActivity;
|
||||
import org.briarproject.briar.android.splash.SplashScreenActivity;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
|
||||
import androidx.test.ext.junit.runners.AndroidJUnit4;
|
||||
|
||||
import static androidx.test.espresso.Espresso.onView;
|
||||
import static androidx.test.espresso.action.ViewActions.click;
|
||||
import static androidx.test.espresso.action.ViewActions.replaceText;
|
||||
import static androidx.test.espresso.assertion.ViewAssertions.matches;
|
||||
import static androidx.test.espresso.contrib.DrawerMatchers.isClosed;
|
||||
import static androidx.test.espresso.matcher.ViewMatchers.isDisplayed;
|
||||
import static androidx.test.espresso.matcher.ViewMatchers.isEnabled;
|
||||
import static androidx.test.espresso.matcher.ViewMatchers.withId;
|
||||
import static org.briarproject.briar.android.ViewActions.waitFor;
|
||||
import static org.hamcrest.CoreMatchers.allOf;
|
||||
|
||||
/**
|
||||
* This relies on class sorting to run after {@link SignInTestCreateAccount}.
|
||||
*/
|
||||
@RunWith(AndroidJUnit4.class)
|
||||
public class SignInTestSignIn extends UiTest {
|
||||
|
||||
@Override
|
||||
protected void inject(BriarUiTestComponent component) {
|
||||
component.inject(this);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void signIn() throws Exception {
|
||||
startActivity(SplashScreenActivity.class);
|
||||
|
||||
waitFor(StartupActivity.class);
|
||||
|
||||
// enter password
|
||||
onView(withId(R.id.edit_password))
|
||||
.check(matches(isDisplayed()))
|
||||
.perform(replaceText(PASSWORD));
|
||||
onView(withId(R.id.btn_sign_in))
|
||||
.check(matches(allOf(isDisplayed(), isEnabled())))
|
||||
.perform(click());
|
||||
|
||||
lifecycleManager.waitForStartup();
|
||||
waitFor(NavDrawerActivity.class);
|
||||
|
||||
// ensure nav drawer is visible
|
||||
onView(withId(R.id.drawer_layout))
|
||||
.check(matches(isClosed(Gravity.START)));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user