diff options
Diffstat (limited to 'nat/nat2vpp/src/test/java/io/fd')
-rw-r--r-- | nat/nat2vpp/src/test/java/io/fd/hc2vpp/nat/write/MappingEntryCustomizerTest.java | 13 | ||||
-rw-r--r-- | nat/nat2vpp/src/test/java/io/fd/hc2vpp/nat/write/MappingEntryValidatorTest.java | 115 | ||||
-rw-r--r-- | nat/nat2vpp/src/test/java/io/fd/hc2vpp/nat/write/PolicyValidatorTest.java (renamed from nat/nat2vpp/src/test/java/io/fd/hc2vpp/nat/write/PolicyCustomizerTest.java) | 40 |
3 files changed, 141 insertions, 27 deletions
diff --git a/nat/nat2vpp/src/test/java/io/fd/hc2vpp/nat/write/MappingEntryCustomizerTest.java b/nat/nat2vpp/src/test/java/io/fd/hc2vpp/nat/write/MappingEntryCustomizerTest.java index 60cc643e9..ede39e4b3 100644 --- a/nat/nat2vpp/src/test/java/io/fd/hc2vpp/nat/write/MappingEntryCustomizerTest.java +++ b/nat/nat2vpp/src/test/java/io/fd/hc2vpp/nat/write/MappingEntryCustomizerTest.java @@ -47,11 +47,11 @@ public class MappingEntryCustomizerTest extends WriterCustomizerTest implements private static final long NAT_INSTANCE_ID = 1; private static final long MAPPING_ID = 22; - private static final InstanceIdentifier<MappingEntry> IID = NAT_INSTANCES_ID + static final InstanceIdentifier<MappingEntry> IID = NAT_INSTANCES_ID .child(Instance.class, new InstanceKey(NAT_INSTANCE_ID)) .child(MappingTable.class).child(MappingEntry.class, new MappingEntryKey(MAPPING_ID)); - private static final String MAPPING_TABLE_PATH = "/ietf-nat:nat/ietf-nat:instances/" + static final String MAPPING_TABLE_PATH = "/ietf-nat:nat/ietf-nat:instances/" + "ietf-nat:instance[ietf-nat:id='" + NAT_INSTANCE_ID + "']/ietf-nat:mapping-table"; @Mock @@ -87,13 +87,6 @@ public class MappingEntryCustomizerTest extends WriterCustomizerTest implements verify(jvppNat).nat64AddDelStaticBib(expectedRequest); } - @Test(expected = IllegalArgumentException.class) - public void testWriteNat44UnsupportedProtocol( - @InjectTestData(resourcePath = "/nat44/static-mapping-unsupported-proto.json", id = MAPPING_TABLE_PATH) MappingTable data) - throws WriteFailedException { - customizer.writeCurrentAttributes(IID, extractMappingEntry(data), writeContext); - } - @Test(expected = UnsupportedOperationException.class) public void testUpdateNat64( @InjectTestData(resourcePath = "/nat64/static-mapping.json", id = MAPPING_TABLE_PATH) MappingTable before, @@ -123,7 +116,7 @@ public class MappingEntryCustomizerTest extends WriterCustomizerTest implements verify(jvppNat).nat64AddDelStaticBib(getExpectedNat64Request()); } - private static MappingEntry extractMappingEntry(MappingTable data) { + static MappingEntry extractMappingEntry(MappingTable data) { // assumes single nat instance and single mapping entry return data.getMappingEntry().get(0); } diff --git a/nat/nat2vpp/src/test/java/io/fd/hc2vpp/nat/write/MappingEntryValidatorTest.java b/nat/nat2vpp/src/test/java/io/fd/hc2vpp/nat/write/MappingEntryValidatorTest.java new file mode 100644 index 000000000..1cb98cc0e --- /dev/null +++ b/nat/nat2vpp/src/test/java/io/fd/hc2vpp/nat/write/MappingEntryValidatorTest.java @@ -0,0 +1,115 @@ +/* + * Copyright (c) 2018 Cisco and/or its affiliates. + * + * 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 io.fd.hc2vpp.nat.write; + +import static io.fd.hc2vpp.nat.write.MappingEntryCustomizerTest.IID; +import static io.fd.hc2vpp.nat.write.MappingEntryCustomizerTest.MAPPING_TABLE_PATH; +import static io.fd.hc2vpp.nat.write.MappingEntryCustomizerTest.extractMappingEntry; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; +import static org.mockito.MockitoAnnotations.initMocks; + +import io.fd.hc2vpp.nat.NatTestSchemaContext; +import io.fd.honeycomb.test.tools.HoneycombTestRunner; +import io.fd.honeycomb.test.tools.annotations.InjectTestData; +import io.fd.honeycomb.translate.write.DataValidationFailedException; +import io.fd.honeycomb.translate.write.WriteContext; +import io.fd.honeycomb.translate.write.WriteFailedException; +import io.fd.vpp.jvpp.nat.dto.Nat44AddDelStaticMapping; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.Mock; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpPrefix; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Prefix; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv6Prefix; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.PortNumber; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.nat.rev180628.MappingEntry.Type; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.nat.rev180628.mapping.entry.InternalSrcPort; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.nat.rev180628.mapping.entry.InternalSrcPortBuilder; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.nat.rev180628.nat.instances.instance.MappingTable; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.nat.rev180628.nat.instances.instance.mapping.table.MappingEntry; +import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; + +@RunWith(HoneycombTestRunner.class) +public class MappingEntryValidatorTest implements NatTestSchemaContext { + @Mock + private WriteContext writeContext; + private MappingEntryValidator validator; + + @Before + public void setUp() { + initMocks(this); + validator = new MappingEntryValidator(); + } + + @Test + public void testWriteNat44( + @InjectTestData(resourcePath = "/nat44/static-mapping.json", id = MAPPING_TABLE_PATH) MappingTable data) + throws WriteFailedException, DataValidationFailedException.CreateValidationFailedException { + validator.validateWrite(IID, extractMappingEntry(data), writeContext); + } + + @Test(expected = DataValidationFailedException.CreateValidationFailedException.class) + public void testWriteNat44UnsupportedProtocol( + @InjectTestData(resourcePath = "/nat44/static-mapping-unsupported-proto.json", id = MAPPING_TABLE_PATH) MappingTable data) + throws WriteFailedException, DataValidationFailedException.CreateValidationFailedException { + validator.validateWrite(IID, extractMappingEntry(data), writeContext); + } + + @Test(expected = IllegalArgumentException.class) + public void testUnsupportedMappingEntryType() { + final MappingEntry mappingEntry = mock(MappingEntry.class); + when(mappingEntry.getType()).thenReturn(Type.DynamicExplicit); + validator.validateMappingEntryType(mappingEntry); + } + + @Test(expected = IllegalArgumentException.class) + public void testInvalidInternalIpv6SrcAddressPrefix() { + final MappingEntry mappingEntry = mock(MappingEntry.class); + final IpPrefix address = new IpPrefix(new Ipv6Prefix("1::1/127")); + when(mappingEntry.getInternalSrcAddress()).thenReturn(address); + validator.validateInternalSrcAddress(mappingEntry); + } + + @Test(expected = IllegalArgumentException.class) + public void testInvalidInternalIpv4SrcAddressPrefix() { + final MappingEntry mappingEntry = mock(MappingEntry.class); + final IpPrefix address = new IpPrefix(new Ipv4Prefix("1.2.3.4/16")); + when(mappingEntry.getInternalSrcAddress()).thenReturn(address); + validator.validateInternalSrcAddress(mappingEntry); + } + + @Test(expected = IllegalArgumentException.class) + public void testInvalidExternalSrcAddress() { + final MappingEntry mappingEntry = mock(MappingEntry.class); + final IpPrefix address = new IpPrefix(new Ipv4Prefix("1.2.3.4/16")); + when(mappingEntry.getExternalSrcAddress()).thenReturn(address); + validator.validateExternalSrcAddress(mappingEntry); + } + + @Test(expected = IllegalArgumentException.class) + public void testInvalidPortNumber() { + InternalSrcPort port = new InternalSrcPortBuilder() + .setStartPortNumber(new PortNumber(10)) + .setEndPortNumber(new PortNumber(20)) + .build(); + final InstanceIdentifier<MappingEntry> id = InstanceIdentifier.create(MappingEntry.class); + MappingEntryValidator.validatePortNumber(id, port); + } +}
\ No newline at end of file diff --git a/nat/nat2vpp/src/test/java/io/fd/hc2vpp/nat/write/PolicyCustomizerTest.java b/nat/nat2vpp/src/test/java/io/fd/hc2vpp/nat/write/PolicyValidatorTest.java index faa4ced4d..7cee98d4a 100644 --- a/nat/nat2vpp/src/test/java/io/fd/hc2vpp/nat/write/PolicyCustomizerTest.java +++ b/nat/nat2vpp/src/test/java/io/fd/hc2vpp/nat/write/PolicyValidatorTest.java @@ -18,12 +18,15 @@ package io.fd.hc2vpp.nat.write; import static io.fd.hc2vpp.nat.NatIds.NAT_INSTANCES_ID; import static org.mockito.Mockito.mock; +import static org.mockito.MockitoAnnotations.initMocks; -import io.fd.hc2vpp.common.test.write.WriterCustomizerTest; -import io.fd.honeycomb.translate.write.WriteFailedException; +import io.fd.honeycomb.translate.write.DataValidationFailedException.CreateValidationFailedException; +import io.fd.honeycomb.translate.write.WriteContext; import java.util.Arrays; import java.util.Collections; +import org.junit.Before; import org.junit.Test; +import org.mockito.Mock; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv6Prefix; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.nat.rev180628.nat.instances.Instance; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.nat.rev180628.nat.instances.InstanceKey; @@ -34,7 +37,7 @@ import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.nat.rev1806 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.nat.rev180628.nat.instances.instance.policy.Nat64PrefixesBuilder; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; -public class PolicyCustomizerTest extends WriterCustomizerTest { +public class PolicyValidatorTest { private static final long VRF_ID = 123; private static final InstanceIdentifier<Instance> NAT_INSTANCE_ID = @@ -48,32 +51,35 @@ public class PolicyCustomizerTest extends WriterCustomizerTest { private static final Nat64Prefixes P2 = new Nat64PrefixesBuilder().setNat64Prefix(new Ipv6Prefix("2001:db8::2/32")).build(); - private PolicyCustomizer customizer; + @Mock + private WriteContext writeContext; + private PolicyValidator validator; - @Override - protected void setUpTest() throws Exception { - customizer = new PolicyCustomizer(); + @Before + public void setUp() throws Exception { + initMocks(this); + validator = new PolicyValidator(); } - @Test(expected = IllegalArgumentException.class) - public void testInvalidPolicyId() throws WriteFailedException { - customizer.writeCurrentAttributes(INVALID_POLICY_ID, mock(Policy.class), writeContext); + @Test(expected = CreateValidationFailedException.class) + public void testInvalidPolicyId() throws CreateValidationFailedException { + validator.validateWrite(INVALID_POLICY_ID, mock(Policy.class), writeContext); } @Test - public void testNoNat64Prefixes() throws WriteFailedException { - customizer.writeCurrentAttributes(DEFAULT_POLICY_ID, mock(Policy.class), writeContext); + public void testNoNat64Prefixes() throws CreateValidationFailedException { + validator.validateWrite(DEFAULT_POLICY_ID, mock(Policy.class), writeContext); } @Test - public void testSingleNat64Prefix() throws WriteFailedException { + public void testSingleNat64Prefix() throws CreateValidationFailedException { final Policy policy = new PolicyBuilder().setNat64Prefixes(Collections.singletonList(P1)).build(); - customizer.writeCurrentAttributes(DEFAULT_POLICY_ID, policy, writeContext); + validator.validateWrite(DEFAULT_POLICY_ID, policy, writeContext); } - @Test(expected = IllegalArgumentException.class) - public void testTwoNat64Prefixes() throws WriteFailedException { + @Test(expected = CreateValidationFailedException.class) + public void testTwoNat64Prefixes() throws CreateValidationFailedException { final Policy policy = new PolicyBuilder().setNat64Prefixes(Arrays.asList(P1, P2)).build(); - customizer.writeCurrentAttributes(DEFAULT_POLICY_ID, policy, writeContext); + validator.validateWrite(DEFAULT_POLICY_ID, policy, writeContext); } }
\ No newline at end of file |