blob: 69fa01eb6bcfd73192cae9f122fa81ef5211c6e0 (
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
|
package se.leap.bitmaskclient.test;
import android.graphics.*;
import android.graphics.drawable.*;
import android.view.*;
import android.widget.*;
import com.robotium.solo.*;
import de.blinkt.openvpn.activities.*;
import mbanje.kurt.fabbutton.*;
import se.leap.bitmaskclient.R;
public class VpnTestController {
private final Solo solo;
public VpnTestController(Solo solo) {
this.solo = solo;
}
protected void turnVpnOndAndOff(String provider) {
clickVpnButton();
turningEipOn();
clickVpnButton();
turningEipOff();
}
protected void clickVpnButton() {
solo.clickOnView(getVpnButton());
}
protected Button getVpnButton() {
return (Button) solo.getView(R.id.vpn_main_button);
}
protected FabButton getVpnWholeIcon() {
return (FabButton) solo.getView(R.id.vpn_Status_Image);
}
protected void turningEipOn() {
assertInProgress();
int max_seconds_until_connected = 30;
Condition condition = new Condition() {
@Override
public boolean isSatisfied() {
return iconConnected();
}
};
solo.waitForCondition(condition, max_seconds_until_connected * 1000);
sleepSeconds(2);
}
private void assertInProgress() {
ProgressRingView a = (ProgressRingView) getVpnWholeIcon().findViewById(R.id.fabbutton_ring);
BaseTestDashboard.isShownWithinConfinesOfVisibleScreen(a);
}
private boolean iconConnected() {
return getVpnInsideIcon().equals(getDrawable(R.drawable.ic_stat_vpn));
}
private boolean iconDisconnected() {
return getVpnInsideIcon().equals(getDrawable(R.drawable.ic_stat_vpn_offline));
}
private Drawable getDrawable(int resId) {
return solo.getCurrentActivity().getResources().getDrawable(resId);
}
private Bitmap getVpnInsideIcon() {
CircleImageView a = (CircleImageView) getVpnWholeIcon().findViewById(R.id.fabbutton_circle);
a.setDrawingCacheEnabled(true);
return a.getDrawingCache();
}
protected void turningEipOff() {
okToBrowserWarning();
sayOkToDisconnect();
int max_seconds_until_connected = 1;
Condition condition = new Condition() {
@Override
public boolean isSatisfied() {
return iconDisconnected();
}
};
solo.waitForCondition(condition, max_seconds_until_connected * 1000);
sleepSeconds(2);
}
private void okToBrowserWarning() {
solo.waitForDialogToOpen();
clickYes();
}
private void clickYes() {
String yes = solo.getString(android.R.string.yes);
solo.clickOnText(yes);
}
private void sayOkToDisconnect() throws IllegalStateException {
boolean disconnect_vpn_appeared = solo.waitForActivity(DisconnectVPN.class);
if(disconnect_vpn_appeared)
clickYes();
else throw new IllegalStateException();
}
void sleepSeconds(int seconds) {
solo.sleep(seconds * 1000);
}
}
|