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