From 4e117e0cce9f9ac1b53ace1d9659412dddc1afa2 Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Wed, 20 Apr 2022 20:04:07 +0200 Subject: [PATCH] Modernize sal-rest-docgen tests a bit 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 --- .../sal/rest/doc/impl/AbstractApiDocTest.java | 28 ++++ .../doc/impl/ApiDocGeneratorDraftO2Test.java | 131 +++++++----------- .../doc/impl/ApiDocGeneratorRFC8040Test.java | 106 ++++++-------- .../rest/doc/impl/ApiDocServiceImplTest.java | 23 ++- .../sal/rest/doc/impl/DocGenTestHelper.java | 8 -- .../rest/doc/impl/MountPointSwaggerTest.java | 20 +-- .../sal/rest/doc/impl/SwaggerObjectTest.java | 52 +++---- 7 files changed, 151 insertions(+), 217 deletions(-) create mode 100644 restconf/sal-rest-docgen/src/test/java/org/opendaylight/controller/sal/rest/doc/impl/AbstractApiDocTest.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 index 0000000000..a5aa433967 --- /dev/null +++ b/restconf/sal-rest-docgen/src/test/java/org/opendaylight/controller/sal/rest/doc/impl/AbstractApiDocTest.java @@ -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); + } +} diff --git a/restconf/sal-rest-docgen/src/test/java/org/opendaylight/controller/sal/rest/doc/impl/ApiDocGeneratorDraftO2Test.java b/restconf/sal-rest-docgen/src/test/java/org/opendaylight/controller/sal/rest/doc/impl/ApiDocGeneratorDraftO2Test.java index 75f2ad92e4..77a3583d3f 100644 --- a/restconf/sal-rest-docgen/src/test/java/org/opendaylight/controller/sal/rest/doc/impl/ApiDocGeneratorDraftO2Test.java +++ b/restconf/sal-rest-docgen/src/test/java/org/opendaylight/controller/sal/rest/doc/impl/ApiDocGeneratorDraftO2Test.java @@ -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 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 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 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 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 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 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 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 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(); diff --git a/restconf/sal-rest-docgen/src/test/java/org/opendaylight/controller/sal/rest/doc/impl/ApiDocGeneratorRFC8040Test.java b/restconf/sal-rest-docgen/src/test/java/org/opendaylight/controller/sal/rest/doc/impl/ApiDocGeneratorRFC8040Test.java index 822ed3f9bf..ff56d801a0 100644 --- a/restconf/sal-rest-docgen/src/test/java/org/opendaylight/controller/sal/rest/doc/impl/ApiDocGeneratorRFC8040Test.java +++ b/restconf/sal-rest-docgen/src/test/java/org/opendaylight/controller/sal/rest/doc/impl/ApiDocGeneratorRFC8040Test.java @@ -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 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 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 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 configPaths = Arrays.asList("/rests/data/toaster2:lst", + final List 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 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 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 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(); diff --git a/restconf/sal-rest-docgen/src/test/java/org/opendaylight/controller/sal/rest/doc/impl/ApiDocServiceImplTest.java b/restconf/sal-rest-docgen/src/test/java/org/opendaylight/controller/sal/rest/doc/impl/ApiDocServiceImplTest.java index 894ed99cab..61ee1ed28e 100644 --- a/restconf/sal-rest-docgen/src/test/java/org/opendaylight/controller/sal/rest/doc/impl/ApiDocServiceImplTest.java +++ b/restconf/sal-rest-docgen/src/test/java/org/opendaylight/controller/sal/rest/doc/impl/ApiDocServiceImplTest.java @@ -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); } } diff --git a/restconf/sal-rest-docgen/src/test/java/org/opendaylight/controller/sal/rest/doc/impl/DocGenTestHelper.java b/restconf/sal-rest-docgen/src/test/java/org/opendaylight/controller/sal/rest/doc/impl/DocGenTestHelper.java index 9688f5118e..0a2e939bd3 100644 --- a/restconf/sal-rest-docgen/src/test/java/org/opendaylight/controller/sal/rest/doc/impl/DocGenTestHelper.java +++ b/restconf/sal-rest-docgen/src/test/java/org/opendaylight/controller/sal/rest/doc/impl/DocGenTestHelper.java @@ -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); diff --git a/restconf/sal-rest-docgen/src/test/java/org/opendaylight/controller/sal/rest/doc/impl/MountPointSwaggerTest.java b/restconf/sal-rest-docgen/src/test/java/org/opendaylight/controller/sal/rest/doc/impl/MountPointSwaggerTest.java index 1ba7d03cb1..56d3e910dc 100644 --- a/restconf/sal-rest-docgen/src/test/java/org/opendaylight/controller/sal/rest/doc/impl/MountPointSwaggerTest.java +++ b/restconf/sal-rest-docgen/src/test/java/org/opendaylight/controller/sal/rest/doc/impl/MountPointSwaggerTest.java @@ -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 expectedUrls = new TreeSet<>(Arrays.asList( + final Set 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")); diff --git a/restconf/sal-rest-docgen/src/test/java/org/opendaylight/controller/sal/rest/doc/impl/SwaggerObjectTest.java b/restconf/sal-rest-docgen/src/test/java/org/opendaylight/controller/sal/rest/doc/impl/SwaggerObjectTest.java index f37b8ee692..45287530e4 100644 --- a/restconf/sal-rest-docgen/src/test/java/org/opendaylight/controller/sal/rest/doc/impl/SwaggerObjectTest.java +++ b/restconf/sal-rest-docgen/src/test/java/org/opendaylight/controller/sal/rest/doc/impl/SwaggerObjectTest.java @@ -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 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 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 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); } } -- 2.36.6