Modernize sal-rest-docgen tests a bit 78/100678/1
authorRobert Varga <robert.varga@pantheon.tech>
Wed, 20 Apr 2022 18:04:07 +0000 (20:04 +0200)
committerRobert Varga <robert.varga@pantheon.tech>
Wed, 20 Apr 2022 18:04:07 +0000 (20:04 +0200)
Add an abstract base class to reuse EffectiveModelContext and schema
service. Also use static imports and simplify assertions.

Change-Id: Ib1558ca32efbf5fe9862ff41c5214d090eeedd6c
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
restconf/sal-rest-docgen/src/test/java/org/opendaylight/controller/sal/rest/doc/impl/AbstractApiDocTest.java [new file with mode: 0644]
restconf/sal-rest-docgen/src/test/java/org/opendaylight/controller/sal/rest/doc/impl/ApiDocGeneratorDraftO2Test.java
restconf/sal-rest-docgen/src/test/java/org/opendaylight/controller/sal/rest/doc/impl/ApiDocGeneratorRFC8040Test.java
restconf/sal-rest-docgen/src/test/java/org/opendaylight/controller/sal/rest/doc/impl/ApiDocServiceImplTest.java
restconf/sal-rest-docgen/src/test/java/org/opendaylight/controller/sal/rest/doc/impl/DocGenTestHelper.java
restconf/sal-rest-docgen/src/test/java/org/opendaylight/controller/sal/rest/doc/impl/MountPointSwaggerTest.java
restconf/sal-rest-docgen/src/test/java/org/opendaylight/controller/sal/rest/doc/impl/SwaggerObjectTest.java

