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