*/
package org.opendaylight.restconf.nb.rfc8040.streams;
-import static org.hamcrest.CoreMatchers.instanceOf;
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.junit.Assert.assertNull;
+import static org.junit.jupiter.api.Assertions.assertInstanceOf;
+import static org.junit.jupiter.api.Assertions.assertNull;
import static org.mockito.Mockito.doReturn;
-import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
import java.net.URI;
import java.util.concurrent.ScheduledExecutorService;
import org.eclipse.jetty.websocket.servlet.ServletUpgradeRequest;
import org.eclipse.jetty.websocket.servlet.ServletUpgradeResponse;
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.opendaylight.restconf.nb.rfc8040.streams.WebSocketInitializer.WebSocketFactory;
-import org.opendaylight.restconf.nb.rfc8040.streams.listeners.ListenersBroker;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+import org.mockito.Mock;
+import org.mockito.junit.jupiter.MockitoExtension;
+import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
+import org.opendaylight.yang.gen.v1.urn.sal.restconf.event.subscription.rev140708.CreateDataChangeEventSubscriptionInput1.Scope;
import org.opendaylight.yang.gen.v1.urn.sal.restconf.event.subscription.rev140708.NotificationOutputTypeGrouping;
import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
-public class WebSocketFactoryTest {
-
+@ExtendWith(MockitoExtension.class)
+class WebSocketFactoryTest extends AbstractNotificationListenerTest {
private static final String REGISTERED_STREAM_NAME = "data-change-event-subscription/"
- + "toaster:toaster/datastore=CONFIGURATION/scope=SUBTREE";
- private static final YangInstanceIdentifier TOASTER_YIID = YangInstanceIdentifier.builder()
- .node(QName.create("http://netconfcentral.org/ns/toaster", "2009-11-20", "toaster"))
- .build();
+ + "toaster:toaster/datastore=CONFIGURATION/scope=SUBTREE/JSON";
+
+ private final ListenersBroker listenersBroker = new ListenersBroker.ServerSentEvents();
+
+ @Mock
+ private ScheduledExecutorService execService;
+ @Mock
+ private ServletUpgradeRequest upgradeRequest;
+ @Mock
+ private ServletUpgradeResponse upgradeResponse;
- private final WebSocketFactory webSocketFactory = new WebSocketFactory(mock(ScheduledExecutorService.class),
- 5000, 2000);
+ private WebSocketFactory webSocketFactory;
- @BeforeClass
- public static void prepareListenersBroker() {
- ListenersBroker.getInstance().registerDataChangeListener(TOASTER_YIID, REGISTERED_STREAM_NAME,
- NotificationOutputTypeGrouping.NotificationOutputType.JSON);
+ @BeforeEach
+ void prepareListenersBroker() {
+ webSocketFactory = new WebSocketFactory(execService, listenersBroker, 5000, 2000);
+
+ listenersBroker.registerDataChangeListener(MODEL_CONTEXT, LogicalDatastoreType.CONFIGURATION,
+ YangInstanceIdentifier.of(QName.create("http://netconfcentral.org/ns/toaster", "2009-11-20", "toaster")),
+ Scope.SUBTREE, NotificationOutputTypeGrouping.NotificationOutputType.JSON);
}
@Test
- public void createWebSocketSuccessfully() {
- final ServletUpgradeRequest upgradeRequest = mock(ServletUpgradeRequest.class);
- final ServletUpgradeResponse upgradeResponse = mock(ServletUpgradeResponse.class);
- doReturn(URI.create('/' + REGISTERED_STREAM_NAME + '/')).when(upgradeRequest).getRequestURI();
+ void createWebSocketSuccessfully() {
+ doReturn(URI.create("https://localhost:8181/rests/streams/" + REGISTERED_STREAM_NAME))
+ .when(upgradeRequest).getRequestURI();
- final Object webSocket = webSocketFactory.createWebSocket(upgradeRequest, upgradeResponse);
- assertThat(webSocket, instanceOf(WebSocketSessionHandler.class));
+ assertInstanceOf(WebSocketSessionHandler.class,
+ webSocketFactory.createWebSocket(upgradeRequest, upgradeResponse));
verify(upgradeResponse).setSuccess(true);
verify(upgradeResponse).setStatusCode(101);
}
@Test
- public void createWebSocketUnsuccessfully() {
- final ServletUpgradeRequest upgradeRequest = mock(ServletUpgradeRequest.class);
- final ServletUpgradeResponse upgradeResponse = mock(ServletUpgradeResponse.class);
- doReturn(URI.create('/' + REGISTERED_STREAM_NAME + '/' + "toasterStatus"))
+ void createWebSocketUnsuccessfully() {
+ doReturn(URI.create("https://localhost:8181/rests/streams/" + REGISTERED_STREAM_NAME + "/toasterStatus"))
.when(upgradeRequest).getRequestURI();
- final Object webSocket = webSocketFactory.createWebSocket(upgradeRequest, upgradeResponse);
- assertNull(webSocket);
+ assertNull(webSocketFactory.createWebSocket(upgradeRequest, upgradeResponse));
verify(upgradeResponse).setSuccess(false);
verify(upgradeResponse).setStatusCode(404);
}