diff --git a/briar-android/build.gradle b/briar-android/build.gradle index fac88cf8cef71d2f591e072375e6900245624e6b..409de97f17e76d64d50720a1bde572e8d00ccced 100644 --- a/briar-android/build.gradle +++ b/briar-android/build.gradle @@ -35,6 +35,7 @@ dependencies { testCompile project(path: ':bramble-core', configuration: 'testOutput') testCompile 'org.robolectric:robolectric:3.0' + testCompile 'org.robolectric:shadows-support-v4:3.0' testCompile 'org.mockito:mockito-core:2.8.9' } diff --git a/briar-android/src/test/java/org/briarproject/briar/android/login/PasswordFragmentTest.java b/briar-android/src/test/java/org/briarproject/briar/android/login/PasswordFragmentTest.java new file mode 100644 index 0000000000000000000000000000000000000000..9fb2be4fcf361a775ac2baca17e417d976d862e4 --- /dev/null +++ b/briar-android/src/test/java/org/briarproject/briar/android/login/PasswordFragmentTest.java @@ -0,0 +1,72 @@ +package org.briarproject.briar.android.login; + +import android.view.View; +import android.widget.Button; +import android.widget.EditText; + +import org.briarproject.briar.BuildConfig; +import org.briarproject.briar.R; +import org.briarproject.briar.android.TestBriarApplication; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.Mock; +import org.mockito.MockitoAnnotations; +import org.robolectric.RobolectricGradleTestRunner; +import org.robolectric.annotation.Config; + +import static junit.framework.Assert.assertEquals; +import static org.briarproject.bramble.api.crypto.PasswordStrengthEstimator.STRONG; +import static org.mockito.ArgumentMatchers.anyString; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; +import static org.robolectric.shadows.support.v4.SupportFragmentTestUtil.startFragment; + +@RunWith(RobolectricGradleTestRunner.class) +@Config(constants = BuildConfig.class, sdk = 21, + application = TestBriarApplication.class, + packageName = "org.briarproject.briar") +public class PasswordFragmentTest { + + private PasswordFragment passwordFragment = new PasswordFragment(); + private EditText passwordEntry; + private EditText passwordConfirmation; + private Button createAccountButton; + + @Mock + private SetupController setupController; + + @Before + public void setUp() { + MockitoAnnotations.initMocks(this); + startFragment(passwordFragment, SetupActivity.class); + + View v = passwordFragment.getView(); + passwordEntry = (EditText) v.findViewById(R.id.password_entry); + passwordConfirmation = (EditText) v.findViewById(R.id.password_confirm); + createAccountButton = (Button) v.findViewById(R.id.next); + } + + @Test + public void testCreateAccountUI() { + passwordFragment.setupController = setupController; + when(setupController.needsDozeWhitelisting()).thenReturn(false); + when(setupController.estimatePasswordStrength(anyString())) + .thenReturn(STRONG); + + String safePass = "really.safe.password"; + passwordEntry.setText(safePass); + passwordConfirmation.setText(safePass); + // Confirm that the create account button is clickable + assertEquals(createAccountButton.isEnabled(), true); + createAccountButton.performClick(); + + // assert controller has been called properly + verify(setupController, times(1)) + .setPassword(safePass); + verify(setupController, times(1)) + .showDozeOrCreateAccount(); + } + +} diff --git a/briar-android/src/test/java/org/briarproject/briar/android/login/SetupActivityTest.java b/briar-android/src/test/java/org/briarproject/briar/android/login/SetupActivityTest.java index 38c45f044ee65ed64a56693e6d4c41d599bc2723..1d3c9336ba1b7f7d6f0ab0accbff6e482580802a 100644 --- a/briar-android/src/test/java/org/briarproject/briar/android/login/SetupActivityTest.java +++ b/briar-android/src/test/java/org/briarproject/briar/android/login/SetupActivityTest.java @@ -1,7 +1,6 @@ package org.briarproject.briar.android.login; import android.content.Context; -import android.content.Intent; import android.content.SharedPreferences; import android.support.design.widget.TextInputLayout; import android.widget.Button; @@ -14,7 +13,6 @@ import org.briarproject.briar.BuildConfig; import org.briarproject.briar.R; import org.briarproject.briar.android.TestBriarApplication; import org.briarproject.briar.android.controller.handler.ResultHandler; -import org.briarproject.briar.android.navdrawer.NavDrawerActivity; import org.junit.Assert; import org.junit.Before; import org.junit.Test; @@ -23,11 +21,8 @@ import org.mockito.MockitoAnnotations; import org.robolectric.Robolectric; import org.robolectric.RobolectricGradleTestRunner; import org.robolectric.annotation.Config; -import org.robolectric.shadows.ShadowActivity; -import org.robolectric.shadows.ShadowLooper; import static junit.framework.Assert.assertEquals; -import static junit.framework.Assert.assertNotNull; import static org.briarproject.bramble.api.crypto.PasswordStrengthEstimator.NONE; import static org.briarproject.bramble.api.crypto.PasswordStrengthEstimator.QUITE_STRONG; import static org.briarproject.bramble.api.crypto.PasswordStrengthEstimator.QUITE_WEAK; @@ -37,7 +32,6 @@ import static org.junit.Assert.assertTrue; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.timeout; import static org.mockito.Mockito.verify; -import static org.robolectric.Shadows.shadowOf; @RunWith(RobolectricGradleTestRunner.class) @Config(constants = BuildConfig.class, sdk = 21, @@ -98,32 +92,6 @@ public class SetupActivityTest { assertEquals(createAccountButton.isEnabled(), true); } - @Test - public void testCreateAccountUI() { - proceedToPasswordFragment(); - String safePass = "really.safe.password"; - passwordEntry.setText(safePass); - passwordConfirmation.setText(safePass); - // Confirm that the create account button is clickable - assertEquals(createAccountButton.isEnabled(), true); - createAccountButton.performClick(); - // wait a second since there's no easy way to get a callback - try { - Thread.sleep(1000); - } catch (InterruptedException e) { - e.printStackTrace(); - } - ShadowLooper.runUiThreadTasks(); - // execute the callback - assertTrue(setupActivity.isFinishing()); - // Confirm that the correct Activity has been started - ShadowActivity shadowActivity = shadowOf(setupActivity); - Intent intent = shadowActivity.peekNextStartedActivity(); - assertNotNull(intent.getComponent()); - assertEquals(intent.getComponent().getClassName(), - NavDrawerActivity.class.getName()); - } - @Test public void testAccountCreation() { SetupController controller = setupActivity.getController(); diff --git a/briar-android/src/test/java/org/briarproject/briar/android/login/TestSetupActivity.java b/briar-android/src/test/java/org/briarproject/briar/android/login/TestSetupActivity.java index 0595329be7f367f8cdc9edaa66b9e0395a52f8b1..0592a736e4353e22622b0df393a9cd989a964d94 100644 --- a/briar-android/src/test/java/org/briarproject/briar/android/login/TestSetupActivity.java +++ b/briar-android/src/test/java/org/briarproject/briar/android/login/TestSetupActivity.java @@ -10,7 +10,4 @@ public class TestSetupActivity extends SetupActivity { return setupController; } - void setController(SetupController setupController) { - this.setupController = setupController; - } }