Update sal-remote-augment model to rev 2023-11-03
[netconf.git] / restconf / restconf-nb / src / test / java / org / opendaylight / restconf / nb / rfc8040 / streams / WebSocketFactoryTest.java
index 0dc747beb18ecc8a0ef199cc9841a8c6ef830ec0..c1658244a1d89a7261302c649bf71ab3e9440d0b 100644 (file)
@@ -7,64 +7,72 @@
  */
 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.Before;
-import org.junit.Test;
-import org.opendaylight.restconf.nb.rfc8040.streams.WebSocketInitializer.WebSocketFactory;
-import org.opendaylight.restconf.nb.rfc8040.streams.listeners.ListenersBroker;
-import org.opendaylight.yang.gen.v1.urn.sal.restconf.event.subscription.rev140708.NotificationOutputTypeGrouping;
+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.mdsal.dom.api.DOMDataBroker;
+import org.opendaylight.restconf.nb.rfc8040.databind.DatabindProvider;
+import org.opendaylight.yang.gen.v1.urn.sal.restconf.event.subscription.rev231103.NotificationOutputTypeGrouping.NotificationOutputType;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
 
-public class WebSocketFactoryTest {
-    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();
+@ExtendWith(MockitoExtension.class)
+class WebSocketFactoryTest extends AbstractNotificationListenerTest {
+    @Mock
+    private ScheduledExecutorService execService;
+    @Mock
+    private ServletUpgradeRequest upgradeRequest;
+    @Mock
+    private ServletUpgradeResponse upgradeResponse;
+    @Mock
+    private DOMDataBroker dataBroker;
+    @Mock
+    private DatabindProvider databindProvider;
 
-    private final ListenersBroker listenersBroker = new ListenersBroker();
+    private ListenersBroker listenersBroker;
+    private WebSocketFactory webSocketFactory;
+    private String streamName;
 
-    private final WebSocketFactory webSocketFactory = new WebSocketFactory(mock(ScheduledExecutorService.class),
-        listenersBroker, 5000, 2000);
+    @BeforeEach
+    void prepareListenersBroker() {
+        listenersBroker = new ListenersBroker.ServerSentEvents(dataBroker);
+        webSocketFactory = new WebSocketFactory(execService, listenersBroker, 5000, 2000);
 
-    @Before
-    public void prepareListenersBroker() {
-        listenersBroker.registerDataChangeListener(TOASTER_YIID, REGISTERED_STREAM_NAME,
-                NotificationOutputTypeGrouping.NotificationOutputType.JSON);
+        streamName = listenersBroker.createStream(name -> new DataTreeChangeStream(listenersBroker, name,
+            NotificationOutputType.JSON, databindProvider, LogicalDatastoreType.CONFIGURATION,
+            YangInstanceIdentifier.of(QName.create("http://netconfcentral.org/ns/toaster", "2009-11-20", "toaster"))))
+            .name();
     }
 
     @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/" + streamName))
+            .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/" + streamName + "/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);
     }