summaryrefslogtreecommitdiff
path: root/app/src/androidTest/java/se/leap/bitmaskclient/test/testDashboardIntegration.java
diff options
context:
space:
mode:
Diffstat (limited to 'app/src/androidTest/java/se/leap/bitmaskclient/test/testDashboardIntegration.java')
-rw-r--r--app/src/androidTest/java/se/leap/bitmaskclient/test/testDashboardIntegration.java187
1 files changed, 125 insertions, 62 deletions
diff --git a/app/src/androidTest/java/se/leap/bitmaskclient/test/testDashboardIntegration.java b/app/src/androidTest/java/se/leap/bitmaskclient/test/testDashboardIntegration.java
index 91b93d42..d2fb9901 100644
--- a/app/src/androidTest/java/se/leap/bitmaskclient/test/testDashboardIntegration.java
+++ b/app/src/androidTest/java/se/leap/bitmaskclient/test/testDashboardIntegration.java
@@ -1,55 +1,57 @@
package se.leap.bitmaskclient.test;
-import android.content.Context;
+import android.content.*;
import android.test.*;
+import android.widget.*;
+
import com.robotium.solo.*;
-import java.io.IOException;
+import java.io.*;
import de.blinkt.openvpn.activities.*;
import se.leap.bitmaskclient.*;
public class testDashboardIntegration extends ActivityInstrumentationTestCase2<Dashboard> {
- private Solo solo;
+ private Solo solo;
private Context context;
- public testDashboardIntegration() {
- super(Dashboard.class);
- }
+ public testDashboardIntegration() {
+ super(Dashboard.class);
+ }
- @Override
- protected void setUp() throws Exception {
- super.setUp();
+ @Override
+ protected void setUp() throws Exception {
+ super.setUp();
context = getInstrumentation().getContext();
- solo = new Solo(getInstrumentation(), getActivity());
- ConnectionManager.setMobileDataEnabled(true, context);
+ solo = new Solo(getInstrumentation(), getActivity());
+ ConnectionManager.setMobileDataEnabled(true, context);
solo.unlockScreen();
- if(solo.searchText(solo.getString(R.string.configuration_wizard_title)))
- new testConfigurationWizard(solo).toDashboard("demo.bitmask.net");
- }
-
- @Override
- protected void tearDown() throws Exception {
- solo.finishOpenedActivities();
- }
-
- /**
- * This test will fail if Android does not trust VPN connection.
- * I cannot automate that dialog.
- */
- public void testOnOffOpenVpn() {
- solo.clickOnView(solo.getView(R.id.eipSwitch));
- turningEipOn();
-
- solo.clickOnView(solo.getView(R.id.eipSwitch));
- turningEipOff();
-
- solo.clickOnView(solo.getView(R.id.eipSwitch));
- turningEipOn();
-
- solo.clickOnView(solo.getView(R.id.eipSwitch));
- turningEipOff();
+ if (solo.searchText(solo.getString(R.string.configuration_wizard_title)))
+ new testConfigurationWizard(solo).toDashboardAnonymously("demo.bitmask.net");
+ }
+
+ @Override
+ protected void tearDown() throws Exception {
+ solo.finishOpenedActivities();
+ }
+
+ /**
+ * This test will fail if Android does not trust VPN connection.
+ * I cannot automate that dialog.
+ */
+ public void testOnOffOpenVpn() {
+ solo.clickOnView(solo.getView(R.id.eipSwitch));
+ turningEipOn();
+
+ solo.clickOnView(solo.getView(R.id.eipSwitch));
+ turningEipOff();
+
+ solo.clickOnView(solo.getView(R.id.eipSwitch));
+ turningEipOn();
+
+ solo.clickOnView(solo.getView(R.id.eipSwitch));
+ turningEipOff();
/*solo.clickOnView(solo.getView(R.id.eipSwitch));
turningEipOn();
@@ -57,14 +59,14 @@ public class testDashboardIntegration extends ActivityInstrumentationTestCase2<D
turnNetworkOff();
restartAdbServer(); // This doesn't work
*/
-
- }
+
+ }
private void turningEipOn() {
assertAuthenticating();
int max_seconds_until_connected = 30;
assertConnected(max_seconds_until_connected);
- solo.sleep(2*1000);
+ solo.sleep(2 * 1000);
}
private void assertAuthenticating() {
@@ -78,44 +80,44 @@ public class testDashboardIntegration extends ActivityInstrumentationTestCase2<D
}
private void turningEipOff() {
- sayOkToDisconnect();
+ sayOkToDisconnect();
assertDisconnected();
- solo.sleep(2*1000);
+ solo.sleep(2 * 1000);
}
private void sayOkToDisconnect() {
- assertTrue(solo.waitForActivity(DisconnectVPN.class));
+ assertTrue(solo.waitForActivity(DisconnectVPN.class));
String yes = solo.getString(android.R.string.yes);
- solo.clickOnText(yes);
+ solo.clickOnText(yes);
}
private void assertDisconnected() {
String message = solo.getString(R.string.eip_state_not_connected);
assertTrue(solo.waitForText(message));
}
-
+
private void turnNetworkOff() {
- ConnectionManager.setMobileDataEnabled(false, context);
- if(!solo.waitForText(getActivity().getString(R.string.eip_state_not_connected), 1, 15*1000))
- fail();
+ ConnectionManager.setMobileDataEnabled(false, context);
+ if (!solo.waitForText(getActivity().getString(R.string.eip_state_not_connected), 1, 15 * 1000))
+ fail();
}
private void restartAdbServer() {
runAdbCommand("kill-server");
runAdbCommand("start-server");
}
-
+
public void testLogInAndOut() {
- long milliseconds_to_log_in = 40 * 1000;
+ long milliseconds_to_log_in = 40 * 1000;
+ solo.clickOnActionBarItem(R.id.login_button);
logIn("parmegvtest1", " S_Zw3'-");
- solo.waitForDialogToClose(milliseconds_to_log_in);
+ solo.waitForDialogToClose(milliseconds_to_log_in);
assertSuccessfulLogin();
logOut();
- }
+ }
private void logIn(String username, String password) {
- solo.clickOnActionBarItem(R.id.login_button);
solo.enterText(0, username);
solo.enterText(1, password);
solo.clickOnText("Log In");
@@ -123,8 +125,7 @@ public class testDashboardIntegration extends ActivityInstrumentationTestCase2<D
}
private void assertSuccessfulLogin() {
- String message = solo.getString(R.string.succesful_authentication_message);
- assertTrue(solo.waitForText(message));
+ assertTrue(solo.waitForText("is logged in"));
}
private void logOut() {
@@ -134,10 +135,10 @@ public class testDashboardIntegration extends ActivityInstrumentationTestCase2<D
public void testShowAbout() {
showAbout();
- solo.goBack();
- showAbout();
- solo.goBack();
- }
+ solo.goBack();
+ showAbout();
+ solo.goBack();
+ }
private void showAbout() {
String menu_item = solo.getString(R.string.about);
@@ -148,11 +149,73 @@ public class testDashboardIntegration extends ActivityInstrumentationTestCase2<D
}
public void testSwitchProvider() {
- solo.clickOnMenuItem(solo.getString(R.string.switch_provider_menu_option));
- solo.waitForActivity(ConfigurationWizard.class);
- solo.goBack();
- }
+ tapSwitchProvider();
+ solo.goBack();
+ }
+
+ private void tapSwitchProvider() {
+ solo.clickOnMenuItem(solo.getString(R.string.switch_provider_menu_option));
+ solo.waitForActivity(ConfigurationWizard.class);
+ }
+
+ public void testEveryProvider() {
+ changeProvider("demo.bitmask.net");
+ connectVpn();
+ disconnectVpn();
+
+ changeProvider("riseup.net");
+ connectVpn();
+ disconnectVpn();
+
+ changeProvider("calyx.net");
+ connectVpn();
+ disconnectVpn();
+ }
+
+ private void changeProvider(String provider) {
+ tapSwitchProvider();
+ solo.clickOnText(provider);
+ useRegistered();
+ solo.waitForText("Downloading VPN certificate");
+ assertDisconnected();
+ }
+
+ private void connectVpn() {
+ Switch vpn_switch = (Switch)solo.getView(R.id.eipSwitch);
+ assertFalse(vpn_switch.isChecked());
+
+ solo.clickOnView(vpn_switch);
+ turningEipOn();
+ }
+ private void disconnectVpn() {
+ Switch vpn_switch = (Switch)solo.getView(R.id.eipSwitch);
+ assertTrue(vpn_switch.isChecked());
+
+ solo.clickOnView(vpn_switch);
+ solo.clickOnText("Yes");
+ turningEipOff();
+
+ }
+
+ private void useRegistered() {
+ String text = solo.getString(R.string.signup_or_login_button);
+ clickAndWaitForDashboard(text);
+ login();
+ }
+
+ private void clickAndWaitForDashboard(String click_text) {
+ solo.clickOnText(click_text);
+ assertTrue(solo.waitForActivity(Dashboard.class, 5000));
+ }
+
+ private void login() {
+ long milliseconds_to_log_in = 40 * 1000;
+ logIn("parmegvtest10", "holahola2");
+ solo.waitForDialogToClose(milliseconds_to_log_in);
+ assertSuccessfulLogin();
+ }
+
/*public void testReboot() {
runAdbCommand("shell am broadcast -a android.intent.action.BOOT_COMPLETED");
}*/