diff options
author | evitayan <evitayan@google.com> | 2019-10-01 20:31:33 -0700 |
---|---|---|
committer | evitayan <evitayan@google.com> | 2019-10-07 20:16:02 -0700 |
commit | 7fb54fc6099d7941869e2a5f489807e7ee920233 (patch) | |
tree | 936942149beb8797428d3511b4acc9fb90cae2bc /tests/iketests/src | |
parent | d824ae4791450488ab87ce8d0c7b8858410045e5 (diff) | |
download | ike-7fb54fc6099d7941869e2a5f489807e7ee920233.tar.gz |
Create ChildSessionConfiguration
Bug: 140644654
Test: atest FrameworksIkeTests(new tests added)
Change-Id: I650b5add045a56888f6e49c3e94efb63e356c3f9
Diffstat (limited to 'tests/iketests/src')
-rw-r--r-- | tests/iketests/src/java/com/android/ike/ikev2/ChildSessionConfigurationTest.java | 164 |
1 files changed, 164 insertions, 0 deletions
diff --git a/tests/iketests/src/java/com/android/ike/ikev2/ChildSessionConfigurationTest.java b/tests/iketests/src/java/com/android/ike/ikev2/ChildSessionConfigurationTest.java new file mode 100644 index 00000000..bd8da2c8 --- /dev/null +++ b/tests/iketests/src/java/com/android/ike/ikev2/ChildSessionConfigurationTest.java @@ -0,0 +1,164 @@ +/* + * Copyright (C) 2019 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 com.android.ike.ikev2; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.fail; +import static org.mockito.Mockito.mock; + +import android.net.LinkAddress; + +import com.android.ike.ikev2.message.IkeConfigPayload; +import com.android.ike.ikev2.message.IkeConfigPayload.ConfigAttribute; +import com.android.ike.ikev2.message.IkeConfigPayload.ConfigAttributeIpv4Address; +import com.android.ike.ikev2.message.IkeConfigPayload.ConfigAttributeIpv4Netmask; +import com.android.ike.ikev2.message.IkeConfigPayload.ConfigAttributeIpv6Address; + +import libcore.net.InetAddressUtils; + +import org.junit.Before; +import org.junit.Test; + +import java.net.Inet4Address; +import java.net.Inet6Address; +import java.util.LinkedList; +import java.util.List; + +public final class ChildSessionConfigurationTest { + private static final int IP4_PREFIX_LEN = 28; + private static final Inet4Address IPV4_ADDRESS = + (Inet4Address) (InetAddressUtils.parseNumericAddress("192.0.2.100")); + private static final Inet4Address IPV4_NETMASK = + (Inet4Address) (InetAddressUtils.parseNumericAddress("255.255.255.240")); + private static final LinkAddress IPV4_LINK_ADDRESS = + new LinkAddress(IPV4_ADDRESS, IP4_PREFIX_LEN); + + private static final int IP6_PREFIX_LEN = 64; + private static final Inet6Address IPV6_ADDRESS = + (Inet6Address) (InetAddressUtils.parseNumericAddress("2001:db8::1")); + private static final LinkAddress IPV6_LINK_ADDRESS = + new LinkAddress(IPV6_ADDRESS, IP6_PREFIX_LEN); + + private List mMockInTsList; + private List mMockOutTsList; + + private ConfigAttributeIpv4Address mIpv4Attr; + private ConfigAttributeIpv4Netmask mNetmaskAttr; + private ConfigAttributeIpv6Address mIpv6Attr; + + @Before + public void setUp() throws Exception { + mMockInTsList = new LinkedList<IkeTrafficSelector>(); + mMockInTsList.add(mock(IkeTrafficSelector.class)); + + mMockOutTsList = new LinkedList<IkeTrafficSelector>(); + mMockOutTsList.add(mock(IkeTrafficSelector.class)); + mMockOutTsList.add(mock(IkeTrafficSelector.class)); + + mIpv4Attr = new ConfigAttributeIpv4Address(IPV4_ADDRESS); + mNetmaskAttr = new ConfigAttributeIpv4Netmask(IPV4_NETMASK.getAddress()); + mIpv6Attr = new ConfigAttributeIpv6Address(IPV6_LINK_ADDRESS); + } + + private void verifySessionConfigCommon(ChildSessionConfiguration sessionConfig) { + verifyTsList(mMockInTsList, sessionConfig.getInboundTrafficSelectors()); + verifyTsList(mMockOutTsList, sessionConfig.getOutboundTrafficSelectors()); + } + + private void verifyTsList( + List<IkeTrafficSelector> expectedList, List<IkeTrafficSelector> tsList) { + assertEquals(expectedList.size(), tsList.size()); + for (int i = 0; i < expectedList.size(); i++) { + assertEquals(expectedList.get(i), tsList.get(i)); + } + } + + @Test + public void testBuildWithoutConfig() { + ChildSessionConfiguration sessionConfig = + new ChildSessionConfiguration(mMockInTsList, mMockOutTsList); + + verifySessionConfigCommon(sessionConfig); + } + + @Test + public void testBuildWithNetmaskAttr() { + List<ConfigAttribute> attributeList = new LinkedList<>(); + attributeList.add(mIpv4Attr); + attributeList.add(mNetmaskAttr); + attributeList.add(mIpv6Attr); + + IkeConfigPayload configPayload = new IkeConfigPayload(true /*isReply*/, attributeList); + + ChildSessionConfiguration sessionConfig = + new ChildSessionConfiguration(mMockInTsList, mMockOutTsList, configPayload); + + verifySessionConfigCommon(sessionConfig); + + List<LinkAddress> expectedInternalAddrList = new LinkedList<>(); + expectedInternalAddrList.add(IPV4_LINK_ADDRESS); + expectedInternalAddrList.add(IPV6_LINK_ADDRESS); + + assertEquals( + expectedInternalAddrList.size(), sessionConfig.getInternalAddressList().size()); + for (int i = 0; i < expectedInternalAddrList.size(); i++) { + assertEquals( + expectedInternalAddrList.get(i), sessionConfig.getInternalAddressList().get(i)); + } + } + + @Test + public void testBuildWithoutNetmaskAttr() { + List<ConfigAttribute> attributeList = new LinkedList<>(); + attributeList.add(mIpv4Attr); + attributeList.add(mIpv6Attr); + + IkeConfigPayload configPayload = new IkeConfigPayload(true /*isReply*/, attributeList); + + ChildSessionConfiguration sessionConfig = + new ChildSessionConfiguration(mMockInTsList, mMockOutTsList, configPayload); + + verifySessionConfigCommon(sessionConfig); + + List<LinkAddress> expectedInternalAddrList = new LinkedList<>(); + expectedInternalAddrList.add(new LinkAddress(IPV4_ADDRESS, 32)); + expectedInternalAddrList.add(IPV6_LINK_ADDRESS); + + assertEquals( + expectedInternalAddrList.size(), sessionConfig.getInternalAddressList().size()); + for (int i = 0; i < expectedInternalAddrList.size(); i++) { + assertEquals( + expectedInternalAddrList.get(i), sessionConfig.getInternalAddressList().get(i)); + } + } + + @Test + public void testBuildWithConfigReq() { + List<ConfigAttribute> attributeList = new LinkedList<>(); + attributeList.add(mIpv4Attr); + attributeList.add(mIpv6Attr); + + IkeConfigPayload configPayload = new IkeConfigPayload(false /*isReply*/, attributeList); + + try { + new ChildSessionConfiguration(mMockInTsList, mMockOutTsList, configPayload); + fail("Expected to fail because provided config paylaod is not a reply."); + } catch (IllegalArgumentException expected) { + + } + } +} |