2 * Copyright (c) 2016 Cisco Systems, Inc. and others. All rights reserved.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
8 package org.opendaylight.restconf.nb.jaxrs;
10 import static org.junit.jupiter.api.Assertions.assertEquals;
11 import static org.mockito.ArgumentMatchers.any;
12 import static org.mockito.Mockito.doReturn;
13 import static org.mockito.Mockito.mock;
15 import java.util.Optional;
16 import org.junit.jupiter.api.Test;
17 import org.junit.jupiter.api.extension.ExtendWith;
18 import org.mockito.junit.jupiter.MockitoExtension;
19 import org.opendaylight.mdsal.binding.runtime.spi.BindingRuntimeHelpers;
20 import org.opendaylight.mdsal.dom.api.DOMSchemaService;
21 import org.opendaylight.yang.gen.v1.module._1.rev140101.Module1Data;
22 import org.opendaylight.yang.gen.v1.module._2.rev140102.Module2Data;
23 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NetworkTopology;
24 import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext;
26 @ExtendWith(MockitoExtension.class)
27 class RestconfOperationsGetTest extends AbstractRestconfTest {
28 private static final String DEVICE_ID = "network-topology:network-topology/topology=topology-netconf/"
29 + "node=device/yang-ext:mount";
30 private static final String DEVICE_RPC1_MODULE1_ID = DEVICE_ID + "module1:dummy-rpc1-module1";
31 private static final String EXPECTED_JSON = """
33 "ietf-restconf:operations" : {
34 "module1:dummy-rpc1-module1" : [null],
35 "module1:dummy-rpc2-module1" : [null],
36 "module2:dummy-rpc1-module2" : [null],
37 "module2:dummy-rpc2-module2" : [null]
40 private static final String EXPECTED_XML = """
41 <operations xmlns="urn:ietf:params:xml:ns:yang:ietf-restconf">
42 <dummy-rpc1-module1 xmlns="module:1"/>
43 <dummy-rpc2-module1 xmlns="module:1"/>
44 <dummy-rpc1-module2 xmlns="module:2"/>
45 <dummy-rpc2-module2 xmlns="module:2"/>
48 private static final EffectiveModelContext MODEL_CONTEXT = BindingRuntimeHelpers.createRuntimeContext(
49 Module1Data.class, Module2Data.class, NetworkTopology.class).getEffectiveModelContext();
52 EffectiveModelContext modelContext() {
57 void testOperationsJson() {
58 assertEquals(EXPECTED_JSON, assertEntity(200, ar -> restconf.operationsJsonGET(ar)));
62 void testOperationsXml() {
63 assertEquals(EXPECTED_XML, assertEntity(200, ar -> restconf.operationsXmlGET(ar)));
66 private void mockMountPoint() {
67 final var schemaService = mock(DOMSchemaService.class);
68 doReturn(MODEL_CONTEXT).when(schemaService).getGlobalContext();
69 doReturn(Optional.of(schemaService)).when(mountPoint).getService(DOMSchemaService.class);
70 doReturn(Optional.of(mountPoint)).when(mountPointService).getMountPoint(any());
74 void testMountPointOperationsJson() {
76 assertEquals(EXPECTED_JSON, assertEntity(200, ar -> restconf.operationsJsonGET(DEVICE_ID, ar)));
80 void testMountPointOperationsXml() {
82 assertEquals(EXPECTED_XML, assertEntity(200, ar -> restconf.operationsXmlGET(DEVICE_ID, ar)));
86 void testMountPointSpecificOperationsJson() {
89 { "module1:dummy-rpc1-module1" : [null] }""",
90 assertEntity(200, ar -> restconf.operationsJsonGET(DEVICE_RPC1_MODULE1_ID, ar)));
94 void testMountPointSpecificOperationsXml() {
97 <dummy-rpc1-module1 xmlns="module:1"/>""",
98 assertEntity(200, ar -> restconf.operationsXmlGET(DEVICE_RPC1_MODULE1_ID, ar)));