Tests for iovisor.sf
[groupbasedpolicy.git] / renderers / iovisor / src / test / java / org / opendaylight / groupbasedpolicy / renderer / iovisor / sf / ActionDefinitionListenerTest.java
1 package org.opendaylight.groupbasedpolicy.renderer.iovisor.sf;\r
2 \r
3 import static org.mockito.Mockito.mock;\r
4 import static org.mockito.Mockito.spy;\r
5 import static org.mockito.Mockito.verify;\r
6 import static org.mockito.Mockito.when;\r
7 \r
8 import java.util.Set;\r
9 \r
10 import com.google.common.collect.ImmutableSet;\r
11 import com.google.common.util.concurrent.CheckedFuture;\r
12 import org.junit.Before;\r
13 import org.junit.Test;\r
14 import org.opendaylight.controller.md.sal.binding.api.DataBroker;\r
15 import org.opendaylight.controller.md.sal.binding.api.DataObjectModification;\r
16 import org.opendaylight.controller.md.sal.binding.api.DataTreeIdentifier;\r
17 import org.opendaylight.controller.md.sal.binding.api.DataTreeModification;\r
18 import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;\r
19 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;\r
20 import org.opendaylight.groupbasedpolicy.api.sf.AllowActionDefinition;\r
21 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.SubjectFeatureDefinitions;\r
22 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.subject.feature.definitions.ActionDefinition;\r
23 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.subject.feature.definitions.ActionDefinitionBuilder;\r
24 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.subject.feature.definitions.ActionDefinitionKey;\r
25 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;\r
26 \r
27 public class ActionDefinitionListenerTest {\r
28 \r
29     private ActionDefinitionListener listener;\r
30     private DataObjectModification<ActionDefinition> rootNode;\r
31     private Set<DataTreeModification<ActionDefinition>> changes;\r
32 \r
33     private InstanceIdentifier<ActionDefinition> rootIdentifier;\r
34     private DataBroker dataProvider;\r
35 \r
36     @SuppressWarnings("unchecked")\r
37     @Before\r
38     public void init() {\r
39         dataProvider = mock(DataBroker.class);\r
40 \r
41         listener = spy(new ActionDefinitionListener(dataProvider));\r
42 \r
43         ActionDefinitionKey key = mock(ActionDefinitionKey.class);\r
44         rootNode = mock(DataObjectModification.class);\r
45         rootIdentifier =\r
46                 InstanceIdentifier.builder(SubjectFeatureDefinitions.class).child(ActionDefinition.class, key).build();\r
47         DataTreeIdentifier<ActionDefinition> rootPath =\r
48                 new DataTreeIdentifier<>(LogicalDatastoreType.CONFIGURATION, rootIdentifier);\r
49 \r
50         DataTreeModification<ActionDefinition> change = mock(DataTreeModification.class);\r
51 \r
52         when(change.getRootNode()).thenReturn(rootNode);\r
53         when(change.getRootPath()).thenReturn(rootPath);\r
54 \r
55         changes = ImmutableSet.of(change);\r
56 \r
57         ActionDefinition def = new ActionDefinitionBuilder().setId(AllowActionDefinition.ID).build();\r
58 \r
59         when(rootNode.getDataBefore()).thenReturn(def);\r
60         when(rootNode.getDataAfter()).thenReturn(def);\r
61     }\r
62 \r
63     @Test\r
64     public void testOnWrite() {\r
65         when(rootNode.getModificationType()).thenReturn(DataObjectModification.ModificationType.WRITE);\r
66         WriteTransaction wt = resetTransaction();\r
67 \r
68         listener.onDataTreeChanged(changes);\r
69 \r
70         verify(listener).onSubtreeModified(rootNode, rootIdentifier);\r
71     }\r
72 \r
73     @Test\r
74     public void testOnDelete() {\r
75         when(rootNode.getModificationType()).thenReturn(DataObjectModification.ModificationType.DELETE);\r
76         WriteTransaction wt = resetTransaction();\r
77 \r
78         listener.onDataTreeChanged(changes);\r
79 \r
80         verify(listener).onDelete(rootNode, rootIdentifier);\r
81     }\r
82 \r
83     @Test\r
84     public void testOnSubtreeModified() {\r
85         when(rootNode.getModificationType()).thenReturn(DataObjectModification.ModificationType.SUBTREE_MODIFIED);\r
86         WriteTransaction wt = resetTransaction();\r
87 \r
88         listener.onDataTreeChanged(changes);\r
89 \r
90         verify(listener).onSubtreeModified(rootNode, rootIdentifier);\r
91     }\r
92 \r
93     private WriteTransaction resetTransaction() {\r
94         WriteTransaction wt = mock(WriteTransaction.class);\r
95         CheckedFuture checkedFuture = mock(CheckedFuture.class);\r
96         when(wt.submit()).thenReturn(checkedFuture);\r
97         when(dataProvider.newWriteOnlyTransaction()).thenReturn(wt);\r
98         return wt;\r
99     }\r
100 \r
101 }\r