2 * Copyright (c) 2015 Pantheon Technologies s.r.o. and others. All rights reserved.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
8 package org.opendaylight.groupbasedpolicy.neutron.mapper.mapping.rule;
10 import static org.junit.Assert.assertEquals;
11 import static org.junit.Assert.assertNotNull;
13 import org.junit.Test;
14 import org.opendaylight.groupbasedpolicy.neutron.mapper.test.NeutronEntityFactory;
15 import org.opendaylight.groupbasedpolicy.neutron.mapper.test.PolicyAssert;
16 import org.opendaylight.groupbasedpolicy.neutron.mapper.util.MappingUtils;
17 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.Description;
18 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.has.classifier.refs.ClassifierRef;
19 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.Contract;
20 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.Clause;
21 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.Subject;
22 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.subject.Rule;
23 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.subject.feature.instances.ClassifierInstance;
24 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.constants.rev150712.DirectionIngress;
25 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.constants.rev150712.EthertypeV4;
26 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.constants.rev150712.ProtocolTcp;
27 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.secgroups.rev150712.security.rules.attributes.security.rules.SecurityRule;
29 public class SingleRuleContractTest {
32 public void testConstructorAndGetters() {
33 SecurityRule secRule = NeutronEntityFactory.securityRuleWithoutGroupIds(
34 "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa", "bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb", EthertypeV4.class,
35 DirectionIngress.class, ProtocolTcp.class, 8010, 8020);
36 int subjectAndRuleOrder = 1;
37 SingleRuleContract singleRuleContract = new SingleRuleContract(secRule, subjectAndRuleOrder, new Description(
38 "contractDescription"), MappingUtils.ALLOW_ACTION_CHOICE);
40 SingleClassifierRule singleClsfRule = singleRuleContract.getSingleClassifierRule();
41 assertNotNull(singleClsfRule);
43 ClassifierInstance clsfInstance = singleClsfRule.getClassifierInstance();
44 assertNotNull(clsfInstance);
45 assertEquals(clsfInstance, SecRuleEntityDecoder.getClassifierInstance(secRule));
47 ClassifierRef clsfRef = singleClsfRule.getClassifierRef();
48 assertNotNull(clsfRef);
49 assertEquals(clsfRef, SecRuleEntityDecoder.getClassifierRef(secRule));
51 Rule rule = singleClsfRule.getRule();
53 PolicyAssert.assertRule(rule, secRule, subjectAndRuleOrder + 180);
55 assertEquals(rule, singleRuleContract.getRule());
57 Subject subject = singleRuleContract.getSubject();
58 assertNotNull(subject);
59 PolicyAssert.assertSubjectWithOneRule(subject, secRule);
61 Clause clause = singleRuleContract.getClause();
62 assertNotNull(clause);
63 PolicyAssert.assertClauseWithOneSubject(clause, secRule);
65 Contract contract = singleRuleContract.getContract();
66 assertNotNull(contract);
67 PolicyAssert.assertContract(contract, secRule);