--- /dev/null
+/*
+ * 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);
+ }
+}
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()));
}
/**
*/
@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);
*/
@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);
*/
@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();
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()));
}
/**
*/
@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);
*/
@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);
*/
@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();
*/
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;
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"))
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);
// 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);
}
}
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 {
// 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);
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;
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"))
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()
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"));
*/
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);
}
}