BUG-6650: ep-ip/sgt, implement and wire template provider
[groupbasedpolicy.git] / sxp-integration / sxp-ep-provider / src / test / java / org / opendaylight / groupbasedpolicy / sxp / ep / provider / impl / EPPolicyTemplateProviderRegistryImplTest.java
1 /*
2  * Copyright (c) 2016 Cisco Systems, Inc. and others.  All rights reserved.
3  *
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
7  */
8
9 package org.opendaylight.groupbasedpolicy.sxp.ep.provider.impl;
10
11 import org.junit.Before;
12 import org.junit.Test;
13 import org.junit.runner.RunWith;
14 import org.mockito.Matchers;
15 import org.mockito.Mock;
16 import org.mockito.Mockito;
17 import org.mockito.runners.MockitoJUnitRunner;
18 import org.opendaylight.groupbasedpolicy.sxp.ep.provider.api.EPPolicyTemplateProvider;
19 import org.opendaylight.groupbasedpolicy.sxp.ep.provider.api.TemplateProviderDistributionTarget;
20 import org.opendaylight.yangtools.concepts.ObjectRegistration;
21
22 /**
23  * Test for {@link EPPolicyTemplateProviderRegistryImpl}.
24  */
25 @RunWith(MockitoJUnitRunner.class)
26 public class EPPolicyTemplateProviderRegistryImplTest {
27
28     @Mock
29     private EPPolicyTemplateProvider templateProvider;
30     @Mock
31     private TemplateProviderDistributionTarget<EPPolicyTemplateProvider> target1;
32     @Mock
33     private TemplateProviderDistributionTarget<EPPolicyTemplateProvider> target2;
34     @Mock
35     private TemplateProviderDistributionTarget<EPPolicyTemplateProvider> target3;
36
37     private EPPolicyTemplateProviderRegistryImpl registry;
38
39     @Before
40     public void setUp() throws Exception {
41         registry = new EPPolicyTemplateProviderRegistryImpl();
42     }
43
44     @Test
45     public void testRegisterTemplateProvider() throws Exception {
46         registry.addDistributionTarget(target1);
47         final ObjectRegistration<EPPolicyTemplateProvider> registration = registry.registerTemplateProvider(templateProvider);
48         Mockito.verify(target1).setTemplateProvider(templateProvider);
49         registry.addDistributionTarget(target2);
50         Mockito.verify(target2).setTemplateProvider(templateProvider);
51
52         registration.close();
53         Mockito.verify(target1).setTemplateProvider(null);
54         Mockito.verify(target2).setTemplateProvider(null);
55         registry.addDistributionTarget(target3);
56
57         Mockito.verifyNoMoreInteractions(target1, target2, target3);
58     }
59
60     @Test
61     public void testAddDistributionTarget() throws Exception {
62         registry.addDistributionTarget(target1);
63         Mockito.verify(target1, Mockito.never()).setTemplateProvider(Matchers.<EPPolicyTemplateProvider>any());
64
65         registry.registerTemplateProvider(templateProvider);
66         Mockito.verify(target1).setTemplateProvider(templateProvider);
67
68         registry.addDistributionTarget(target2);
69         Mockito.verify(target2).setTemplateProvider(templateProvider);
70     }
71
72     @Test
73     public void testClose() throws Exception {
74         registry.addDistributionTarget(target1);
75         final ObjectRegistration<EPPolicyTemplateProvider> registration = registry.registerTemplateProvider(templateProvider);
76         registry.addDistributionTarget(target2);
77         Mockito.verify(target1).setTemplateProvider(templateProvider);
78         Mockito.verify(target2).setTemplateProvider(templateProvider);
79
80         registry.close();
81         Mockito.verify(target1).setTemplateProvider(null);
82         Mockito.verify(target2).setTemplateProvider(null);
83
84         Mockito.verifyNoMoreInteractions(target1, target2);
85     }
86 }