/*
* Copyright 2011 yingxinwu.g@gmail.com
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package xink.vpn.wrapper.test;
import xink.vpn.wrapper.L2tpIpsecPskProfile;
import xink.vpn.wrapper.L2tpProfile;
import xink.vpn.wrapper.PptpProfile;
import xink.vpn.wrapper.VpnProfile;
import android.test.AndroidTestCase;
public class VpnProfileCloneTest extends AndroidTestCase {
String[] genericProfile;
@Override
public void setUp() {
String id = "vpn1";
String name = "pptp";
String server = "vpnServer";
String user = "admin";
String psswd = "psswd";
String domainSuffix = "8.8.8.8";
genericProfile = new String[] { id, name, server, user, psswd, domainSuffix };
}
public void testPptpClone() throws Exception {
PptpProfile p = new PptpProfile(mContext);
populateGenericProps(genericProfile, p);
p.setEncryptionEnabled(false);
assertGenericProps(genericProfile, p);
assertFalse(p.isEncryptionEnabled());
// test cloning default values
PptpProfile clone = p.dulicateToConnect();
assertGenericProps(genericProfile, clone);
assertFalse(clone.isEncryptionEnabled());
// test cloning encrypted pptp
p.setEncryptionEnabled(true);
clone = p.dulicateToConnect();
assertGenericProps(genericProfile, clone);
assertTrue(clone.isEncryptionEnabled());
}
public void testL2tpClone() throws Exception {
L2tpProfile p = new L2tpProfile(mContext);
populateGenericProps(genericProfile, p);
p.setSecretEnabled(false);
assertGenericProps(genericProfile, p);
assertFalse(p.isSecretEnabled());
assertNull(p.getSecretString());
// test cloning default values
L2tpProfile clone = p.dulicateToConnect();
assertFalse(clone.isSecretEnabled());
assertNull(clone.getSecretString());
// test cloning with secret string enabled
p.setSecretEnabled(true);
clone = p.dulicateToConnect();
assertGenericProps(genericProfile, clone);
assertTrue(clone.isSecretEnabled());
assertEquals(L2tpProfile.KEY_PREFIX_L2TP_SECRET + clone.getId(), clone.getSecretString());
}
public void testL2tpIpsecClone() throws Exception {
L2tpIpsecPskProfile p = new L2tpIpsecPskProfile(mContext);
populateGenericProps(genericProfile, p);
p.setSecretEnabled(false);
assertGenericProps(genericProfile, p);
assertFalse(p.isSecretEnabled());
assertNull(p.getSecretString());
assertNull(p.getPresharedKey());
// test cloning default values
L2tpIpsecPskProfile clone = p.dulicateToConnect();
assertFalse(clone.isSecretEnabled());
assertNull(clone.getSecretString());
assertEquals(L2tpIpsecPskProfile.KEY_PREFIX_IPSEC_PSK + clone.getId(), clone.getPresharedKey());
// test cloning with secret string enabled
p.setSecretEnabled(true);
clone = p.dulicateToConnect();
assertGenericProps(genericProfile, clone);
assertTrue(clone.isSecretEnabled());
assertEquals(L2tpProfile.KEY_PREFIX_L2TP_SECRET + clone.getId(), clone.getSecretString());
assertEquals(L2tpIpsecPskProfile.KEY_PREFIX_IPSEC_PSK + clone.getId(), clone.getPresharedKey());
}
static void populateGenericProps(final String[] values, final VpnProfile target) {
target.setId(values[0]);
target.setName(values[1]);
target.setServerName(values[2]);
target.setUsername(values[3]);
target.setPassword(values[4]);
target.setDomainSuffices(values[5]);
}
static void assertGenericProps(final String[] expd, final VpnProfile actual) {
assertEquals(expd[0], actual.getId());
assertEquals(expd[1], actual.getName());
assertEquals(expd[2], actual.getServerName());
assertEquals(expd[3], actual.getUsername());
assertEquals(expd[4], actual.getPassword());
assertEquals(expd[5], actual.getDomainSuffices());
}
}