It's Riseup's twentieth year, help keep us going! If you can afford it, please contribute to our winter fundraising drive.

Commit 33f811f6 authored by cyberta's avatar cyberta

fix instrumentation tests, update espresso test framework

parent 71a97834
......@@ -153,6 +153,7 @@ android {
dependencies {
testImplementation 'junit:junit:4.12'
//outdated mockito-core version due to powermock dependency
testImplementation 'org.mockito:mockito-core:2.8.9'
testImplementation('org.powermock:powermock-api-mockito2:1.7.3')
{ exclude group: 'junit' exclude group: 'org.mockito' }
......@@ -162,9 +163,9 @@ dependencies {
testImplementation group: 'com.tngtech.java', name: 'junit-dataprovider', version: '1.10.0'
androidTestImplementation 'org.mockito:mockito-core:2.8.9'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
androidTestImplementation 'com.android.support.test.espresso:espresso-contrib:3.0.1'
androidTestImplementation 'com.android.support.test.espresso:espresso-intents:3.0.1'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-contrib:3.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-intents:3.0.2'
//TODO: remove that library
androidTestImplementation 'com.jayway.android.robotium:robotium-solo:5.6.3'
testImplementation 'junit:junit:4.12'
......@@ -177,7 +178,6 @@ dependencies {
implementation 'com.jakewharton:butterknife:6.1.0'
//TODO: replace that library
compileOnly 'com.squareup.dagger:dagger-compiler:1.2.2'
//TODO: remove that library?
implementation 'com.github.pedrovgs:renderers:1.5'
implementation 'com.intellij:annotations:12.0'
implementation 'com.google.code.gson:gson:2.8.2'
......
......@@ -15,8 +15,10 @@ import org.junit.runner.RunWith;
import java.io.IOException;
import se.leap.bitmaskclient.BuildConfig;
import se.leap.bitmaskclient.MainActivity;
import se.leap.bitmaskclient.Provider;
import se.leap.bitmaskclient.R;
import se.leap.bitmaskclient.testutils.TestSetupHelper;
import static android.support.test.InstrumentationRegistry.getInstrumentation;
......@@ -26,17 +28,21 @@ import static android.support.test.espresso.action.ViewActions.click;
import static android.support.test.espresso.assertion.ViewAssertions.matches;
import static android.support.test.espresso.contrib.DrawerMatchers.isClosed;
import static android.support.test.espresso.contrib.DrawerMatchers.isOpen;
import static android.support.test.espresso.matcher.RootMatchers.isDialog;
import static android.support.test.espresso.matcher.ViewMatchers.isDisplayed;
import static android.support.test.espresso.matcher.ViewMatchers.withId;
import static android.support.test.espresso.matcher.ViewMatchers.withText;
import static org.hamcrest.Matchers.anything;
import static se.leap.bitmaskclient.Constants.FIRST_TIME_USER_DATE;
import static se.leap.bitmaskclient.Constants.LAST_DONATION_REMINDER_DATE;
import static se.leap.bitmaskclient.Constants.SHARED_PREFERENCES;
import static se.leap.bitmaskclient.MainActivity.ACTION_SHOW_VPN_FRAGMENT;
import static se.leap.bitmaskclient.R.id.aboutLayout;
import static se.leap.bitmaskclient.R.id.accountList;
import static se.leap.bitmaskclient.R.id.provider_list_layout;
import static se.leap.bitmaskclient.R.id.drawer_layout;
import static se.leap.bitmaskclient.R.id.eipServiceFragment;
import static se.leap.bitmaskclient.R.id.log_layout;
import static se.leap.bitmaskclient.R.id.provider_list_layout;
import static se.leap.bitmaskclient.R.id.settingsList;
/**
......@@ -65,7 +71,8 @@ public class StartActivityDrawerTest {
preferencesEditor = preferences.edit();
preferencesEditor.putString(Provider.KEY, TestSetupHelper.getInputAsString(InstrumentationRegistry.getContext().getAssets().open("riseup.net.json")))
.putString(Provider.CA_CERT, TestSetupHelper.getInputAsString(InstrumentationRegistry.getContext().getAssets().open("riseup.net.pem")))
.commit();
.putString(LAST_DONATION_REMINDER_DATE, null)
.putString(FIRST_TIME_USER_DATE, null).commit();
}
......@@ -89,39 +96,86 @@ public class StartActivityDrawerTest {
}
@Test
public void testClickProviderName_closeDrawerAndShowEipFragment() {
preferencesEditor.putBoolean("navigation_drawer_learned", false).commit();
public void testClickProviderName_closeDrawerAndShowEipFragment() throws InterruptedException {
preferencesEditor.putBoolean("navigation_drawer_learned", true).commit();
mActivityRule.launchActivity(intent);
onView(withId(drawer_layout)).check(matches(isClosed()));
onView(withId(drawer_layout)).perform(DrawerActions.open());
onView(withId(drawer_layout)).check(matches(isOpen()));
onData(anything()).inAdapterView(withId(accountList)).atPosition(0).perform(click());
onView(withId(drawer_layout)).check(matches(isClosed()));
onView(withId(eipServiceFragment)).check(matches(isDisplayed()));
}
@Test
public void testClickSwitchProvider_closeDrawerAndShowProviderListView() {
preferencesEditor.putBoolean("navigation_drawer_learned", false).commit();
public void testSaveBattery_closeDrawerAndShowSaveBatteryDialog() throws InterruptedException {
preferencesEditor.putBoolean("navigation_drawer_learned", true).commit();
mActivityRule.launchActivity(intent);
onView(withId(drawer_layout)).check(matches(isClosed()));
onView(withId(drawer_layout)).perform(DrawerActions.open());
onView(withId(drawer_layout)).check(matches(isOpen()));
onData(anything()).inAdapterView(withId(settingsList)).atPosition(0).perform(click());
onView(withText(R.string.save_battery_message))
.inRoot(isDialog())
.check(matches(isDisplayed()));
}
@Test
public void testAlwaysOnVPN_closeDrawerAndShowDialog() throws InterruptedException {
preferencesEditor.putBoolean("navigation_drawer_learned", true).commit();
mActivityRule.launchActivity(intent);
onView(withId(drawer_layout)).check(matches(isClosed()));
onView(withId(drawer_layout)).perform(DrawerActions.open());
onView(withId(drawer_layout)).check(matches(isOpen()));
onData(anything()).inAdapterView(withId(settingsList)).atPosition(1).perform(click());
onView(withText(R.string.always_on_vpn_user_message))
.inRoot(isDialog())
.check(matches(isDisplayed()));
}
@Test
public void testClickSwitchProvider_closeDrawerAndShowProviderListView() throws InterruptedException {
if (BuildConfig.FLAVOR_branding.equals("custom")) {
return;
}
preferencesEditor.putBoolean("navigation_drawer_learned", true).commit();
mActivityRule.launchActivity(intent);
onView(withId(drawer_layout)).check(matches(isClosed()));
onView(withId(drawer_layout)).perform(DrawerActions.open());
onView(withId(drawer_layout)).check(matches(isOpen()));
onData(anything()).inAdapterView(withId(settingsList)).atPosition(3).perform(click());
onView(withId(provider_list_layout)).check(matches(isDisplayed()));
}
@Test
public void testClickLog_closeDrawerAndShowLogFragment() {
preferencesEditor.putBoolean("navigation_drawer_learned", false).commit();
public void testClickLog_closeDrawerAndShowLogFragment() throws InterruptedException {
preferencesEditor.putBoolean("navigation_drawer_learned", true).commit();
mActivityRule.launchActivity(intent);
onView(withId(drawer_layout)).check(matches(isClosed()));
onView(withId(drawer_layout)).perform(DrawerActions.open());
onView(withId(drawer_layout)).check(matches(isOpen()));
onData(anything()).inAdapterView(withId(settingsList)).atPosition(1).perform(click());
onData(anything()).inAdapterView(withId(settingsList)).atPosition(getPositionBasedOnFlavor(2, 3)).perform(click());
onView(withId(log_layout)).check(matches(isDisplayed()));
}
@Test
public void testClickAbout_closeDrawerAndShowAboutFragment() {
preferencesEditor.putBoolean("navigation_drawer_learned", false).commit();
public void testClickAbout_closeDrawerAndShowAboutFragment() throws InterruptedException {
preferencesEditor.putBoolean("navigation_drawer_learned", true).commit();
mActivityRule.launchActivity(intent);
onData(anything()).inAdapterView(withId(settingsList)).atPosition(2).perform(click());
onView(withId(drawer_layout)).check(matches(isClosed()));
onView(withId(drawer_layout)).perform(DrawerActions.open());
onView(withId(drawer_layout)).check(matches(isOpen()));
onData(anything()).inAdapterView(withId(settingsList)).atPosition(getPositionBasedOnFlavor(4,5)).perform(click());
onView(withId(aboutLayout)).check(matches(isDisplayed()));
}
private int getPositionBasedOnFlavor(int custom, int defaultNumber) {
if (BuildConfig.FLAVOR_branding.equals("custom")) {
return custom;
} else {
return defaultNumber;
}
}
}
......@@ -2,7 +2,6 @@ package se.leap.bitmaskclient.utils;
import android.content.Context;
import android.content.SharedPreferences;
import android.os.Looper;
import android.preference.PreferenceManager;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
......@@ -10,12 +9,6 @@ import android.support.annotation.Nullable;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.ByteArrayInputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.math.BigInteger;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
......@@ -31,7 +24,6 @@ import static se.leap.bitmaskclient.Constants.PREFERENCES_APP_VERSION;
import static se.leap.bitmaskclient.Constants.PROVIDER_CONFIGURED;
import static se.leap.bitmaskclient.Constants.PROVIDER_EIP_DEFINITION;
import static se.leap.bitmaskclient.Constants.PROVIDER_PRIVATE_KEY;
import static se.leap.bitmaskclient.Constants.PROVIDER_PROFILE_UUID;
import static se.leap.bitmaskclient.Constants.PROVIDER_VPN_CERTIFICATE;
import static se.leap.bitmaskclient.Constants.SHARED_PREFERENCES;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment