Fixed 3 tests which were clearly put in wrong directory
[netconf.git] / netconf / mdsal-netconf-notification / src / test / java / org / opendaylight / controller / config / yang / netconf / mdsal / notification / SessionNotificationProducerTest.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 package org.opendaylight.controller.config.yang.netconf.mdsal.notification;
9
10 import static org.mockito.Matchers.any;
11 import static org.mockito.Mockito.doNothing;
12 import static org.mockito.Mockito.doReturn;
13 import static org.mockito.Mockito.mock;
14 import static org.mockito.Mockito.verify;
15
16 import java.util.Collections;
17 import org.junit.Assert;
18 import org.junit.Before;
19 import org.junit.Test;
20 import org.mockito.ArgumentCaptor;
21 import org.mockito.Mock;
22 import org.mockito.MockitoAnnotations;
23 import org.opendaylight.controller.md.sal.binding.api.DataObjectModification;
24 import org.opendaylight.controller.md.sal.binding.api.DataTreeModification;
25 import org.opendaylight.netconf.notifications.BaseNotificationPublisherRegistration;
26 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Host;
27 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.netconf.monitoring.rev101004.netconf.state.sessions.Session;
28 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.netconf.monitoring.rev101004.netconf.state.sessions.SessionBuilder;
29 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.netconf.notifications.rev120206.NetconfSessionEnd;
30 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.netconf.notifications.rev120206.NetconfSessionStart;
31
32 public class SessionNotificationProducerTest {
33
34     private SessionNotificationProducer publisher;
35     @Mock
36     private BaseNotificationPublisherRegistration registration;
37
38     @Before
39     public void setUp() throws Exception {
40         MockitoAnnotations.initMocks(this);
41         publisher = new SessionNotificationProducer(registration);
42         doNothing().when(registration).onSessionStarted(any());
43         doNothing().when(registration).onSessionEnded(any());
44     }
45
46     @Test
47     public void testOnDataChangedSessionCreated() throws Exception {
48         final Session session = createSession(1);
49         final DataTreeModification<Session> treeChange = getTreeModification(session, DataObjectModification.ModificationType.WRITE);
50         publisher.onDataTreeChanged(Collections.singleton(treeChange));
51         ArgumentCaptor<NetconfSessionStart> captor = ArgumentCaptor.forClass(NetconfSessionStart.class);
52         verify(registration).onSessionStarted(captor.capture());
53         final NetconfSessionStart value = captor.getValue();
54         Assert.assertEquals(session.getSessionId(), value.getSessionId().getValue());
55         Assert.assertEquals(session.getSourceHost().getIpAddress(), value.getSourceHost());
56         Assert.assertEquals(session.getUsername(), value.getUsername());
57     }
58
59     @Test
60     public void testOnDataChangedSessionDeleted() throws Exception {
61         final Session session = createSession(1);
62         final DataTreeModification<Session> data = getTreeModification(session, DataObjectModification.ModificationType.DELETE);
63         publisher.onDataTreeChanged(Collections.singleton(data));
64         ArgumentCaptor<NetconfSessionEnd> captor = ArgumentCaptor.forClass(NetconfSessionEnd.class);
65         verify(registration).onSessionEnded(captor.capture());
66         final NetconfSessionEnd value = captor.getValue();
67         Assert.assertEquals(session.getSessionId(), value.getSessionId().getValue());
68         Assert.assertEquals(session.getSourceHost().getIpAddress(), value.getSourceHost());
69         Assert.assertEquals(session.getUsername(), value.getUsername());
70     }
71
72     private Session createSession(long id) {
73         return new SessionBuilder()
74                 .setSessionId(id)
75                 .setSourceHost(new Host("0.0.0.0".toCharArray()))
76                 .setUsername("user")
77                 .build();
78     }
79
80     @SuppressWarnings("unchecked")
81     private DataTreeModification<Session> getTreeModification(Session session, DataObjectModification.ModificationType type) {
82         final DataTreeModification<Session> treeChange = mock(DataTreeModification.class);
83         final DataObjectModification<Session> changeObject = mock(DataObjectModification.class);
84         switch (type) {
85             case WRITE:
86                 doReturn(session).when(changeObject).getDataAfter();
87                 break;
88             case DELETE:
89                 doReturn(session).when(changeObject).getDataBefore();
90                 break;
91         }
92         doReturn(type).when(changeObject).getModificationType();
93         doReturn(changeObject).when(treeChange).getRootNode();
94         return treeChange;
95     }
96
97 }