diff options
Diffstat (limited to 'app/src/androidTest')
3 files changed, 196 insertions, 0 deletions
| diff --git a/app/src/androidTest/assets/riseup.net.json b/app/src/androidTest/assets/riseup.net.json new file mode 100644 index 00000000..9a5ec79e --- /dev/null +++ b/app/src/androidTest/assets/riseup.net.json @@ -0,0 +1,37 @@ +{ +  "api_uri": "https://api.black.riseup.net:443", +  "api_version": "1", +  "ca_cert_fingerprint": "SHA256: a5244308a1374709a9afce95e3ae47c1b44bc2398c0a70ccbf8b3a8a97f29494", +  "ca_cert_uri": "https://black.riseup.net/ca.crt", +  "default_language": "en", +  "description": { +    "en": "Riseup is a non-profit collective in Seattle that provides online communication tools for people and groups working toward liberatory social change." +  }, +  "domain": "riseup.net", +  "enrollment_policy": "open", +  "languages": [ +    "en" +  ], +  "name": { +    "en": "Riseup Networks" +  }, +  "service": { +    "allow_anonymous": false, +    "allow_free": true, +    "allow_limited_bandwidth": false, +    "allow_paid": false, +    "allow_registration": true, +    "allow_unlimited_bandwidth": true, +    "bandwidth_limit": 102400, +    "default_service_level": 1, +    "levels": { +      "1": { +        "description": "Please donate.", +        "name": "free" +      } +    } +  }, +  "services": [ +    "openvpn" +  ] +}
\ No newline at end of file diff --git a/app/src/androidTest/assets/riseup.net.pem b/app/src/androidTest/assets/riseup.net.pem new file mode 100644 index 00000000..c890aff4 --- /dev/null +++ b/app/src/androidTest/assets/riseup.net.pem @@ -0,0 +1,32 @@ +-----BEGIN CERTIFICATE----- +MIIFjTCCA3WgAwIBAgIBATANBgkqhkiG9w0BAQ0FADBZMRgwFgYDVQQKDA9SaXNl +dXAgTmV0d29ya3MxGzAZBgNVBAsMEmh0dHBzOi8vcmlzZXVwLm5ldDEgMB4GA1UE +AwwXUmlzZXVwIE5ldHdvcmtzIFJvb3QgQ0EwHhcNMTQwNDI4MDAwMDAwWhcNMjQw +NDI4MDAwMDAwWjBZMRgwFgYDVQQKDA9SaXNldXAgTmV0d29ya3MxGzAZBgNVBAsM +Emh0dHBzOi8vcmlzZXVwLm5ldDEgMB4GA1UEAwwXUmlzZXVwIE5ldHdvcmtzIFJv +b3QgQ0EwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC76J4ciMJ8Sg0m +TP7DF2DT9zNe0Csk4myoMFC57rfJeqsAlJCv1XMzBmXrw8wq/9z7XHv6n/0sWU7a +7cF2hLR33ktjwODlx7vorU39/lXLndo492ZBhXQtG1INMShyv+nlmzO6GT7ESfNE +LliFitEzwIegpMqxCIHXFuobGSCWF4N0qLHkq/SYUMoOJ96O3hmPSl1kFDRMtWXY +iw1SEKjUvpyDJpVs3NGxeLCaA7bAWhDY5s5Yb2fA1o8ICAqhowurowJpW7n5ZuLK +5VNTlNy6nZpkjt1QycYvNycffyPOFm/Q/RKDlvnorJIrihPkyniV3YY5cGgP+Qkx +HUOT0uLA6LHtzfiyaOqkXwc4b0ZcQD5Vbf6Prd20Ppt6ei0zazkUPwxld3hgyw58 +m/4UIjG3PInWTNf293GngK2Bnz8Qx9e/6TueMSAn/3JBLem56E0WtmbLVjvko+LF +PM5xA+m0BmuSJtrD1MUCXMhqYTtiOvgLBlUm5zkNxALzG+cXB28k6XikXt6MRG7q +hzIPG38zwkooM55yy5i1YfcIi5NjMH6A+t4IJxxwb67MSb6UFOwg5kFokdONZcwj +shczHdG9gLKSBIvrKa03Nd3W2dF9hMbRu//STcQxOailDBQCnXXfAATj9pYzdY4k +ha8VCAREGAKTDAex9oXf1yRuktES4QIDAQABo2AwXjAdBgNVHQ4EFgQUC4tdmLVu +f9hwfK4AGliaet5KkcgwDgYDVR0PAQH/BAQDAgIEMAwGA1UdEwQFMAMBAf8wHwYD +VR0jBBgwFoAUC4tdmLVuf9hwfK4AGliaet5KkcgwDQYJKoZIhvcNAQENBQADggIB +AGzL+GRnYu99zFoy0bXJKOGCF5XUXP/3gIXPRDqQf5g7Cu/jYMID9dB3No4Zmf7v +qHjiSXiS8jx1j/6/Luk6PpFbT7QYm4QLs1f4BlfZOti2KE8r7KRDPIecUsUXW6P/ +3GJAVYH/+7OjA39za9AieM7+H5BELGccGrM5wfl7JeEz8in+V2ZWDzHQO4hMkiTQ +4ZckuaL201F68YpiItBNnJ9N5nHr1MRiGyApHmLXY/wvlrOpclh95qn+lG6/2jk7 +3AmihLOKYMlPwPakJg4PYczm3icFLgTpjV5sq2md9bRyAg3oPGfAuWHmKj2Ikqch +Td5CHKGxEEWbGUWEMP0s1A/JHWiCbDigc4Cfxhy56CWG4q0tYtnc2GMw8OAUO6Wf +Xu5pYKNkzKSEtT/MrNJt44tTZWbKV/Pi/N2Fx36my7TgTUj7g3xcE9eF4JV2H/sg +tsK3pwE0FEqGnT4qMFbixQmc8bGyuakr23wjMvfO7eZUxBuWYR2SkcP26sozF9PF +tGhbZHQVGZUTVPyvwahMUEhbPGVerOW0IYpxkm0x/eaWdTc4vPpf/rIlgbAjarnJ +UN9SaWRlWKSdP4haujnzCoJbM7dU9bjvlGZNyXEekgeT0W2qFeGGp+yyUWw8tNsp +0BuC1b7uW/bBn/xKm319wXVDvBgZgcktMolak39V7DVO +-----END CERTIFICATE-----
\ No newline at end of file diff --git a/app/src/androidTest/java/se/leap/bitmaskclient/test/StartActivityDrawerTest.java b/app/src/androidTest/java/se/leap/bitmaskclient/test/StartActivityDrawerTest.java new file mode 100644 index 00000000..c7c6a86f --- /dev/null +++ b/app/src/androidTest/java/se/leap/bitmaskclient/test/StartActivityDrawerTest.java @@ -0,0 +1,127 @@ +package se.leap.bitmaskclient.test; + +import android.content.Context; +import android.content.Intent; +import android.content.SharedPreferences; +import android.support.test.InstrumentationRegistry; +import android.support.test.espresso.contrib.DrawerActions; +import android.support.test.rule.ActivityTestRule; +import android.support.test.runner.AndroidJUnit4; + +import org.junit.Before; +import org.junit.Rule; +import org.junit.Test; +import org.junit.runner.RunWith; + +import java.io.IOException; + +import se.leap.bitmaskclient.MainActivity; +import se.leap.bitmaskclient.Provider; +import se.leap.bitmaskclient.testutils.TestSetupHelper; + +import static android.support.test.InstrumentationRegistry.getInstrumentation; +import static android.support.test.espresso.Espresso.onData; +import static android.support.test.espresso.Espresso.onView; +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.ViewMatchers.isDisplayed; +import static android.support.test.espresso.matcher.ViewMatchers.withId; +import static org.hamcrest.Matchers.anything; +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.configuration_wizard_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.settingsList; + +/** + * Created by cyberta on 19.01.18. + */ + +@RunWith(AndroidJUnit4.class) +public class StartActivityDrawerTest { + +    Intent intent; +    SharedPreferences preferences; +    SharedPreferences.Editor preferencesEditor; + +    @Rule +    public ActivityTestRule<MainActivity> mActivityRule = new ActivityTestRule<>( +            MainActivity.class, +            true, +            false); // Activity is not launched immediately + +    @Before +    public void setUp() throws IOException { +        intent = new Intent(ACTION_SHOW_VPN_FRAGMENT); +        Context context = getInstrumentation().getTargetContext(); + +        preferences = context.getSharedPreferences(SHARED_PREFERENCES, Context.MODE_PRIVATE); +        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(); + +    } + + +    @Test +    public void testDisplayDrawer_isOpenUntilUserManuallyOpendDrawerOnce() { +        preferencesEditor.putBoolean("navigation_drawer_learned", false).commit(); +        mActivityRule.launchActivity(intent); +        onView(withId(drawer_layout)).check(matches(isOpen())); +        onView(withId(drawer_layout)).perform(DrawerActions.close()); +        mActivityRule.finishActivity(); + +        mActivityRule.launchActivity(intent); +        onView(withId(drawer_layout)).check(matches(isOpen())); +        onView(withId(drawer_layout)).perform(DrawerActions.close()); +        onView(withId(drawer_layout)).perform(DrawerActions.open()); +        mActivityRule.finishActivity(); + +        mActivityRule.launchActivity(intent); +        onView(withId(drawer_layout)).check(matches(isClosed())); +    } + +    @Test +    public void testClickProviderName_closeDrawerAndShowEipFragment() { +        preferencesEditor.putBoolean("navigation_drawer_learned", false).commit(); +        mActivityRule.launchActivity(intent); + +        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(); +        mActivityRule.launchActivity(intent); + +        onData(anything()).inAdapterView(withId(settingsList)).atPosition(0).perform(click()); +        onView(withId(configuration_wizard_layout)).check(matches(isDisplayed())); +    } + +    @Test +    public void testClickLog_closeDrawerAndShowLogFragment() { +        preferencesEditor.putBoolean("navigation_drawer_learned", false).commit(); +        mActivityRule.launchActivity(intent); + +        onData(anything()).inAdapterView(withId(settingsList)).atPosition(1).perform(click()); +        onView(withId(log_layout)).check(matches(isDisplayed())); +    } + +    @Test +    public void testClickAbout_closeDrawerAndShowAboutFragment() { +        preferencesEditor.putBoolean("navigation_drawer_learned", false).commit(); +        mActivityRule.launchActivity(intent); + +        onData(anything()).inAdapterView(withId(settingsList)).atPosition(2).perform(click()); +        onView(withId(aboutLayout)).check(matches(isDisplayed())); +    } +} | 
