summaryrefslogtreecommitdiff
path: root/app/src/androidTest/java/se/leap/bitmaskclient/test/testDashboard.java
blob: fdf4f13591eb1c07531ad57dd82b8d75bc5bfb4c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
package se.leap.bitmaskclient.test;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.provider.Settings;
import android.test.ActivityInstrumentationTestCase2;
import android.util.Log;
import com.robotium.solo.Solo;

import de.blinkt.openvpn.activities.DisconnectVPN;
import se.leap.bitmaskclient.ConfigurationWizard;
import se.leap.bitmaskclient.Dashboard;
import se.leap.bitmaskclient.R;
import se.leap.bitmaskclient.test.ConnectionManager;

public class testDashboard extends ActivityInstrumentationTestCase2<Dashboard> {

	private Solo solo;
	
	public testDashboard() {
		super(Dashboard.class);
	}

	@Override
	protected void setUp() throws Exception {
		super.setUp();
		solo = new Solo(getInstrumentation(), getActivity());
		ConnectionManager.setMobileDataEnabled(true, solo.getCurrentActivity().getApplicationContext());
	}

	@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));
	    testEipTurningOn();
	    
	    solo.clickOnView(solo.getView(R.id.eipSwitch));
	    testEipTurningOff();
	    
	    solo.clickOnView(solo.getView(R.id.eipSwitch));
	    testEipTurningOn();
	    
	    solo.clickOnView(solo.getView(R.id.eipSwitch));
	    testEipTurningOff();
	    
	    solo.clickOnView(solo.getView(R.id.eipSwitch));
	    testEipTurningOn();
	    
	    solo.clickOnView(solo.getView(R.id.eipSwitch));
	    testEipTurningOff();

	    solo.clickOnView(solo.getView(R.id.eipSwitch));
	    testEipTurningOn();
	    
	    testEipIsOnNoNetwork();
	    
	}

    private void testEipTurningOn() {
	if(!solo.waitForText(getActivity().getString(R.string.state_auth)))
	    fail();
	if(!solo.waitForText(getActivity().getString(R.string.eip_state_connected), 1, 30*1000))
	    fail();
	solo.sleep(2*1000);
    }

    private void testEipTurningOff() {
	sayOkToDisconnect();
	if(!solo.waitForText(getActivity().getString(R.string.eip_state_not_connected)))
	    fail();
	solo.sleep(2*1000);
    }

    private void sayOkToDisconnect() {
	if(!solo.waitForActivity(DisconnectVPN.class))
	    fail();
	solo.clickOnText(getActivity().getString(android.R.string.yes));
    }
    
    private void testEipIsOnNoNetwork() {
	ConnectionManager.setMobileDataEnabled(false, solo.getCurrentActivity().getApplicationContext());
	if(!solo.waitForText(getActivity().getString(R.string.eip_state_not_connected), 1, 15*1000))
	    fail();
    }
    
    public void testLogInAndOut() {
		long miliseconds_to_log_in = 40 * 1000;
		solo.clickOnActionBarItem(R.id.login_button);
		solo.enterText(0, "parmegvtest1");
		solo.enterText(1, " S_Zw3'-");
		solo.clickOnText("Log In");
		solo.waitForDialogToClose();
		solo.waitForDialogToClose(miliseconds_to_log_in);
		if(!solo.waitForText(getActivity().getString(R.string.succesful_authentication_message)))
			fail();

		solo.clickOnActionBarItem(R.string.logout_button);
		if(!solo.waitForDialogToClose())
			fail();
	}
	
	public void testShowAbout() {
  	        solo.clickOnMenuItem(getActivity().getString(R.string.about));
		solo.waitForText(getActivity().getString(R.string.repository_url_text));
		solo.goBack();
		
		solo.clickOnMenuItem(getActivity().getString(R.string.about));
		solo.waitForText(getActivity().getString(R.string.repository_url_text));
		solo.goBack();
	}
	
	public void testSwitchProvider() {
  	        solo.clickOnMenuItem(getActivity().getString(R.string.switch_provider_menu_option));
		solo.waitForActivity(ConfigurationWizard.class);
		solo.goBack();
	}
}