package android.net.vpn;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.net.vpn.L2tpProfile;
import android.net.vpn.L2tpIpsecProfile;
import android.net.vpn.L2tpIpsecPskProfile;
import android.net.vpn.PptpProfile;
import android.net.vpn.VpnManager;
import android.net.vpn.VpnProfile;
import android.net.vpn.VpnState;
import android.net.vpn.VpnType;
import android.os.ConditionVariable;
import android.os.Parcel;
import android.test.AndroidTestCase;
import android.test.suitebuilder.annotation.SmallTest;
import android.text.TextUtils;
public class VpnTest extends AndroidTestCase {
private static final String NAME = "a name";
private static final String SERVER_NAME = "a server name";
private static final String ID = "some id";
private static final String SUFFICES = "some suffices";
private static final String ROUTES = "some routes";
private static final String SAVED_NAME = "some name";
@Override
}
@Override
}
@SmallTest
testVpnType(VpnType.L2TP);
testVpnType(VpnType.L2TP_IPSEC);
testVpnType(VpnType.L2TP_IPSEC_PSK);
testVpnType(VpnType.PPTP);
}
@SmallTest
VpnState state = VpnState.CONNECTING;
testVpnProfile(createTestProfile(state), state);
}
@SmallTest
assertEquals(VpnType.L2TP, new L2tpProfile().getType());
assertEquals(VpnType.L2TP_IPSEC, new L2tpIpsecProfile().getType());
assertEquals(VpnType.L2TP_IPSEC_PSK,
new L2tpIpsecPskProfile().getType());
assertEquals(VpnType.PPTP, new PptpProfile().getType());
}
@SmallTest
assertTrue(VpnManager.getSupportedVpnTypes().length > 0);
}
@SmallTest
VpnManager m = new VpnManager(getContext());
VpnType[] types = VpnManager.getSupportedVpnTypes();
for (VpnType t : types) {
assertEquals(t, m.createVpnProfile(t).getType());
}
}
@SmallTest
VpnProfile p = createTestProfile(VpnState.CONNECTED);
Parcel parcel = Parcel.obtain();
p.writeToParcel(parcel, 0);
parcel.setDataPosition(0);
testVpnProfile(VpnProfile.CREATOR.createFromParcel(parcel), null);
}
@SmallTest
final String profileName = "whatever";
final VpnState state = VpnState.DISCONNECTING;
final ConditionVariable cv = new ConditionVariable();
cv.close();
BroadcastReceiver r = new BroadcastReceiver() {
assertEquals(profileName,
i.getStringExtra(VpnManager.BROADCAST_PROFILE_NAME));
assertEquals(state, i.getSerializableExtra(
VpnManager.BROADCAST_CONNECTION_STATE));
cv.open();
}
};
VpnManager m = new VpnManager(getContext());
m.registerConnectivityReceiver(r);
m.broadcastConnectivity(profileName, state);
assertTrue(cv.block(5000));
}
assertFalse(TextUtils.isEmpty(type.getDisplayName()));
assertNotNull(type.getProfileClass());
}
VpnProfile p = new L2tpProfile();
p.setName(NAME);
p.setServerName(SERVER_NAME);
p.setId(ID);
p.setDomainSuffices(SUFFICES);
p.setRouteList(ROUTES);
p.setSavedUsername(SAVED_NAME);
p.setState(state);
return p;
}
assertEquals(NAME, p.getName());
assertEquals(SERVER_NAME, p.getServerName());
assertEquals(ID, p.getId());
assertEquals(SUFFICES, p.getDomainSuffices());
assertEquals(ROUTES, p.getRouteList());
assertEquals(SAVED_NAME, p.getSavedUsername());
if (state != null) assertEquals(state, p.getState());
}
}