Merge "BUG-1422 Introduce Call-Home functionality for the NETCONF Topology."
[netconf.git] / netconf / callhome-provider / src / test / java / org / opendaylight / netconf / callhome / mount / CallHomeMountSessionContextTest.java
1 /*
2  * Copyright (c) 2016 Brocade Communication Systems 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.netconf.callhome.mount;
10
11 import static org.junit.Assert.assertNotNull;
12 import static org.mockito.Matchers.any;
13 import static org.mockito.Mockito.doReturn;
14 import static org.mockito.Mockito.mock;
15 import static org.mockito.Mockito.times;
16 import static org.mockito.Mockito.verify;
17 import static org.mockito.Mockito.when;
18
19 import io.netty.util.concurrent.Promise;
20 import java.net.Inet4Address;
21 import java.net.InetAddress;
22 import java.net.InetSocketAddress;
23 import java.net.UnknownHostException;
24 import org.junit.Before;
25 import org.junit.Test;
26 import org.mockito.invocation.InvocationOnMock;
27 import org.mockito.stubbing.Answer;
28 import org.opendaylight.netconf.api.NetconfMessage;
29 import org.opendaylight.netconf.api.NetconfTerminationReason;
30 import org.opendaylight.netconf.callhome.protocol.CallHomeChannelActivator;
31 import org.opendaylight.netconf.callhome.protocol.CallHomeProtocolSessionContext;
32 import org.opendaylight.netconf.client.NetconfClientSession;
33 import org.opendaylight.netconf.client.NetconfClientSessionListener;
34
35
36 public class CallHomeMountSessionContextTest {
37     private Inet4Address someAddressIpv4;
38     private InetSocketAddress someSocketAddress;
39     private CallHomeChannelActivator mockActivator;
40     private CallHomeMountSessionContext.CloseCallback mockCallback;
41     private CallHomeMountSessionContext instance;
42     private CallHomeProtocolSessionContext mockProtocol;
43
44     @Before
45     public void setup() throws UnknownHostException {
46         someAddressIpv4 = (Inet4Address) InetAddress.getByName("1.2.3.4");
47         someSocketAddress = new InetSocketAddress(someAddressIpv4, 123);
48
49         mockProtocol = mock(CallHomeProtocolSessionContext.class);
50         mockActivator = mock(CallHomeChannelActivator.class);
51         mockCallback = mock(CallHomeMountSessionContext.CloseCallback.class);
52         doReturn(someSocketAddress).when(mockProtocol).getRemoteAddress();
53
54         instance = new CallHomeMountSessionContext("test",mockProtocol, mockActivator, mockCallback);
55     }
56
57     @Test
58     public void configNodeCanBeCreated() {
59         assertNotNull(instance.getConfigNode());
60     }
61
62     @Test
63     public void activationOfListenerSupportsSessionUp() {
64         // given
65         when(mockActivator.activate(any(NetconfClientSessionListener.class)))
66                 .thenAnswer(invocationOnMock -> {
67                         NetconfClientSession mockSession = mock(NetconfClientSession.class);
68
69                         Object arg = invocationOnMock.getArguments()[0];
70                         ((NetconfClientSessionListener) arg).onSessionUp(mockSession);
71                         return null;
72                     });
73
74         NetconfClientSessionListener mockListener = mock(NetconfClientSessionListener.class);
75         // when
76         mockActivator.activate(mockListener);
77         // then
78         verify(mockListener, times(1)).onSessionUp(any(NetconfClientSession.class));
79     }
80
81     @Test
82     public void activationOfListenerSupportsSessionTermination() {
83         // given
84         when(mockActivator.activate(any(NetconfClientSessionListener.class)))
85                 .thenAnswer(invocationOnMock -> {
86                         NetconfClientSession mockSession = mock(NetconfClientSession.class);
87                         NetconfTerminationReason mockReason = mock(NetconfTerminationReason.class);
88
89                         Object arg = invocationOnMock.getArguments()[0];
90                         ((NetconfClientSessionListener) arg).onSessionTerminated(mockSession, mockReason);
91                         return null;
92                     });
93
94         NetconfClientSessionListener mockListener = mock(NetconfClientSessionListener.class);
95         // when
96         mockActivator.activate(mockListener);
97         // then
98         verify(mockListener, times(1)).onSessionTerminated(any(NetconfClientSession.class),
99                 any(NetconfTerminationReason.class));
100     }
101
102     @Test
103     public void activationOfListenerSupportsSessionDown() {
104         // given
105         when(mockActivator.activate(any(NetconfClientSessionListener.class)))
106                 .thenAnswer(invocationOnMock -> {
107                         NetconfClientSession mockSession = mock(NetconfClientSession.class);
108                         Exception mockException = mock(Exception.class);
109
110                         Object arg = invocationOnMock.getArguments()[0];
111                         ((NetconfClientSessionListener) arg).onSessionDown(mockSession, mockException);
112                         return null;
113                     });
114         // given
115         NetconfClientSessionListener mockListener = mock(NetconfClientSessionListener.class);
116         // when
117         mockActivator.activate(mockListener);
118         // then
119         verify(mockListener, times(1)).onSessionDown(any(NetconfClientSession.class), any(Exception.class));
120     }
121
122     @Test
123     public void activationOfListenerSupportsSessionMessages() {
124         // given
125         when(mockActivator.activate(any(NetconfClientSessionListener.class)))
126                 .thenAnswer(invocationOnMock -> {
127                         NetconfClientSession mockSession = mock(NetconfClientSession.class);
128                         NetconfMessage mockMsg = mock(NetconfMessage.class);
129
130                         Object arg = invocationOnMock.getArguments()[0];
131                         ((NetconfClientSessionListener) arg).onMessage(mockSession, mockMsg);
132                         return null;
133                     });
134         // given
135         NetconfClientSessionListener mockListener = mock(NetconfClientSessionListener.class);
136         // when
137         mockActivator.activate(mockListener);
138         // then
139         verify(mockListener, times(1)).onMessage(any(NetconfClientSession.class), any(NetconfMessage.class));
140     }
141 }