diff options
Diffstat (limited to 'cps-nf-proxy-rest')
13 files changed, 0 insertions, 870 deletions
diff --git a/cps-nf-proxy-rest/docs/openapi/components.yaml b/cps-nf-proxy-rest/docs/openapi/components.yaml deleted file mode 100644 index af95723cb..000000000 --- a/cps-nf-proxy-rest/docs/openapi/components.yaml +++ /dev/null @@ -1,107 +0,0 @@ -components: - schemas: - ErrorMessage: - type: object - title: Error - properties: - status: - type: string - message: - type: string - details: - type: string - MultipartFile: - required: - - file - properties: - multipartFile: - type: string - description: multipartFile - format: binary - - parameters: - cmHandleInPath: - name: cm-handle - in: path - description: The identifier for a network function, network element, subnetwork or any other cm object by managed NF-Proxy - required: true - schema: - type: string - xpathInQuery: - name: xpath - in: query - description: xpath - required: false - schema: - type: string - default: / - includeDescendantsOptionInQuery: - name: include-descendants - in: query - description: include-descendants - required: false - schema: - type: boolean - default: false - cpsPathInQuery: - name: cps-path - in: query - description: cps-path - required: false - schema: - type: string - default: / - - - responses: - NotFound: - description: The specified resource was not found - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorMessage' - Unauthorized: - description: Unauthorized - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorMessage' - Forbidden: - description: Forbidden - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorMessage' - BadRequest: - description: Bad Request - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorMessage' - Conflict: - description: Conflict - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorMessage' - NotImplemented: - description: The given path has not been implemented - content: - application/json: - schema: - $ref: '#/components/schemas/ErrorMessage' - Ok: - description: OK - content: - application/json: - schema: - type: object - Created: - description: Created - content: - text/plain: - schema: - type: string - NoContent: - description: No Content - content: {} diff --git a/cps-nf-proxy-rest/docs/openapi/openapi.yml b/cps-nf-proxy-rest/docs/openapi/openapi.yml deleted file mode 100755 index a6d0949f2..000000000 --- a/cps-nf-proxy-rest/docs/openapi/openapi.yml +++ /dev/null @@ -1,16 +0,0 @@ -openapi: 3.0.1 -info: - title: xNF to CPS Proxy API - description: xNF to CPS Proxy API - version: "1.0" -servers: - - url: //localhost:8088/ -paths: - /v1/cm-handles/{cm-handle}/node: - $ref: 'xnfProxy.yml#/nodeByCmHandleAndXpath' - - /v1/cm-handles/{cm-handle}/nodes/query: - $ref: 'xnfProxy.yml#/nodesByCmHandleAndCpsPath' - - /v1/cm-handles/{cm-handle}/nodes: - $ref: 'xnfProxy.yml#/nodesByCmHandleAndXpath'
\ No newline at end of file diff --git a/cps-nf-proxy-rest/docs/openapi/xnfProxy.yml b/cps-nf-proxy-rest/docs/openapi/xnfProxy.yml deleted file mode 100644 index 141e47258..000000000 --- a/cps-nf-proxy-rest/docs/openapi/xnfProxy.yml +++ /dev/null @@ -1,102 +0,0 @@ -nodeByCmHandleAndXpath: - get: - description: Get a node with an option to retrieve all the children for a given cm Handle - tags: - - nf-proxy - summary: Get a node given a cm Handle and xpath - operationId: getNodeByCmHandleAndXpath - parameters: - - $ref: 'components.yaml#/components/parameters/cmHandleInPath' - - $ref: 'components.yaml#/components/parameters/xpathInQuery' - - $ref: 'components.yaml#/components/parameters/includeDescendantsOptionInQuery' - responses: - 200: - $ref: 'components.yaml#/components/responses/Ok' - 400: - $ref: 'components.yaml#/components/responses/BadRequest' - 401: - $ref: 'components.yaml#/components/responses/Unauthorized' - 403: - $ref: 'components.yaml#/components/responses/Forbidden' - 404: - $ref: 'components.yaml#/components/responses/NotFound' - 501: - $ref: 'components.yaml#/components/responses/NotImplemented' - -nodesByCmHandleAndCpsPath: - get: - description: Query nodes for the given cps path and cm Handle - tags: - - nf-proxy - summary: Query data nodes - operationId: queryNodesByCmHandleAndCpsPath - parameters: - - $ref: 'components.yaml#/components/parameters/cmHandleInPath' - - $ref: 'components.yaml#/components/parameters/cpsPathInQuery' - - $ref: 'components.yaml#/components/parameters/includeDescendantsOptionInQuery' - responses: - 200: - $ref: 'components.yaml#/components/responses/Ok' - 400: - $ref: 'components.yaml#/components/responses/BadRequest' - 401: - $ref: 'components.yaml#/components/responses/Unauthorized' - 403: - $ref: 'components.yaml#/components/responses/Forbidden' - 404: - $ref: 'components.yaml#/components/responses/NotFound' - -nodesByCmHandleAndXpath: - patch: - description: Update node leaves for the given cps path and cm Handle - tags: - - nf-proxy - summary: Update node leaves - operationId: updateNodeLeaves - parameters: - - $ref: 'components.yaml#/components/parameters/cmHandleInPath' - - $ref: 'components.yaml#/components/parameters/xpathInQuery' - requestBody: - required: true - content: - application/json: - schema: - type: string - responses: - 200: - $ref: 'components.yaml#/components/responses/Ok' - 400: - $ref: 'components.yaml#/components/responses/BadRequest' - 401: - $ref: 'components.yaml#/components/responses/Unauthorized' - 403: - $ref: 'components.yaml#/components/responses/Forbidden' - 404: - $ref: 'components.yaml#/components/responses/NotFound' - - put: - description: Replace a node with descendants for the given cps path and cm Handle - tags: - - nf-proxy - summary: Replace a node with descendants - operationId: replaceNode - parameters: - - $ref: 'components.yaml#/components/parameters/cmHandleInPath' - - $ref: 'components.yaml#/components/parameters/xpathInQuery' - requestBody: - required: true - content: - application/json: - schema: - type: string - responses: - 200: - $ref: 'components.yaml#/components/responses/Ok' - 400: - $ref: 'components.yaml#/components/responses/BadRequest' - 401: - $ref: 'components.yaml#/components/responses/Unauthorized' - 403: - $ref: 'components.yaml#/components/responses/Forbidden' - 404: - $ref: 'components.yaml#/components/responses/NotFound'
\ No newline at end of file diff --git a/cps-nf-proxy-rest/pom.xml b/cps-nf-proxy-rest/pom.xml deleted file mode 100755 index 1add0a074..000000000 --- a/cps-nf-proxy-rest/pom.xml +++ /dev/null @@ -1,113 +0,0 @@ -<project xmlns="http://maven.apache.org/POM/4.0.0" - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> - <modelVersion>4.0.0</modelVersion> - <parent> - <groupId>org.onap.cps</groupId> - <artifactId>cps-parent</artifactId> - <version>1.1.0-SNAPSHOT</version> - <relativePath>../cps-parent/pom.xml</relativePath> - </parent> - - <artifactId>cps-nf-proxy-rest</artifactId> - - <properties> - <minimum-coverage>0.0</minimum-coverage> - </properties> - - <dependencies> - <dependency> - <groupId>${project.groupId}</groupId> - <artifactId>cps-nf-proxy-service</artifactId> - </dependency> - <dependency> - <groupId>org.springframework.boot</groupId> - <artifactId>spring-boot-starter-web</artifactId> - <exclusions> - <exclusion> - <groupId>org.springframework.boot</groupId> - <artifactId>spring-boot-starter-tomcat</artifactId> - </exclusion> - </exclusions> - </dependency> - <dependency> - <groupId>org.springframework.boot</groupId> - <artifactId>spring-boot-starter-jetty</artifactId> - </dependency> - <dependency> - <groupId>io.swagger.core.v3</groupId> - <artifactId>swagger-annotations</artifactId> - </dependency> - <dependency> - <groupId>io.springfox</groupId> - <artifactId>springfox-boot-starter</artifactId> - </dependency> - <dependency> - <groupId>io.swagger</groupId> - <artifactId>swagger-annotations</artifactId> - </dependency> - <!-- T E S T D E P E N D E N C I E S --> - <dependency> - <groupId>org.codehaus.groovy</groupId> - <artifactId>groovy</artifactId> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.spockframework</groupId> - <artifactId>spock-core</artifactId> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.spockframework</groupId> - <artifactId>spock-spring</artifactId> - <scope>test</scope> - </dependency> - <dependency> - <groupId>cglib</groupId> - <artifactId>cglib-nodep</artifactId> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.springframework.boot</groupId> - <artifactId>spring-boot-starter-test</artifactId> - <scope>test</scope> - <exclusions> - <exclusion> - <groupId>org.junit.vintage</groupId> - <artifactId>junit-vintage-engine</artifactId> - </exclusion> - </exclusions> - </dependency> - </dependencies> - - <build> - <plugins> - <!-- Swagger code generation. --> - <plugin> - <groupId>io.swagger.codegen.v3</groupId> - <artifactId>swagger-codegen-maven-plugin</artifactId> - <executions> - <execution> - <goals> - <goal>generate</goal> - </goals> - <configuration> - <inputSpec>${project.basedir}/docs/openapi/openapi.yml</inputSpec> - <invokerPackage>org.onap.cps.nfproxy.rest.controller</invokerPackage> - <modelPackage>org.onap.cps.nfproxy.rest.model</modelPackage> - <apiPackage>org.onap.cps.nfproxy.rest.api</apiPackage> - <language>spring</language> - <generateSupportingFiles>false</generateSupportingFiles> - <configOptions> - <sourceFolder>src/gen/java</sourceFolder> - <dateLibrary>java11</dateLibrary> - <interfaceOnly>true</interfaceOnly> - <useTags>true</useTags> - </configOptions> - </configuration> - </execution> - </executions> - </plugin> - </plugins> - </build> -</project> diff --git a/cps-nf-proxy-rest/src/main/java/org/onap/cps/nfproxy/config/NfProxyConfig.java b/cps-nf-proxy-rest/src/main/java/org/onap/cps/nfproxy/config/NfProxyConfig.java deleted file mode 100644 index defe0f19c..000000000 --- a/cps-nf-proxy-rest/src/main/java/org/onap/cps/nfproxy/config/NfProxyConfig.java +++ /dev/null @@ -1,46 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * Copyright (C) 2021 Pantheon.tech - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -package org.onap.cps.nfproxy.config; - -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import springfox.documentation.builders.PathSelectors; -import springfox.documentation.builders.RequestHandlerSelectors; -import springfox.documentation.spi.DocumentationType; -import springfox.documentation.spring.web.plugins.Docket; - -@Configuration -public class NfProxyConfig { - - /** - * Swagger-ui configuration. - */ - @Bean("nf-proxy-docket") - public Docket api() { - return new Docket(DocumentationType.OAS_30) - .groupName("nf-proxy-docket") - .select() - .apis(RequestHandlerSelectors.any()) - .paths(PathSelectors.any()) - .build(); - } - -}
\ No newline at end of file diff --git a/cps-nf-proxy-rest/src/main/java/org/onap/cps/nfproxy/rest/controller/NfProxyController.java b/cps-nf-proxy-rest/src/main/java/org/onap/cps/nfproxy/rest/controller/NfProxyController.java deleted file mode 100644 index 680ca127b..000000000 --- a/cps-nf-proxy-rest/src/main/java/org/onap/cps/nfproxy/rest/controller/NfProxyController.java +++ /dev/null @@ -1,85 +0,0 @@ -/* - * ============LICENSE_START======================================================= - * Copyright (C) 2021 Pantheon.tech - * Modifications (C) 2021 Nordix Foundation - * Modification Copyright (C) 2021 highstreet technologies GmbH - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -package org.onap.cps.nfproxy.rest.controller; - -import com.google.gson.Gson; -import com.google.gson.GsonBuilder; -import java.util.Collection; -import javax.validation.Valid; -import org.onap.cps.nfproxy.api.NfProxyDataService; -import org.onap.cps.nfproxy.rest.api.NfProxyApi; -import org.onap.cps.spi.FetchDescendantsOption; -import org.onap.cps.spi.model.DataNode; -import org.onap.cps.utils.DataMapUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.http.HttpStatus; -import org.springframework.http.ResponseEntity; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - - -@RestController -@RequestMapping("${rest.api.xnf-base-path}") -public class NfProxyController implements NfProxyApi { - - private static final Gson GSON = new GsonBuilder().create(); - private static final String XPATH_ROOT = "/"; - - @Autowired - private NfProxyDataService nfProxyDataService; - - @Override - public ResponseEntity<Object> getNodeByCmHandleAndXpath(final String cmHandle, @Valid final String xpath, - @Valid final Boolean includeDescendants) { - if (XPATH_ROOT.equals(xpath)) { - return new ResponseEntity<>(HttpStatus.NOT_IMPLEMENTED); - } - final FetchDescendantsOption fetchDescendantsOption = Boolean.TRUE.equals(includeDescendants) - ? FetchDescendantsOption.INCLUDE_ALL_DESCENDANTS : FetchDescendantsOption.OMIT_DESCENDANTS; - final DataNode dataNode = nfProxyDataService.getDataNode(cmHandle, xpath, fetchDescendantsOption); - return new ResponseEntity<>(DataMapUtils.toDataMap(dataNode), HttpStatus.OK); - } - - @Override - public ResponseEntity<Object> queryNodesByCmHandleAndCpsPath(final String cmHandle, @Valid final String cpsPath, - @Valid final Boolean includeDescendants) { - final FetchDescendantsOption fetchDescendantsOption = Boolean.TRUE.equals(includeDescendants) - ? FetchDescendantsOption.INCLUDE_ALL_DESCENDANTS : FetchDescendantsOption.OMIT_DESCENDANTS; - final Collection<DataNode> dataNodes = - nfProxyDataService.queryDataNodes(cmHandle, cpsPath, fetchDescendantsOption); - return new ResponseEntity<>(GSON.toJson(dataNodes), HttpStatus.OK); - } - - @Override - public ResponseEntity<Object> replaceNode(@Valid final String jsonData, final String cmHandle, - @Valid final String parentNodeXpath) { - nfProxyDataService.replaceNodeTree(cmHandle, parentNodeXpath, jsonData); - return new ResponseEntity<>(HttpStatus.OK); - } - - @Override - public ResponseEntity<Object> updateNodeLeaves(@Valid final String jsonData, final String cmHandle, - @Valid final String parentNodeXpath) { - nfProxyDataService.updateNodeLeaves(cmHandle, parentNodeXpath, jsonData); - return new ResponseEntity<>(HttpStatus.OK); - } -} diff --git a/cps-nf-proxy-rest/src/main/java/org/onap/cps/nfproxy/rest/exceptions/NfProxyRestExceptionHandler.java b/cps-nf-proxy-rest/src/main/java/org/onap/cps/nfproxy/rest/exceptions/NfProxyRestExceptionHandler.java deleted file mode 100755 index ac35e9a1f..000000000 --- a/cps-nf-proxy-rest/src/main/java/org/onap/cps/nfproxy/rest/exceptions/NfProxyRestExceptionHandler.java +++ /dev/null @@ -1,71 +0,0 @@ -/* - * ============LICENSE_START======================================================= - * Copyright (C) 2021 Pantheon.tech - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -package org.onap.cps.nfproxy.rest.exceptions; - -import lombok.AccessLevel; -import lombok.NoArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.onap.cps.nfproxy.rest.controller.NfProxyController; -import org.onap.cps.nfproxy.rest.model.ErrorMessage; -import org.onap.cps.spi.exceptions.CpsException; -import org.springframework.http.HttpStatus; -import org.springframework.http.ResponseEntity; -import org.springframework.web.bind.annotation.ExceptionHandler; -import org.springframework.web.bind.annotation.RestControllerAdvice; - -/** - * Exception handler with error message return. - */ -@Slf4j -@NoArgsConstructor(access = AccessLevel.PRIVATE) -@RestControllerAdvice(assignableTypes = {NfProxyController.class}) -public class NfProxyRestExceptionHandler { - - private static final String CHECK_LOGS_FOR_DETAILS = "Check logs for details."; - - /** - * Default exception handler. - * - * @param exception the exception to handle - * @return response with response code 500. - */ - @ExceptionHandler - public static ResponseEntity<Object> handleInternalServerErrorExceptions( - final Exception exception) { - return buildErrorResponse(HttpStatus.INTERNAL_SERVER_ERROR, exception); - } - - @ExceptionHandler({CpsException.class}) - public static ResponseEntity<Object> handleAnyOtherCpsExceptions(final CpsException exception) { - return buildErrorResponse(HttpStatus.INTERNAL_SERVER_ERROR, exception); - } - - private static ResponseEntity<Object> buildErrorResponse(final HttpStatus status, final Exception exception) { - if (exception.getCause() != null || !(exception instanceof CpsException)) { - log.error("Exception occurred", exception); - } - final ErrorMessage errorMessage = new ErrorMessage(); - errorMessage.setStatus(status.toString()); - errorMessage.setMessage(exception.getMessage()); - errorMessage.setDetails(exception instanceof CpsException ? ((CpsException) exception).getDetails() : - CHECK_LOGS_FOR_DETAILS); - return new ResponseEntity<>(errorMessage, status); - } -} diff --git a/cps-nf-proxy-rest/src/main/resources/openapi-configuration.json b/cps-nf-proxy-rest/src/main/resources/openapi-configuration.json deleted file mode 100644 index efc2f9778..000000000 --- a/cps-nf-proxy-rest/src/main/resources/openapi-configuration.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "resourcePackages": [ - "org.onap.cps.nfproxy.rest.controller" - ], - "prettyPrint": true, - "cacheTTL": 0, - "openAPI": { - "info": { - "title": "ONAP Open API v3 CPS xNF Proxy Spec", - "description": "The API Description may be multiline, and GitHub Flavored Markdown, GFM syntax, can be used for rich text representation.", - "x-logo": { - "url": "logo.png" - }, - "contact": { - "name": "ONAP", - "url": "https://onap.readthedocs.io", - "email": "onap-discuss@lists.onap.org" - }, - "license": { - "name": "Apache 2.0", - "url": "http://www.apache.org/licenses/LICENSE-2.0" - }, - "version": "1.2.34", - "x-planned-retirement-date": "202207", - "x-component": "Modeling" - } - } -} diff --git a/cps-nf-proxy-rest/src/test/groovy/org/onap/cps/nfproxy/config/NfProxyConfigSpec.groovy b/cps-nf-proxy-rest/src/test/groovy/org/onap/cps/nfproxy/config/NfProxyConfigSpec.groovy deleted file mode 100644 index da021218d..000000000 --- a/cps-nf-proxy-rest/src/test/groovy/org/onap/cps/nfproxy/config/NfProxyConfigSpec.groovy +++ /dev/null @@ -1,32 +0,0 @@ -/* - * ============LICENSE_START======================================================= - * Copyright (C) 2021 highstreet technologies GmbH - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -package org.onap.cps.nfproxy.config - -import spock.lang.Specification -import springfox.documentation.spring.web.plugins.Docket - -class NfProxyConfigSpec extends Specification { - def objectUnderTest = new NfProxyConfig() - - def 'NfProxy configuration has a Docket API.'() { - expect: 'the NfProxy configuration has a Docket API' - objectUnderTest.api() instanceof Docket - } -} diff --git a/cps-nf-proxy-rest/src/test/groovy/org/onap/cps/nfproxy/rest/controller/NfProxyControllerSpec.groovy b/cps-nf-proxy-rest/src/test/groovy/org/onap/cps/nfproxy/rest/controller/NfProxyControllerSpec.groovy deleted file mode 100644 index a81411caf..000000000 --- a/cps-nf-proxy-rest/src/test/groovy/org/onap/cps/nfproxy/rest/controller/NfProxyControllerSpec.groovy +++ /dev/null @@ -1,138 +0,0 @@ -/* - * ============LICENSE_START======================================================= - * Copyright (C) 2021 Pantheon.tech - * Modification Copyright (C) 2021 highstreet technologies GmbH - * Modification Copyright (C) 2021 Nordix Foundation - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -package org.onap.cps.nfproxy.rest.controller - - -import com.google.gson.Gson -import org.onap.cps.nfproxy.api.NfProxyDataService -import org.onap.cps.spi.model.DataNodeBuilder -import org.spockframework.spring.SpringBean -import org.springframework.beans.factory.annotation.Autowired -import org.springframework.beans.factory.annotation.Value -import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest -import org.springframework.http.HttpStatus -import org.springframework.http.MediaType -import org.springframework.test.web.servlet.MockMvc -import spock.lang.Specification -import spock.lang.Unroll - -import static org.onap.cps.spi.FetchDescendantsOption.INCLUDE_ALL_DESCENDANTS -import static org.onap.cps.spi.FetchDescendantsOption.OMIT_DESCENDANTS -import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.* - -@WebMvcTest -class NfProxyControllerSpec extends Specification { - - @Autowired - MockMvc mvc - - @SpringBean - NfProxyDataService mockNfProxyDataService = Mock() - - @Value('${rest.api.xnf-base-path}') - def basePath - - def dataNodeBaseEndpoint - - def setup() { - dataNodeBaseEndpoint = "$basePath/v1" - } - - def cmHandle = 'some handle' - def xpath = 'some xpath' - - @Unroll - def 'Query data node by cps path for the given cm handle with #scenario.'() { - given: 'service method returns a list containing a data node' - def dataNode = new DataNodeBuilder().withXpath('/xpath').build() - def cpsPath = 'some cps-path' - mockNfProxyDataService.queryDataNodes(cmHandle, cpsPath, expectedCpsDataServiceOption) >> [dataNode] - and: 'the query endpoint' - def dataNodeEndpoint = "$dataNodeBaseEndpoint/cm-handles/$cmHandle/nodes/query" - when: 'query data nodes API is invoked' - def response = mvc.perform(get(dataNodeEndpoint) - .param('cps-path', cpsPath) - .param('include-descendants', includeDescendantsOption)) - .andReturn().response - then: 'the response contains the the datanode in json format' - response.status == HttpStatus.OK.value() - def expectedJsonContent = new Gson().toJson(dataNode) - response.getContentAsString().contains(expectedJsonContent) - where: 'the following options for include descendants are provided in the request' - scenario | includeDescendantsOption || expectedCpsDataServiceOption - 'no descendants by default'| '' || OMIT_DESCENDANTS - 'no descendant explicitly' | 'false' || OMIT_DESCENDANTS - 'descendants' | 'true' || INCLUDE_ALL_DESCENDANTS - } - - def 'Update data node leaves.'() { - given: 'json data' - def jsonData = 'json data' - and: 'the query endpoint' - def endpoint = "$dataNodeBaseEndpoint/cm-handles/$cmHandle/nodes" - when: 'patch request is performed' - def response = mvc.perform( - patch(endpoint) - .contentType(MediaType.APPLICATION_JSON) - .content(jsonData) - .param('xpath', xpath) - ).andReturn().response - then: 'the service method is invoked once with expected parameters' - 1 * mockNfProxyDataService.updateNodeLeaves(cmHandle, xpath, jsonData) - and: 'response status indicates success' - response.status == HttpStatus.OK.value() - } - - def 'Replace data node tree.'() { - given: 'json data' - def jsonData = 'json data' - and: 'the query endpoint' - def endpoint = "$dataNodeBaseEndpoint/cm-handles/$cmHandle/nodes" - when: 'put request is performed' - def response = mvc.perform( - put(endpoint) - .contentType(MediaType.APPLICATION_JSON) - .content(jsonData) - .param('xpath', xpath) - ).andReturn().response - then: 'the service method is invoked once with expected parameters' - 1 * mockNfProxyDataService.replaceNodeTree(cmHandle, xpath, jsonData) - and: 'response status indicates success' - response.status == HttpStatus.OK.value() - } - - def 'Get data node.'() { - given: 'the service returns a data node' - def xpath = 'some xpath' - def dataNode = new DataNodeBuilder().withXpath(xpath).withLeaves(["leaf": "value"]).build() - mockNfProxyDataService.getDataNode(cmHandle, xpath, OMIT_DESCENDANTS) >> dataNode - and: 'the query endpoint' - def endpoint = "$dataNodeBaseEndpoint/cm-handles/$cmHandle/node" - when: 'get request is performed through REST API' - def response = mvc.perform(get(endpoint).param('xpath', xpath)).andReturn().response - then: 'a success response is returned' - response.status == HttpStatus.OK.value() - and: 'response contains expected leaf and value' - response.contentAsString.contains('"leaf":"value"') - } -} - diff --git a/cps-nf-proxy-rest/src/test/groovy/org/onap/cps/nfproxy/rest/exceptions/NfProxyRestExceptionHandlerSpec.groovy b/cps-nf-proxy-rest/src/test/groovy/org/onap/cps/nfproxy/rest/exceptions/NfProxyRestExceptionHandlerSpec.groovy deleted file mode 100644 index 73b57c5f9..000000000 --- a/cps-nf-proxy-rest/src/test/groovy/org/onap/cps/nfproxy/rest/exceptions/NfProxyRestExceptionHandlerSpec.groovy +++ /dev/null @@ -1,97 +0,0 @@ -/* - * ============LICENSE_START======================================================= - * Copyright (C) 2021 highstreet technologies GmbH - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -package org.onap.cps.nfproxy.rest.exceptions - -import groovy.json.JsonSlurper -import org.onap.cps.nfproxy.api.NfProxyDataService -import org.onap.cps.spi.FetchDescendantsOption -import org.onap.cps.spi.exceptions.CpsException -import org.spockframework.spring.SpringBean -import org.springframework.beans.factory.annotation.Autowired -import org.springframework.beans.factory.annotation.Value -import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest -import org.springframework.test.web.servlet.MockMvc -import spock.lang.Shared -import spock.lang.Specification - -import static org.springframework.http.HttpStatus.INTERNAL_SERVER_ERROR -import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get - -@WebMvcTest -class NfProxyRestExceptionHandlerSpec extends Specification { - - @Autowired - MockMvc mvc - - @SpringBean - NfProxyDataService mockNfProxyDataService = Mock() - - @Value('${rest.api.xnf-base-path}') - def basePath - - def dataNodeBaseEndpoint - - @Shared - def errorMessage = 'some error message' - @Shared - def errorDetails = 'some error details' - - def cmHandle = 'some handle' - def xpath = 'some xpath' - - def setup() { - dataNodeBaseEndpoint = "$basePath/v1" - } - - def 'Get request with runtime exception returns HTTP Status Internal Server Error.'() { - when: 'runtime exception is thrown by the service' - setupTestException(new IllegalStateException(errorMessage)) - def response = performTestRequest() - then: 'an HTTP Internal Server Error response is returned with correct message and details' - assertTestResponse(response, INTERNAL_SERVER_ERROR, errorMessage, null) - } - - def 'Get request with generic CPS exception returns HTTP Status Internal Server Error.'() { - when: 'generic CPS exception is thrown by the service' - setupTestException(new CpsException(errorMessage, errorDetails)) - def response = performTestRequest() - then: 'an HTTP Internal Server Error response is returned with correct message and details' - assertTestResponse(response, INTERNAL_SERVER_ERROR, errorMessage, errorDetails) - } - - def setupTestException(exception) { - mockNfProxyDataService.getDataNode(cmHandle, xpath, FetchDescendantsOption.OMIT_DESCENDANTS) >> - { throw exception} - } - - def performTestRequest() { - return mvc.perform(get("$dataNodeBaseEndpoint/cm-handles/$cmHandle/node").param('xpath', xpath)) - .andReturn().response - } - - static void assertTestResponse(response, expectedStatus,expectedErrorMessage, - expectedErrorDetails) { - assert response.status == expectedStatus.value() - def content = new JsonSlurper().parseText(response.contentAsString) - assert content['status'] == expectedStatus.toString() - assert content['message'] == expectedErrorMessage - assert expectedErrorDetails == null || content['details'] == expectedErrorDetails - } -} diff --git a/cps-nf-proxy-rest/src/test/java/org/onap/cps/TestApplication.java b/cps-nf-proxy-rest/src/test/java/org/onap/cps/TestApplication.java deleted file mode 100644 index 5e0e3679e..000000000 --- a/cps-nf-proxy-rest/src/test/java/org/onap/cps/TestApplication.java +++ /dev/null @@ -1,30 +0,0 @@ -/* - * ============LICENSE_START======================================================= - * Copyright (C) 2020 Pantheon.tech - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -package org.onap.cps; - -import org.springframework.boot.autoconfigure.SpringBootApplication; - -/** - * The @SpringBootApplication annotated class is required in order to run tests - * marked with @SpringBootTest annotation. - */ -@SpringBootApplication -public class TestApplication { -} diff --git a/cps-nf-proxy-rest/src/test/resources/application.yml b/cps-nf-proxy-rest/src/test/resources/application.yml deleted file mode 100644 index fed1559b8..000000000 --- a/cps-nf-proxy-rest/src/test/resources/application.yml +++ /dev/null @@ -1,5 +0,0 @@ - -rest: - api: - xnf-base-path: /xnf-proxy/api -spring: |