| /* | |
| * Copyright (C) 2017 The Android Open Source Project | |
| * | |
| * 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 android.net; | |
| import static com.android.testutils.ParcelUtils.assertParcelSane; | |
| import static com.android.testutils.ParcelUtils.assertParcelingIsLossless; | |
| import static org.junit.Assert.assertEquals; | |
| import static org.junit.Assert.assertNotSame; | |
| import static org.junit.Assert.assertNull; | |
| import androidx.test.filters.SmallTest; | |
| import org.junit.Test; | |
| import org.junit.runner.RunWith; | |
| import org.junit.runners.JUnit4; | |
| /** Unit tests for {@link IpSecConfig}. */ | |
| @SmallTest | |
| @RunWith(JUnit4.class) | |
| public class IpSecConfigTest { | |
| @Test | |
| public void testDefaults() throws Exception { | |
| IpSecConfig c = new IpSecConfig(); | |
| assertEquals(IpSecTransform.MODE_TRANSPORT, c.getMode()); | |
| assertEquals("", c.getSourceAddress()); | |
| assertEquals("", c.getDestinationAddress()); | |
| assertNull(c.getNetwork()); | |
| assertEquals(IpSecTransform.ENCAP_NONE, c.getEncapType()); | |
| assertEquals(IpSecManager.INVALID_RESOURCE_ID, c.getEncapSocketResourceId()); | |
| assertEquals(0, c.getEncapRemotePort()); | |
| assertEquals(0, c.getNattKeepaliveInterval()); | |
| assertNull(c.getEncryption()); | |
| assertNull(c.getAuthentication()); | |
| assertEquals(IpSecManager.INVALID_RESOURCE_ID, c.getSpiResourceId()); | |
| assertEquals(0, c.getXfrmInterfaceId()); | |
| } | |
| private IpSecConfig getSampleConfig() { | |
| IpSecConfig c = new IpSecConfig(); | |
| c.setMode(IpSecTransform.MODE_TUNNEL); | |
| c.setSourceAddress("0.0.0.0"); | |
| c.setDestinationAddress("1.2.3.4"); | |
| c.setSpiResourceId(1984); | |
| c.setEncryption( | |
| new IpSecAlgorithm( | |
| IpSecAlgorithm.CRYPT_AES_CBC, | |
| new byte[] {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0xA, 0xB, 0xC, 0xD, 0xE, 0xF})); | |
| c.setAuthentication( | |
| new IpSecAlgorithm( | |
| IpSecAlgorithm.AUTH_HMAC_MD5, | |
| new byte[] {1, 2, 3, 4, 5, 6, 7, 8, 9, 0xA, 0xB, 0xC, 0xD, 0xE, 0xF, 0}, | |
| 128)); | |
| c.setAuthenticatedEncryption( | |
| new IpSecAlgorithm( | |
| IpSecAlgorithm.AUTH_CRYPT_AES_GCM, | |
| new byte[] { | |
| 1, 2, 3, 4, 5, 6, 7, 8, 9, 0xA, 0xB, 0xC, 0xD, 0xE, 0xF, 0, 1, 2, 3, 4 | |
| }, | |
| 128)); | |
| c.setEncapType(android.system.OsConstants.UDP_ENCAP_ESPINUDP); | |
| c.setEncapSocketResourceId(7); | |
| c.setEncapRemotePort(22); | |
| c.setNattKeepaliveInterval(42); | |
| c.setMarkValue(12); | |
| c.setMarkMask(23); | |
| c.setXfrmInterfaceId(34); | |
| return c; | |
| } | |
| @Test | |
| public void testCopyConstructor() { | |
| IpSecConfig original = getSampleConfig(); | |
| IpSecConfig copy = new IpSecConfig(original); | |
| assertEquals(original, copy); | |
| assertNotSame(original, copy); | |
| } | |
| @Test | |
| public void testParcelUnparcel() { | |
| assertParcelingIsLossless(new IpSecConfig()); | |
| IpSecConfig c = getSampleConfig(); | |
| assertParcelSane(c, 15); | |
| } | |
| } |