Add test for startPptp

The test verifies arguments used to start the daemon

Bug: 201660636
Test: atest VpnTest
Change-Id: I0854fbeaf1a3e3554c157fde227a7bfa187b1013
Merged-In: I0854fbeaf1a3e3554c157fde227a7bfa187b1013
This commit is contained in:
Remi NGUYEN VAN
2022-02-28 17:54:45 +09:00
committed by chiachangwang
parent 85694dc277
commit 522cea7d4e

View File

@@ -1846,6 +1846,16 @@ public class VpnTest {
startRacoon("hostname", "5.6.7.8"); // address returned by deps.resolve
}
@Test
public void testStartPptp() throws Exception {
startPptp(true /* useMppe */);
}
@Test
public void testStartPptp_NoMppe() throws Exception {
startPptp(false /* useMppe */);
}
private void assertTransportInfoMatches(NetworkCapabilities nc, int type) {
assertNotNull(nc);
VpnTransportInfo ti = (VpnTransportInfo) nc.getTransportInfo();
@@ -1853,6 +1863,49 @@ public class VpnTest {
assertEquals(type, ti.getType());
}
private void startPptp(boolean useMppe) throws Exception {
final VpnProfile profile = new VpnProfile("testProfile" /* key */);
profile.type = VpnProfile.TYPE_PPTP;
profile.name = "testProfileName";
profile.username = "userName";
profile.password = "thePassword";
profile.server = "192.0.2.123";
profile.mppe = useMppe;
doReturn(new Network[] { new Network(101) }).when(mConnectivityManager).getAllNetworks();
doReturn(new Network(102)).when(mConnectivityManager).registerNetworkAgent(any(), any(),
any(), any(), any(), any(), anyInt());
final Vpn vpn = startLegacyVpn(createVpn(primaryUser.id), profile);
final TestDeps deps = (TestDeps) vpn.mDeps;
// TODO: use import when this is merged in all branches and there's no merge conflict
com.android.testutils.Cleanup.testAndCleanup(() -> {
final String[] mtpdArgs = deps.mtpdArgs.get(10, TimeUnit.SECONDS);
final String[] argsPrefix = new String[]{
EGRESS_IFACE, "pptp", profile.server, "1723", "name", profile.username,
"password", profile.password, "linkname", "vpn", "refuse-eap", "nodefaultroute",
"usepeerdns", "idle", "1800", "mtu", "1270", "mru", "1270"
};
assertArrayEquals(argsPrefix, Arrays.copyOf(mtpdArgs, argsPrefix.length));
if (useMppe) {
assertEquals(argsPrefix.length + 2, mtpdArgs.length);
assertEquals("+mppe", mtpdArgs[argsPrefix.length]);
assertEquals("-pap", mtpdArgs[argsPrefix.length + 1]);
} else {
assertEquals(argsPrefix.length + 1, mtpdArgs.length);
assertEquals("nomppe", mtpdArgs[argsPrefix.length]);
}
verify(mConnectivityManager, timeout(10_000)).registerNetworkAgent(any(), any(),
any(), any(), any(), any(), anyInt());
}, () -> { // Cleanup
vpn.mVpnRunner.exitVpnRunner();
deps.getStateFile().delete(); // set to delete on exit, but this deletes it earlier
vpn.mVpnRunner.join(10_000); // wait for up to 10s for the runner to die and cleanup
});
}
public void startRacoon(final String serverAddr, final String expectedAddr)
throws Exception {
final ConditionVariable legacyRunnerReady = new ConditionVariable();