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