Test PasswordFragment account creation individually

This commit is contained in:
Torsten Grote
2017-11-08 13:12:43 -02:00
parent 8a81171739
commit 5dcd5f79dc
4 changed files with 73 additions and 35 deletions

View File

@@ -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'
}

View File

@@ -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();
}
}

View File

@@ -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();

View File

@@ -10,7 +10,4 @@ public class TestSetupActivity extends SetupActivity {
return setupController;
}
void setController(SetupController setupController) {
this.setupController = setupController;
}
}