summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorToine Siebelink <toine.siebelink@est.tech>2022-10-20 12:09:44 +0000
committerGerrit Code Review <gerrit@onap.org>2022-10-20 12:09:44 +0000
commit1377bf984e9d3ae97b1dc58c7d62ff1cafe60bb9 (patch)
tree41a2238c6beac0cd1c1d7e89b031d499c005f914
parentb24639de32b2c89346d9888ba0acc9443babb2be (diff)
parentabee011cb9437bf50e21a559c3d0176d2abbf011 (diff)
Merge "Improve code coverage"
-rw-r--r--cps-ncmp-rest/src/main/java/org/onap/cps/ncmp/rest/controller/handlers/NcmpDatastoreResourceRequestHandlerFactory.java3
-rw-r--r--cps-ncmp-rest/src/main/java/org/onap/cps/ncmp/rest/exceptions/CpsTaskExecutionException.java44
-rw-r--r--cps-ncmp-rest/src/main/java/org/onap/cps/ncmp/rest/mapper/CmHandleStateMapper.java2
-rw-r--r--cps-ncmp-rest/src/test/groovy/org/onap/cps/ncmp/rest/mapper/CmHandleStateMapperSpec.groovy (renamed from cps-ncmp-rest/src/test/groovy/org/onap/cps/ncmp/rest/mapper/CmHandleStateMapperTest.groovy)7
-rw-r--r--cps-service/src/main/java/org/onap/cps/utils/CmHandleQueryRestParametersValidator.java25
-rw-r--r--cps-service/src/test/groovy/org/onap/cps/utils/CmHandleQueryRestParametersValidatorSpec.groovy5
-rw-r--r--cps-service/src/test/groovy/org/onap/cps/utils/JsonObjectMapperSpec.groovy17
7 files changed, 40 insertions, 63 deletions
diff --git a/cps-ncmp-rest/src/main/java/org/onap/cps/ncmp/rest/controller/handlers/NcmpDatastoreResourceRequestHandlerFactory.java b/cps-ncmp-rest/src/main/java/org/onap/cps/ncmp/rest/controller/handlers/NcmpDatastoreResourceRequestHandlerFactory.java
index 35bd578ce2..7db754279c 100644
--- a/cps-ncmp-rest/src/main/java/org/onap/cps/ncmp/rest/controller/handlers/NcmpDatastoreResourceRequestHandlerFactory.java
+++ b/cps-ncmp-rest/src/main/java/org/onap/cps/ncmp/rest/controller/handlers/NcmpDatastoreResourceRequestHandlerFactory.java
@@ -55,10 +55,9 @@ public class NcmpDatastoreResourceRequestHandlerFactory {
return new NcmpDatastorePassthroughRunningResourceRequestHandler(networkCmProxyDataService,
cpsNcmpTaskExecutor, timeOutInMilliSeconds, notificationFeatureEnabled);
case PASSTHROUGH_OPERATIONAL:
+ default:
return new NcmpDatastorePassthroughOperationalResourceRequestHandler(networkCmProxyDataService,
cpsNcmpTaskExecutor, timeOutInMilliSeconds, notificationFeatureEnabled);
- default:
- return null;
}
}
}
diff --git a/cps-ncmp-rest/src/main/java/org/onap/cps/ncmp/rest/exceptions/CpsTaskExecutionException.java b/cps-ncmp-rest/src/main/java/org/onap/cps/ncmp/rest/exceptions/CpsTaskExecutionException.java
deleted file mode 100644
index 3e8929d2e3..0000000000
--- a/cps-ncmp-rest/src/main/java/org/onap/cps/ncmp/rest/exceptions/CpsTaskExecutionException.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * ============LICENSE_START=======================================================
- * Copyright (C) 2022 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.ncmp.rest.exceptions;
-
-import lombok.Getter;
-
-public class CpsTaskExecutionException extends RuntimeException {
-
- private static final long serialVersionUID = 1481520410918497454L;
-
- @Getter
- final String details;
-
- /**
- * Constructor.
- *
- * @param message the error message
- * @param details the error details
- * @param cause the cause of the exception
- */
- public CpsTaskExecutionException(final String message, final String details, final Throwable cause) {
- super(message, cause);
- this.details = details;
- }
-
-} \ No newline at end of file
diff --git a/cps-ncmp-rest/src/main/java/org/onap/cps/ncmp/rest/mapper/CmHandleStateMapper.java b/cps-ncmp-rest/src/main/java/org/onap/cps/ncmp/rest/mapper/CmHandleStateMapper.java
index 097dd0af49..64a9934b99 100644
--- a/cps-ncmp-rest/src/main/java/org/onap/cps/ncmp/rest/mapper/CmHandleStateMapper.java
+++ b/cps-ncmp-rest/src/main/java/org/onap/cps/ncmp/rest/mapper/CmHandleStateMapper.java
@@ -62,9 +62,7 @@ public interface CmHandleStateMapper {
dataStores.setOperational(operationalSyncState);
}
-
return dataStores;
-
}
/**
diff --git a/cps-ncmp-rest/src/test/groovy/org/onap/cps/ncmp/rest/mapper/CmHandleStateMapperTest.groovy b/cps-ncmp-rest/src/test/groovy/org/onap/cps/ncmp/rest/mapper/CmHandleStateMapperSpec.groovy
index 663b9d02a6..9a09b97973 100644
--- a/cps-ncmp-rest/src/test/groovy/org/onap/cps/ncmp/rest/mapper/CmHandleStateMapperTest.groovy
+++ b/cps-ncmp-rest/src/test/groovy/org/onap/cps/ncmp/rest/mapper/CmHandleStateMapperSpec.groovy
@@ -32,7 +32,7 @@ import java.time.OffsetDateTime
import java.time.ZoneOffset
import java.time.format.DateTimeFormatter
-class CmHandleStateMapperTest extends Specification {
+class CmHandleStateMapperSpec extends Specification {
def formattedDateAndTime = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSSZ")
.format(OffsetDateTime.of(2022, 12, 31, 20, 30, 40, 1, ZoneOffset.UTC))
@@ -59,6 +59,11 @@ class CmHandleStateMapperTest extends Specification {
assert result.dataSyncState.operational.getSyncState() != null
}
+ def 'Handling null state.'() {
+ expect: 'converting null returns null'
+ objectUnderTest.toDataStores(null) == null
+ }
+
def 'Internal to External Lock Reason Mapping of #scenario'() {
given: 'a LOCKED composite state with locked reason of #scenario'
def compositeState = new CompositeStateBuilder()
diff --git a/cps-service/src/main/java/org/onap/cps/utils/CmHandleQueryRestParametersValidator.java b/cps-service/src/main/java/org/onap/cps/utils/CmHandleQueryRestParametersValidator.java
index 7fe47be2da..4d0eb7d412 100644
--- a/cps-service/src/main/java/org/onap/cps/utils/CmHandleQueryRestParametersValidator.java
+++ b/cps-service/src/main/java/org/onap/cps/utils/CmHandleQueryRestParametersValidator.java
@@ -42,16 +42,16 @@ public class CmHandleQueryRestParametersValidator {
cmHandleQueryServiceParameters.getCmHandleQueryParameters().forEach(
conditionApiProperty -> {
if (Strings.isNullOrEmpty(conditionApiProperty.getConditionName())) {
- throwDataValidationException("Missing 'conditionName' - please supply a valid name.");
+ throw createDataValidationException("Missing 'conditionName' - please supply a valid name.");
}
if (Arrays.stream(ValidQueryProperties.values()).noneMatch(validQueryProperty ->
validQueryProperty.getQueryProperty().equals(conditionApiProperty.getConditionName()))) {
- throwDataValidationException(
+ throw createDataValidationException(
String.format("Wrong 'conditionName': %s - please supply a valid name.",
conditionApiProperty.getConditionName()));
}
if (conditionApiProperty.getConditionParameters().isEmpty()) {
- throwDataValidationException(
+ throw createDataValidationException(
"Empty 'conditionsParameters' - please supply a valid condition parameter.");
}
conditionApiProperty.getConditionParameters().forEach(
@@ -63,16 +63,16 @@ public class CmHandleQueryRestParametersValidator {
private static void validateConditionParameter(final Map<String, String> conditionParameter) {
if (conditionParameter.isEmpty()) {
- throwDataValidationException(
+ throw createDataValidationException(
"Empty 'conditionsParameter' - please supply a valid condition parameter.");
}
if (conditionParameter.size() > 1) {
- throwDataValidationException("Too many name in one 'conditionsParameter' -"
+ throw createDataValidationException("Too many name in one 'conditionsParameter' -"
+ " please supply one name in one condition parameter.");
}
conditionParameter.forEach((key, value) -> {
if (Strings.isNullOrEmpty(key)) {
- throwDataValidationException(
+ throw createDataValidationException(
"Missing 'conditionsParameterName' - please supply a valid name.");
}
});
@@ -86,7 +86,8 @@ public class CmHandleQueryRestParametersValidator {
if (conditionProperty.containsKey("moduleName") && !conditionProperty.get("moduleName").isEmpty()) {
return;
}
- throwDataValidationException("Wrong module condition property. - please supply a valid condition property.");
+ throw createDataValidationException("Wrong module condition property. - "
+ + "please supply a valid condition property.");
}
/**
@@ -98,15 +99,15 @@ public class CmHandleQueryRestParametersValidator {
return true;
}
if (conditionProperty.size() > 1) {
- throwDataValidationException("Only one condition property is allowed for the CPS path query.");
+ throw createDataValidationException("Only one condition property is allowed for the CPS path query.");
}
if (!conditionProperty.containsKey("cpsPath")) {
- throwDataValidationException(
+ throw createDataValidationException(
"Wrong CPS path condition property. - expecting \"cpsPath\" as the condition property.");
}
final String cpsPath = conditionProperty.get("cpsPath");
if (cpsPath.isBlank()) {
- throwDataValidationException(
+ throw createDataValidationException(
"Wrong CPS path. - please supply a valid CPS path.");
}
if (cpsPath.contains("/additional-properties")) {
@@ -117,8 +118,8 @@ public class CmHandleQueryRestParametersValidator {
return true;
}
- private static void throwDataValidationException(final String details) {
- throw new DataValidationException("Invalid Query Parameter.", details);
+ private static DataValidationException createDataValidationException(final String details) {
+ return new DataValidationException("Invalid Query Parameter.", details);
}
}
diff --git a/cps-service/src/test/groovy/org/onap/cps/utils/CmHandleQueryRestParametersValidatorSpec.groovy b/cps-service/src/test/groovy/org/onap/cps/utils/CmHandleQueryRestParametersValidatorSpec.groovy
index d5dcb7fc5c..c40ffa9a35 100644
--- a/cps-service/src/test/groovy/org/onap/cps/utils/CmHandleQueryRestParametersValidatorSpec.groovy
+++ b/cps-service/src/test/groovy/org/onap/cps/utils/CmHandleQueryRestParametersValidatorSpec.groovy
@@ -103,6 +103,11 @@ class CmHandleQueryRestParametersValidatorSpec extends Specification {
'cpsPath not supplied' | ['cpsPath':''] || 'Wrong CPS path. - please supply a valid CPS path.'
}
+ def 'No conditions.'() {
+ expect: 'no conditions always returns true'
+ CmHandleQueryRestParametersValidator.validateCpsPathConditionProperties([:]) == true
+ }
+
def 'Validate CmHandle where #scenario.'() {
when: 'the validator is called on a cps path condition property'
def result = CmHandleQueryRestParametersValidator.validateCpsPathConditionProperties(['cpsPath':cpsPath])
diff --git a/cps-service/src/test/groovy/org/onap/cps/utils/JsonObjectMapperSpec.groovy b/cps-service/src/test/groovy/org/onap/cps/utils/JsonObjectMapperSpec.groovy
index 461014418e..e205a19eed 100644
--- a/cps-service/src/test/groovy/org/onap/cps/utils/JsonObjectMapperSpec.groovy
+++ b/cps-service/src/test/groovy/org/onap/cps/utils/JsonObjectMapperSpec.groovy
@@ -20,7 +20,7 @@
package org.onap.cps.utils
-
+import com.fasterxml.jackson.core.JsonProcessingException
import com.fasterxml.jackson.databind.ObjectMapper
import com.fasterxml.jackson.databind.SerializationFeature
import groovy.json.JsonSlurper
@@ -44,6 +44,19 @@ class JsonObjectMapperSpec extends Specification {
assert contentMap.'test:bookstore'.'bookstore-name' == 'Chapters'
}
+ def 'Map a structured object to json String error.'() {
+ given: 'some object'
+ def object = new Object()
+ and: 'the Object mapper throws an exception'
+ spiedObjectMapper.writeValueAsString(object) >> { throw new JsonProcessingException('Sample problem'){} }
+ when: 'attempting to convert the object to a string'
+ jsonObjectMapper.asJsonString(object);
+ then: 'a Data Validation Exception is thrown'
+ def thrown = thrown(DataValidationException)
+ and: 'the details containing the original error message'
+ assert thrown.details == 'Sample problem'
+ }
+
def 'Map a structurally compatible object to class object of specific class type T.'() {
given: 'a map object model'
def contentMap = new JsonSlurper().parseText(TestUtils.getResourceFileContent('bookstore.json'))
@@ -61,7 +74,7 @@ class JsonObjectMapperSpec extends Specification {
given: 'Unstructured json string'
def content = '{ "nest": { "birds": "bird"] } }'
when: 'mapping json string to given class type'
- def contentMap = jsonObjectMapper.convertJsonString(content, Map);
+ jsonObjectMapper.convertJsonString(content, Map);
then: 'an exception is thrown'
thrown(DataValidationException)
}