diff --git a/restconf/sal-rest-docgen/src/test/java/org/opendaylight/controller/sal/rest/doc/impl/AbstractApiDocTest.java b/restconf/sal-rest-docgen/src/test/java/org/opendaylight/controller/sal/rest/doc/impl/AbstractApiDocTest.java
new file mode 100644 (file)
index 0000000..a5aa433
--- /dev/null
@@ -0,0 +1,28 @@
+/*
+ * Copyright (c) 2022 PANTHEON.tech, s.r.o. and others.  All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+package org.opendaylight.controller.sal.rest.doc.impl;
+
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+import org.junit.BeforeClass;
+import org.opendaylight.mdsal.dom.api.DOMSchemaService;
+import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext;
+import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils;
+
+public abstract class AbstractApiDocTest {
+    static EffectiveModelContext CONTEXT;
+    static DOMSchemaService SCHEMA_SERVICE;
+
+    @BeforeClass
+    public static void beforeClass() {
+        CONTEXT = YangParserTestUtils.parseYangResourceDirectory("/yang");
+        SCHEMA_SERVICE = mock(DOMSchemaService.class);
+        when(SCHEMA_SERVICE.getGlobalContext()).thenReturn(CONTEXT);
+    }
+}
index 75f2ad92e4247fbdec38535e422ee5bb7ff99216..77a3583d3fd95728466612eb8d3edc2156f5b03e 100644 (file)
@@ -14,70 +14,53 @@ import static org.junit.Assert.assertTrue;
 
 import com.fasterxml.jackson.databind.JsonNode;
 import com.fasterxml.jackson.databind.node.ObjectNode;
-import java.util.ArrayList;
-import java.util.Arrays;
+import com.google.common.collect.ImmutableList;
 import java.util.List;
-import java.util.Optional;
-import org.junit.Before;
 import org.junit.Test;
 import org.opendaylight.netconf.sal.rest.doc.impl.ApiDocGeneratorDraftO2;
 import org.opendaylight.netconf.sal.rest.doc.impl.ApiDocServiceImpl;
 import org.opendaylight.netconf.sal.rest.doc.impl.ApiDocServiceImpl.URIType;
 import org.opendaylight.netconf.sal.rest.doc.swagger.SwaggerObject;
 import org.opendaylight.yangtools.yang.common.Revision;
-import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext;
-import org.opendaylight.yangtools.yang.model.api.Module;
-import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils;
 
-public final class ApiDocGeneratorDraftO2Test {
+public final class ApiDocGeneratorDraftO2Test extends AbstractApiDocTest {
     private static final String NAME = "toaster2";
     private static final String REVISION_DATE = "2009-11-20";
     private static final String NAME_2 = "toaster";
     private static final String REVISION_DATE_2 = "2009-11-20";
 
-    private EffectiveModelContext context;
-    private ApiDocGeneratorDraftO2 generator;
-
-    @Before
-    public void setUp() {
-        context = YangParserTestUtils.parseYangResourceDirectory("/yang");
-        generator = new ApiDocGeneratorDraftO2(DocGenTestHelper.createMockSchemaService(context));
-    }
+    private final ApiDocGeneratorDraftO2 generator = new ApiDocGeneratorDraftO2(SCHEMA_SERVICE);
 
     /**
      * Test that paths are generated according to the model.
      */
     @Test
     public void testPaths() {
-        final List<String> expectedPaths = Arrays.asList("/restconf/config",
-                "/restconf/config/toaster2:toaster",
-                "/restconf/config/toaster2:toaster/toasterSlot/{slotId}",
-                "/restconf/config/toaster2:toaster/toasterSlot/{slotId}/toaster-augmented:slotInfo",
-                "/restconf/operational/toaster2:toaster",
-                "/restconf/operational/toaster2:toaster/toasterSlot/{slotId}",
-                "/restconf/operational/toaster2:toaster/toasterSlot/{slotId}/toaster-augmented:slotInfo",
-                "/restconf/config/toaster2:lst",
-                "/restconf/config/toaster2:lst/cont1",
-                "/restconf/config/toaster2:lst/cont1/cont11",
-                "/restconf/config/toaster2:lst/cont1/lst11",
-                "/restconf/config/toaster2:lst/lst1/{key1}/{key2}",
-                "/restconf/operational/toaster2:lst",
-                "/restconf/operational/toaster2:lst/cont1",
-                "/restconf/operational/toaster2:lst/cont1/cont11",
-                "/restconf/operational/toaster2:lst/cont1/lst11",
-                "/restconf/operational/toaster2:lst/lst1/{key1}/{key2}",
-                "/restconf/operations/toaster2:make-toast",
-                "/restconf/operations/toaster2:cancel-toast",
-                "/restconf/operations/toaster2:restock-toaster");
-
-        final Optional<? extends Module> module = context.findModule(NAME, Revision.of(REVISION_DATE));
-        assertTrue("Desired module not found", module.isPresent());
-        final SwaggerObject doc = generator.getSwaggerDocSpec(module.get(), "http","localhost:8181",
-                "/", "", context, URIType.DRAFT02, ApiDocServiceImpl.OAversion.V2_0);
-        final List<String> actualPaths = new ArrayList<>();
-        doc.getPaths().fieldNames().forEachRemaining(actualPaths::add);
-
-        assertEquals(expectedPaths, actualPaths);
+        final var module = CONTEXT.findModule(NAME, Revision.of(REVISION_DATE)).orElseThrow();
+        final var doc = generator.getSwaggerDocSpec(module, "http", "localhost:8181", "/", "", CONTEXT, URIType.DRAFT02,
+            ApiDocServiceImpl.OAversion.V2_0);
+
+        assertEquals(List.of("/restconf/config",
+            "/restconf/config/toaster2:toaster",
+            "/restconf/config/toaster2:toaster/toasterSlot/{slotId}",
+            "/restconf/config/toaster2:toaster/toasterSlot/{slotId}/toaster-augmented:slotInfo",
+            "/restconf/operational/toaster2:toaster",
+            "/restconf/operational/toaster2:toaster/toasterSlot/{slotId}",
+            "/restconf/operational/toaster2:toaster/toasterSlot/{slotId}/toaster-augmented:slotInfo",
+            "/restconf/config/toaster2:lst",
+            "/restconf/config/toaster2:lst/cont1",
+            "/restconf/config/toaster2:lst/cont1/cont11",
+            "/restconf/config/toaster2:lst/cont1/lst11",
+            "/restconf/config/toaster2:lst/lst1/{key1}/{key2}",
+            "/restconf/operational/toaster2:lst",
+            "/restconf/operational/toaster2:lst/cont1",
+            "/restconf/operational/toaster2:lst/cont1/cont11",
+            "/restconf/operational/toaster2:lst/cont1/lst11",
+            "/restconf/operational/toaster2:lst/lst1/{key1}/{key2}",
+            "/restconf/operations/toaster2:make-toast",
+            "/restconf/operations/toaster2:cancel-toast",
+            "/restconf/operations/toaster2:restock-toaster"),
+            ImmutableList.copyOf(doc.getPaths().fieldNames()));
     }
 
     /**
@@ -85,16 +68,15 @@ public final class ApiDocGeneratorDraftO2Test {
      */
     @Test
     public void testConfigPaths() {
-        final List<String> configPaths = Arrays.asList("/restconf/config/toaster2:lst",
-                "/restconf/config/toaster2:lst/cont1",
-                "/restconf/config/toaster2:lst/cont1/cont11",
-                "/restconf/config/toaster2:lst/cont1/lst11",
-                "/restconf/config/toaster2:lst/lst1/{key1}/{key2}");
+        final List<String> configPaths = List.of("/restconf/config/toaster2:lst",
+            "/restconf/config/toaster2:lst/cont1",
+            "/restconf/config/toaster2:lst/cont1/cont11",
+            "/restconf/config/toaster2:lst/cont1/lst11",
+            "/restconf/config/toaster2:lst/lst1/{key1}/{key2}");
 
-        final Optional<? extends Module> module = context.findModule(NAME, Revision.of(REVISION_DATE));
-        assertTrue("Desired module not found", module.isPresent());
-        final SwaggerObject doc = generator.getSwaggerDocSpec(module.get(), "http","localhost:8181",
-                "/", "", context, URIType.DRAFT02, ApiDocServiceImpl.OAversion.V2_0);
+        final var module = CONTEXT.findModule(NAME, Revision.of(REVISION_DATE)).orElseThrow();
+        final SwaggerObject doc = generator.getSwaggerDocSpec(module, "http", "localhost:8181", "/", "", CONTEXT,
+            URIType.DRAFT02, ApiDocServiceImpl.OAversion.V2_0);
 
         for (final String path : configPaths) {
             final JsonNode node = doc.getPaths().get(path);
@@ -110,59 +92,49 @@ public final class ApiDocGeneratorDraftO2Test {
      */
     @Test
     public void testDefinitions() {
-        final Optional<? extends Module> module = context.findModule(NAME, Revision.of(REVISION_DATE));
-        assertTrue("Desired module not found", module.isPresent());
-        final SwaggerObject doc = generator.getSwaggerDocSpec(module.get(), "http","localhost:8181",
-                "/", "", context, URIType.DRAFT02, ApiDocServiceImpl.OAversion.V2_0);
+        final var module = CONTEXT.findModule(NAME, Revision.of(REVISION_DATE)).orElseThrow();
+        final SwaggerObject doc = generator.getSwaggerDocSpec(module, "http", "localhost:8181", "/", "", CONTEXT,
+            URIType.DRAFT02, ApiDocServiceImpl.OAversion.V2_0);
 
         final ObjectNode definitions = doc.getDefinitions();
         assertNotNull(definitions);
 
         final JsonNode configLstTop = definitions.get("toaster2_config_lst_TOP");
         assertNotNull(configLstTop);
-        DocGenTestHelper.containsReferences(configLstTop,
-                "lst", "#/definitions/toaster2_config_lst");
+        DocGenTestHelper.containsReferences(configLstTop, "lst", "#/definitions/toaster2_config_lst");
 
         final JsonNode configLst = definitions.get("toaster2_config_lst");
         assertNotNull(configLst);
-        DocGenTestHelper.containsReferences(configLst,
-                "lst1", "#/definitions/toaster2_lst_config_lst1");
-        DocGenTestHelper.containsReferences(configLst,
-                "cont1", "#/definitions/toaster2_lst_config_cont1");
+        DocGenTestHelper.containsReferences(configLst, "lst1", "#/definitions/toaster2_lst_config_lst1");
+        DocGenTestHelper.containsReferences(configLst, "cont1", "#/definitions/toaster2_lst_config_cont1");
 
         final JsonNode configLst1Top = definitions.get("toaster2_lst_config_lst1_TOP");
         assertNotNull(configLst1Top);
-        DocGenTestHelper.containsReferences(configLst1Top,
-                "lst1", "#/definitions/toaster2_lst_config_lst1");
+        DocGenTestHelper.containsReferences(configLst1Top, "lst1", "#/definitions/toaster2_lst_config_lst1");
 
         final JsonNode configLst1 = definitions.get("toaster2_lst_config_lst1");
         assertNotNull(configLst1);
 
         final JsonNode configCont1Top = definitions.get("toaster2_lst_config_cont1_TOP");
         assertNotNull(configCont1Top);
-        DocGenTestHelper.containsReferences(configCont1Top,
-                "cont1", "#/definitions/toaster2_lst_config_cont1");
+        DocGenTestHelper.containsReferences(configCont1Top, "cont1", "#/definitions/toaster2_lst_config_cont1");
 
         final JsonNode configCont1 = definitions.get("toaster2_lst_config_cont1");
         assertNotNull(configCont1);
-        DocGenTestHelper.containsReferences(configCont1,
-                "cont11", "#/definitions/toaster2_lst_cont1_config_cont11");
-        DocGenTestHelper.containsReferences(configCont1,
-
-                "lst11", "#/definitions/toaster2_lst_cont1_config_lst11");
+        DocGenTestHelper.containsReferences(configCont1, "cont11", "#/definitions/toaster2_lst_cont1_config_cont11");
+        DocGenTestHelper.containsReferences(configCont1, "lst11", "#/definitions/toaster2_lst_cont1_config_lst11");
 
         final JsonNode configCont11Top = definitions.get("toaster2_lst_cont1_config_cont11_TOP");
         assertNotNull(configCont11Top);
         DocGenTestHelper.containsReferences(configCont11Top,
-                "cont11", "#/definitions/toaster2_lst_cont1_config_cont11");
+            "cont11", "#/definitions/toaster2_lst_cont1_config_cont11");
 
         final JsonNode configCont11 = definitions.get("toaster2_lst_cont1_config_cont11");
         assertNotNull(configCont11);
 
         final JsonNode configLst11Top = definitions.get("toaster2_lst_cont1_config_lst11_TOP");
         assertNotNull(configLst11Top);
-        DocGenTestHelper.containsReferences(configLst11Top,
-                "lst11", "#/definitions/toaster2_lst_cont1_config_lst11");
+        DocGenTestHelper.containsReferences(configLst11Top, "lst11", "#/definitions/toaster2_lst_cont1_config_lst11");
 
         final JsonNode configLst11 = definitions.get("toaster2_lst_cont1_config_lst11");
         assertNotNull(configLst11);
@@ -173,10 +145,9 @@ public final class ApiDocGeneratorDraftO2Test {
      */
     @Test
     public void testRPC() {
-        final Optional<? extends Module> module = context.findModule(NAME_2, Revision.of(REVISION_DATE_2));
-        assertTrue("Desired module not found", module.isPresent());
-        final SwaggerObject doc = generator.getSwaggerDocSpec(module.get(), "http","localhost:8181",
-                "/", "", context, URIType.DRAFT02, ApiDocServiceImpl.OAversion.V2_0);
+        final var module = CONTEXT.findModule(NAME_2, Revision.of(REVISION_DATE_2)).orElseThrow();
+        final SwaggerObject doc = generator.getSwaggerDocSpec(module, "http", "localhost:8181", "/", "", CONTEXT,
+            URIType.DRAFT02, ApiDocServiceImpl.OAversion.V2_0);
         assertNotNull(doc);
 
         final ObjectNode definitions = doc.getDefinitions();
index 822ed3f9bfdbd33682b3ce88fdb5a121eaffe53e..ff56d801a051bee5cc778fa87b25fb77feb300ee 100644 (file)
@@ -14,62 +14,45 @@ import static org.junit.Assert.assertTrue;
 
 import com.fasterxml.jackson.databind.JsonNode;
 import com.fasterxml.jackson.databind.node.ObjectNode;
-import java.util.ArrayList;
-import java.util.Arrays;
+import com.google.common.collect.ImmutableList;
 import java.util.List;
-import java.util.Optional;
-import org.junit.Before;
 import org.junit.Test;
 import org.opendaylight.netconf.sal.rest.doc.impl.ApiDocGeneratorRFC8040;
 import org.opendaylight.netconf.sal.rest.doc.impl.ApiDocServiceImpl;
 import org.opendaylight.netconf.sal.rest.doc.impl.ApiDocServiceImpl.URIType;
 import org.opendaylight.netconf.sal.rest.doc.swagger.SwaggerObject;
 import org.opendaylight.yangtools.yang.common.Revision;
-import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext;
-import org.opendaylight.yangtools.yang.model.api.Module;
-import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils;
 
-public final class ApiDocGeneratorRFC8040Test {
+public final class ApiDocGeneratorRFC8040Test extends AbstractApiDocTest {
     private static final String NAME = "toaster2";
     private static final String REVISION_DATE = "2009-11-20";
     private static final String NAME_2 = "toaster";
     private static final String REVISION_DATE_2 = "2009-11-20";
 
-    private EffectiveModelContext context;
-    private ApiDocGeneratorRFC8040 generator;
-
-    @Before
-    public void setUp() {
-        context = YangParserTestUtils.parseYangResourceDirectory("/yang");
-        generator = new ApiDocGeneratorRFC8040(DocGenTestHelper.createMockSchemaService(context));
-    }
+    private final ApiDocGeneratorRFC8040 generator = new ApiDocGeneratorRFC8040(SCHEMA_SERVICE);
 
     /**
      * Test that paths are generated according to the model.
      */
     @Test
     public void testPaths() {
-        final List<String> expectedPaths = Arrays.asList("/rests/data",
-                "/rests/data/toaster2:toaster",
-                "/rests/data/toaster2:toaster/toasterSlot={slotId}",
-                "/rests/data/toaster2:toaster/toasterSlot={slotId}/toaster-augmented:slotInfo",
-                "/rests/data/toaster2:lst",
-                "/rests/data/toaster2:lst/cont1",
-                "/rests/data/toaster2:lst/cont1/cont11",
-                "/rests/data/toaster2:lst/cont1/lst11",
-                "/rests/data/toaster2:lst/lst1={key1},{key2}",
-                "/rests/operations/toaster2:make-toast",
-                "/rests/operations/toaster2:cancel-toast",
-                "/rests/operations/toaster2:restock-toaster");
-
-        final Optional<? extends Module> module = context.findModule(NAME, Revision.of(REVISION_DATE));
-        assertTrue("Desired module not found", module.isPresent());
-        final SwaggerObject doc = generator.getSwaggerDocSpec(module.get(), "http","localhost:8181",
-                "/", "", context, URIType.RFC8040, ApiDocServiceImpl.OAversion.V2_0);
-        final List<String> actualPaths = new ArrayList<>();
-        doc.getPaths().fieldNames().forEachRemaining(actualPaths::add);
-
-        assertEquals(expectedPaths, actualPaths);
+        final var module = CONTEXT.findModule(NAME, Revision.of(REVISION_DATE)).orElseThrow();
+        final SwaggerObject doc = generator.getSwaggerDocSpec(module, "http", "localhost:8181", "/", "", CONTEXT,
+            URIType.RFC8040, ApiDocServiceImpl.OAversion.V2_0);
+
+        assertEquals(List.of("/rests/data",
+            "/rests/data/toaster2:toaster",
+            "/rests/data/toaster2:toaster/toasterSlot={slotId}",
+            "/rests/data/toaster2:toaster/toasterSlot={slotId}/toaster-augmented:slotInfo",
+            "/rests/data/toaster2:lst",
+            "/rests/data/toaster2:lst/cont1",
+            "/rests/data/toaster2:lst/cont1/cont11",
+            "/rests/data/toaster2:lst/cont1/lst11",
+            "/rests/data/toaster2:lst/lst1={key1},{key2}",
+            "/rests/operations/toaster2:make-toast",
+            "/rests/operations/toaster2:cancel-toast",
+            "/rests/operations/toaster2:restock-toaster"),
+            ImmutableList.copyOf(doc.getPaths().fieldNames()));
     }
 
     /**
@@ -77,16 +60,15 @@ public final class ApiDocGeneratorRFC8040Test {
      */
     @Test
     public void testConfigPaths() {
-        final List<String> configPaths = Arrays.asList("/rests/data/toaster2:lst",
+        final List<String> configPaths = List.of("/rests/data/toaster2:lst",
                 "/rests/data/toaster2:lst/cont1",
                 "/rests/data/toaster2:lst/cont1/cont11",
                 "/rests/data/toaster2:lst/cont1/lst11",
                 "/rests/data/toaster2:lst/lst1={key1},{key2}");
 
-        final Optional<? extends Module> module = context.findModule(NAME, Revision.of(REVISION_DATE));
-        assertTrue("Desired module not found", module.isPresent());
-        final SwaggerObject doc = generator.getSwaggerDocSpec(module.get(), "http","localhost:8181",
-                "/", "", context, URIType.RFC8040, ApiDocServiceImpl.OAversion.V2_0);
+        final var module = CONTEXT.findModule(NAME, Revision.of(REVISION_DATE)).orElseThrow();
+        final SwaggerObject doc = generator.getSwaggerDocSpec(module, "http", "localhost:8181", "/", "", CONTEXT,
+            URIType.RFC8040, ApiDocServiceImpl.OAversion.V2_0);
 
         for (final String path : configPaths) {
             final JsonNode node = doc.getPaths().get(path);
@@ -102,58 +84,49 @@ public final class ApiDocGeneratorRFC8040Test {
      */
     @Test
     public void testDefinitions() {
-        final Optional<? extends Module> module = context.findModule(NAME, Revision.of(REVISION_DATE));
-        assertTrue("Desired module not found", module.isPresent());
-        final SwaggerObject doc = generator.getSwaggerDocSpec(module.get(), "http","localhost:8181",
-                "/", "", context, URIType.RFC8040, ApiDocServiceImpl.OAversion.V2_0);
+        final var module = CONTEXT.findModule(NAME, Revision.of(REVISION_DATE)).orElseThrow();
+        final SwaggerObject doc = generator.getSwaggerDocSpec(module, "http", "localhost:8181", "/", "", CONTEXT,
+            URIType.RFC8040, ApiDocServiceImpl.OAversion.V2_0);
 
         final ObjectNode definitions = doc.getDefinitions();
         assertNotNull(definitions);
 
         final JsonNode configLstTop = definitions.get("toaster2_config_lst_TOP");
         assertNotNull(configLstTop);
-        DocGenTestHelper.containsReferences(configLstTop, "lst",
-                "#/definitions/toaster2_config_lst");
+        DocGenTestHelper.containsReferences(configLstTop, "lst", "#/definitions/toaster2_config_lst");
 
         final JsonNode configLst = definitions.get("toaster2_config_lst");
         assertNotNull(configLst);
-        DocGenTestHelper.containsReferences(configLst,
-                "lst1", "#/definitions/toaster2_lst_config_lst1");
-        DocGenTestHelper.containsReferences(configLst,
-                "cont1", "#/definitions/toaster2_lst_config_cont1");
+        DocGenTestHelper.containsReferences(configLst, "lst1", "#/definitions/toaster2_lst_config_lst1");
+        DocGenTestHelper.containsReferences(configLst, "cont1", "#/definitions/toaster2_lst_config_cont1");
 
         final JsonNode configLst1Top = definitions.get("toaster2_lst_config_lst1_TOP");
         assertNotNull(configLst1Top);
-        DocGenTestHelper.containsReferences(configLst1Top,
-                "lst1", "#/definitions/toaster2_lst_config_lst1");
+        DocGenTestHelper.containsReferences(configLst1Top, "lst1", "#/definitions/toaster2_lst_config_lst1");
 
         final JsonNode configLst1 = definitions.get("toaster2_lst_config_lst1");
         assertNotNull(configLst1);
 
         final JsonNode configCont1Top = definitions.get("toaster2_lst_config_cont1_TOP");
         assertNotNull(configCont1Top);
-        DocGenTestHelper.containsReferences(configCont1Top,
-                "cont1", "#/definitions/toaster2_lst_config_cont1");
+        DocGenTestHelper.containsReferences(configCont1Top, "cont1", "#/definitions/toaster2_lst_config_cont1");
 
         final JsonNode configCont1 = definitions.get("toaster2_lst_config_cont1");
         assertNotNull(configCont1);
-        DocGenTestHelper.containsReferences(configCont1,
-                "cont11", "#/definitions/toaster2_lst_cont1_config_cont11");
-        DocGenTestHelper.containsReferences(configCont1,
-                "lst11", "#/definitions/toaster2_lst_cont1_config_lst11");
+        DocGenTestHelper.containsReferences(configCont1, "cont11", "#/definitions/toaster2_lst_cont1_config_cont11");
+        DocGenTestHelper.containsReferences(configCont1, "lst11", "#/definitions/toaster2_lst_cont1_config_lst11");
 
         final JsonNode configCont11Top = definitions.get("toaster2_lst_cont1_config_cont11_TOP");
         assertNotNull(configCont11Top);
         DocGenTestHelper.containsReferences(configCont11Top,
-                "cont11", "#/definitions/toaster2_lst_cont1_config_cont11");
+            "cont11", "#/definitions/toaster2_lst_cont1_config_cont11");
 
         final JsonNode configCont11 = definitions.get("toaster2_lst_cont1_config_cont11");
         assertNotNull(configCont11);
 
         final JsonNode configLst11Top = definitions.get("toaster2_lst_cont1_config_lst11_TOP");
         assertNotNull(configLst11Top);
-        DocGenTestHelper.containsReferences(configLst11Top,
-                "lst11", "#/definitions/toaster2_lst_cont1_config_lst11");
+        DocGenTestHelper.containsReferences(configLst11Top, "lst11", "#/definitions/toaster2_lst_cont1_config_lst11");
 
         final JsonNode configLst11 = definitions.get("toaster2_lst_cont1_config_lst11");
         assertNotNull(configLst11);
@@ -164,10 +137,9 @@ public final class ApiDocGeneratorRFC8040Test {
      */
     @Test
     public void testRPC() {
-        final Optional<? extends Module> module = context.findModule(NAME_2, Revision.of(REVISION_DATE_2));
-        assertTrue("Desired module not found", module.isPresent());
-        final SwaggerObject doc = generator.getSwaggerDocSpec(module.get(), "http","localhost:8181",
-                "/", "", context, URIType.RFC8040, ApiDocServiceImpl.OAversion.V2_0);
+        final var module = CONTEXT.findModule(NAME_2, Revision.of(REVISION_DATE_2)).orElseThrow();
+        final SwaggerObject doc = generator.getSwaggerDocSpec(module, "http", "localhost:8181", "/", "", CONTEXT,
+            URIType.RFC8040, ApiDocServiceImpl.OAversion.V2_0);
         assertNotNull(doc);
 
         final ObjectNode definitions = doc.getDefinitions();
index 894ed99cabe36b9d3a414d33a9c52c6a7b93e299..61ee1ed28e846691731839eb20e51db6e30593a1 100644 (file)
@@ -7,13 +7,13 @@
  */
 package org.opendaylight.controller.sal.rest.doc.impl;
 
+import static org.junit.Assert.assertEquals;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
 
 import com.fasterxml.jackson.databind.ObjectMapper;
 import java.util.Optional;
 import javax.ws.rs.core.UriInfo;
-import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Test;
 import org.opendaylight.mdsal.dom.api.DOMMountPoint;
@@ -28,10 +28,8 @@ import org.opendaylight.netconf.sal.rest.doc.impl.MountPointSwaggerGeneratorDraf
 import org.opendaylight.netconf.sal.rest.doc.impl.MountPointSwaggerGeneratorRFC8040;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
-import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext;
-import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils;
 
-public final class ApiDocServiceImplTest {
+public final class ApiDocServiceImplTest extends AbstractApiDocTest {
     private static final String HTTP_URL = "http://localhost/path";
     private static final YangInstanceIdentifier INSTANCE_ID = YangInstanceIdentifier.builder()
             .node(QName.create("", "nodes"))
@@ -41,21 +39,18 @@ public final class ApiDocServiceImplTest {
     private ApiDocService apiDocService;
 
     @Before
-    public void setUp() {
-        final EffectiveModelContext context = YangParserTestUtils.parseYangResourceDirectory("/yang");
-        final DOMSchemaService schemaService = DocGenTestHelper.createMockSchemaService(context);
-
+    public void before() {
         final DOMMountPoint mountPoint = mock(DOMMountPoint.class);
-        when(mountPoint.getService(DOMSchemaService.class)).thenReturn(Optional.of(schemaService));
+        when(mountPoint.getService(DOMSchemaService.class)).thenReturn(Optional.of(SCHEMA_SERVICE));
 
         final DOMMountPointService service = mock(DOMMountPointService.class);
         when(service.getMountPoint(INSTANCE_ID)).thenReturn(Optional.of(mountPoint));
         final MountPointSwaggerGeneratorDraft02 mountPointDraft02 =
-                new MountPointSwaggerGeneratorDraft02(schemaService, service);
+                new MountPointSwaggerGeneratorDraft02(SCHEMA_SERVICE, service);
         final MountPointSwaggerGeneratorRFC8040 mountPointRFC8040 =
-                new MountPointSwaggerGeneratorRFC8040(schemaService, service);
-        final ApiDocGeneratorDraftO2 apiDocGeneratorDraftO2 = new ApiDocGeneratorDraftO2(schemaService);
-        final ApiDocGeneratorRFC8040 apiDocGeneratorRFC8040 = new ApiDocGeneratorRFC8040(schemaService);
+                new MountPointSwaggerGeneratorRFC8040(SCHEMA_SERVICE, service);
+        final ApiDocGeneratorDraftO2 apiDocGeneratorDraftO2 = new ApiDocGeneratorDraftO2(SCHEMA_SERVICE);
+        final ApiDocGeneratorRFC8040 apiDocGeneratorRFC8040 = new ApiDocGeneratorRFC8040(SCHEMA_SERVICE);
         mountPointDraft02.getMountPointSwagger().onMountPointCreated(INSTANCE_ID);
         final AllModulesDocGenerator allModulesDocGenerator = new AllModulesDocGenerator(apiDocGeneratorDraftO2,
                 apiDocGeneratorRFC8040);
@@ -69,6 +64,6 @@ public final class ApiDocServiceImplTest {
         // simulate the behavior of JacksonJaxbJsonProvider
         final ObjectMapper mapper = new ObjectMapper();
         final String result = mapper.writer().writeValueAsString(apiDocService.getListOfMounts(mockInfo).getEntity());
-        Assert.assertEquals("[{\"instance\":\"/nodes/node/123/\",\"id\":1}]", result);
+        assertEquals("[{\"instance\":\"/nodes/node/123/\",\"id\":1}]", result);
     }
 }
index 9688f5118e4b615056ad657d205b5ba3eb7c448d..0a2e939bd3689a443d80a929c68c4e534951a5f0 100644 (file)
@@ -18,8 +18,6 @@ import java.net.URI;
 import javax.ws.rs.core.UriBuilder;
 import javax.ws.rs.core.UriInfo;
 import org.mockito.ArgumentCaptor;
-import org.opendaylight.mdsal.dom.api.DOMSchemaService;
-import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext;
 
 final class DocGenTestHelper {
 
@@ -27,12 +25,6 @@ final class DocGenTestHelper {
         // hidden on purpose
     }
 
-    static DOMSchemaService createMockSchemaService(final EffectiveModelContext mockContext) {
-        final DOMSchemaService mockSchemaService = mock(DOMSchemaService.class);
-        when(mockSchemaService.getGlobalContext()).thenReturn(mockContext);
-        return mockSchemaService;
-    }
-
     static UriInfo createMockUriInfo(final String urlPrefix) throws Exception {
         final URI uri = new URI(urlPrefix);
         final UriBuilder mockBuilder = mock(UriBuilder.class);
index 1ba7d03cb1783db6ed9f2937de49295e90590fc3..56d3e910dc4d05d8691c0e35efc120eaf39a295c 100644 (file)
@@ -14,8 +14,8 @@ import static org.mockito.Mockito.when;
 
 import com.fasterxml.jackson.databind.JsonNode;
 import com.fasterxml.jackson.databind.node.ObjectNode;
-import java.util.Arrays;
 import java.util.Iterator;
+import java.util.List;
 import java.util.Map;
 import java.util.Optional;
 import java.util.Set;
@@ -33,10 +33,8 @@ import org.opendaylight.netconf.sal.rest.doc.mountpoints.MountPointSwagger;
 import org.opendaylight.netconf.sal.rest.doc.swagger.SwaggerObject;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
-import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext;
-import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils;
 
-public final class MountPointSwaggerTest {
+public final class MountPointSwaggerTest extends AbstractApiDocTest {
     private static final String HTTP_URL = "http://localhost/path";
     private static final YangInstanceIdentifier INSTANCE_ID = YangInstanceIdentifier.builder()
             .node(QName.create("", "nodes"))
@@ -47,23 +45,17 @@ public final class MountPointSwaggerTest {
     private MountPointSwagger swagger;
 
     @Before
-    public void setUp() {
+    public void before() {
         // We are sharing the global schema service and the mount schema service
         // in our test.
         // OK for testing - real thing would have separate instances.
-        final EffectiveModelContext context = YangParserTestUtils.parseYangResourceDirectory("/yang");
-        final DOMSchemaService schemaService = DocGenTestHelper.createMockSchemaService(context);
-
         final DOMMountPoint mountPoint = mock(DOMMountPoint.class);
-        when(mountPoint.getService(DOMSchemaService.class)).thenReturn(Optional.of(schemaService));
+        when(mountPoint.getService(DOMSchemaService.class)).thenReturn(Optional.of(SCHEMA_SERVICE));
 
         final DOMMountPointService service = mock(DOMMountPointService.class);
         when(service.getMountPoint(INSTANCE_ID)).thenReturn(Optional.of(mountPoint));
 
-        final MountPointSwaggerGeneratorDraft02 generator =
-                new MountPointSwaggerGeneratorDraft02(schemaService, service);
-
-        swagger = generator.getMountPointSwagger();
+        swagger = new MountPointSwaggerGeneratorDraft02(SCHEMA_SERVICE, service).getMountPointSwagger();
     }
 
     @Test()
@@ -110,7 +102,7 @@ public final class MountPointSwaggerTest {
             assertNotNull("expected non-null desc on " + path, getOperation.get("description"));
         }
 
-        final Set<String> expectedUrls = new TreeSet<>(Arrays.asList(
+        final Set<String> expectedUrls = new TreeSet<>(List.of(
                 "/restconf/config" + INSTANCE_URL + "yang-ext:mount",
                 "/restconf/operational" + INSTANCE_URL + "yang-ext:mount",
                 "/restconf/operations" + INSTANCE_URL + "yang-ext:mount"));
index f37b8ee692698b7a5f694bca6be2ac3894216f2e..45287530e403dfd9196d21bb3391d6e50275978f 100644 (file)
@@ -7,57 +7,41 @@
  */
 package org.opendaylight.controller.sal.rest.doc.impl;
 
-import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.assertNotNull;
 
 import com.fasterxml.jackson.databind.node.ObjectNode;
-import java.util.Optional;
-import org.junit.Assert;
-import org.junit.Before;
+import java.io.IOException;
 import org.junit.Test;
 import org.opendaylight.netconf.sal.rest.doc.impl.ApiDocServiceImpl;
 import org.opendaylight.netconf.sal.rest.doc.impl.DefinitionGenerator;
 import org.opendaylight.netconf.sal.rest.doc.impl.DefinitionNames;
 import org.opendaylight.yangtools.yang.common.Revision;
-import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext;
-import org.opendaylight.yangtools.yang.model.api.Module;
-import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils;
-
-public final class SwaggerObjectTest {
-    private EffectiveModelContext context;
-
-    @Before
-    public void setUp() {
-        context = YangParserTestUtils.parseYangResourceDirectory("/yang");
-    }
 
+public final class SwaggerObjectTest extends AbstractApiDocTest {
     @Test
-    public void testConvertToJsonSchema() throws Exception {
-        final Optional<? extends Module> module = context.findModule("opflex", Revision.of("2014-05-28"));
-        assertTrue("Desired module not found", module.isPresent());
+    public void testConvertToJsonSchema() throws IOException {
+        final var module = CONTEXT.findModule("opflex", Revision.of("2014-05-28")).orElseThrow();
         final DefinitionGenerator generator = new DefinitionGenerator();
-        final ObjectNode jsonObject = generator.convertToJsonSchema(module.get(), context,
-                new DefinitionNames(), ApiDocServiceImpl.OAversion.V2_0, true);
-        Assert.assertNotNull(jsonObject);
+        final ObjectNode jsonObject = generator.convertToJsonSchema(module, CONTEXT, new DefinitionNames(),
+            ApiDocServiceImpl.OAversion.V2_0, true);
+        assertNotNull(jsonObject);
     }
 
     @Test
-    public void testActionTypes() throws Exception {
-        final Optional<? extends Module> module = context.findModule("action-types");
-        assertTrue("Desired module not found", module.isPresent());
+    public void testActionTypes() throws IOException {
+        final var module = CONTEXT.findModule("action-types").orElseThrow();
         final DefinitionGenerator generator = new DefinitionGenerator();
-        final ObjectNode jsonObject = generator.convertToJsonSchema(module.get(), context,
-                new DefinitionNames(), ApiDocServiceImpl.OAversion.V2_0, true);
-        Assert.assertNotNull(jsonObject);
+        final ObjectNode jsonObject = generator.convertToJsonSchema(module, CONTEXT, new DefinitionNames(),
+            ApiDocServiceImpl.OAversion.V2_0, true);
+        assertNotNull(jsonObject);
     }
 
     @Test
-    public void testStringTypes() throws Exception {
-        final Optional<? extends Module> module = context.findModule("string-types");
-        assertTrue("Desired module not found", module.isPresent());
+    public void testStringTypes() throws IOException {
+        final var module = CONTEXT.findModule("string-types").orElseThrow();
         final DefinitionGenerator generator = new DefinitionGenerator();
-        final ObjectNode jsonObject = generator.convertToJsonSchema(module.get(), context, new DefinitionNames(),
-                ApiDocServiceImpl.OAversion.V2_0, true);
-
-        Assert.assertNotNull(jsonObject);
+        final ObjectNode jsonObject = generator.convertToJsonSchema(module, CONTEXT, new DefinitionNames(),
+            ApiDocServiceImpl.OAversion.V2_0, true);
+        assertNotNull(jsonObject);
     }
 }