From e9ed581de0a6090c513e6fca0052b69396cb3cc8 Mon Sep 17 00:00:00 2001 From: kissand Date: Thu, 12 May 2022 15:59:18 +0200 Subject: Merge 2 'query' end points in NCMP - merge two endpoint for a same backend - use xPath query instead of sql query - modify searches endpoint to return a cmHandle object with all public properties - handle old (deprecated) queries - handle public property queries - create useful examples - use more verbose error messages - simplify openapi yamls - create new query service - change second endpoint name to a better matched name - modify legacy tests with new requirements - create new tests for the new scenarios Issue-ID: CPS-1016 Change-Id: I7476e9dbd510ec93b5b48ce85d477ecb2dadffff Signed-off-by: kissand --- .../cps/api/impl/CpsAdminServiceImplSpec.groovy | 10 --- ...CmHandleQueryRestParametersValidatorSpec.groovy | 91 ++++++++++++++++++++++ 2 files changed, 91 insertions(+), 10 deletions(-) create mode 100644 cps-service/src/test/groovy/org/onap/cps/utils/CmHandleQueryRestParametersValidatorSpec.groovy (limited to 'cps-service/src/test') diff --git a/cps-service/src/test/groovy/org/onap/cps/api/impl/CpsAdminServiceImplSpec.groovy b/cps-service/src/test/groovy/org/onap/cps/api/impl/CpsAdminServiceImplSpec.groovy index 33868ccf0..def99e21f 100755 --- a/cps-service/src/test/groovy/org/onap/cps/api/impl/CpsAdminServiceImplSpec.groovy +++ b/cps-service/src/test/groovy/org/onap/cps/api/impl/CpsAdminServiceImplSpec.groovy @@ -177,15 +177,6 @@ class CpsAdminServiceImplSpec extends Specification { 1 * mockCpsAdminPersistenceService.deleteDataspace('someDataspace') } - def 'Query CM Handles.'() { - given: 'a cm handle query' - def cmHandleQueryParameters = new CmHandleQueryParameters() - when: 'query cm handles is invoked' - objectUnderTest.queryCmHandles(cmHandleQueryParameters) - then: 'associated persistence service method is invoked with correct parameter' - 1 * mockCpsAdminPersistenceService.queryCmHandles(cmHandleQueryParameters) - } - def 'Delete dataspace with invalid dataspace id.'() { when: 'delete dataspace is invoked' objectUnderTest.deleteDataspace('some dataspace name') @@ -194,5 +185,4 @@ class CpsAdminServiceImplSpec extends Specification { and: 'associated persistence service method is not invoked' 0 * mockCpsAdminPersistenceService.deleteDataspace(_) } - } 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 new file mode 100644 index 000000000..645829b2a --- /dev/null +++ b/cps-service/src/test/groovy/org/onap/cps/utils/CmHandleQueryRestParametersValidatorSpec.groovy @@ -0,0 +1,91 @@ +/* + * ============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.utils + +import org.onap.cps.spi.exceptions.DataValidationException +import org.onap.cps.spi.model.CmHandleQueryParameters +import org.onap.cps.spi.model.ConditionProperties +import spock.lang.Specification + +class CmHandleQueryRestParametersValidatorSpec extends Specification { + def 'CM Handle Query validation: empty query.'() { + given: 'a cm handle query' + def cmHandleQueryParameters = new CmHandleQueryParameters() + when: 'validator is invoked' + CmHandleQueryRestParametersValidator.validateCmHandleQueryParameters(cmHandleQueryParameters) + then: 'data validation exception is not thrown' + noExceptionThrown() + } + + def 'CM Handle Query validation: normal query.'() { + given: 'a cm handle query' + def cmHandleQueryParameters = new CmHandleQueryParameters() + def condition = new ConditionProperties() + condition.conditionName = 'hasAllProperties' + condition.conditionParameters = [[key1:'value1'],[key2:'value2']] + cmHandleQueryParameters.cmHandleQueryParameters = [condition] + when: 'validator is invoked' + CmHandleQueryRestParametersValidator.validateCmHandleQueryParameters(cmHandleQueryParameters) + then: 'data validation exception is not thrown' + noExceptionThrown() + } + + def 'CM Handle Query validation: #scenario.'() { + given: 'a cm handle query' + def cmHandleQueryParameters = new CmHandleQueryParameters() + def condition = new ConditionProperties() + condition.conditionName = conditionName + condition.conditionParameters = conditionParameters + cmHandleQueryParameters.cmHandleQueryParameters = [condition] + when: 'validator is invoked' + CmHandleQueryRestParametersValidator.validateCmHandleQueryParameters(cmHandleQueryParameters) + then: 'a data validation exception is thrown' + thrown(DataValidationException) + where: + scenario | conditionName | conditionParameters + 'empty properties' | 'hasAllProperties' | [[ : ]] + 'empty conditions' | 'hasAllProperties' | [] + 'wrong condition name' | 'wrong' | [] + 'no condition name' | '' | [] + 'too many properties' | 'hasAllProperties' | [[key1:'value1', key2:'value2']] + 'wrong properties' | 'hasAllProperties' | [['':'wrong']] + } + + def 'CM Handle Query validation: validate module name condition properties - valid query.'() { + given: 'a condition property' + def conditionProperty = [moduleName: 'value'] + when: 'validator is invoked' + CmHandleQueryRestParametersValidator.validateModuleNameConditionProperties(conditionProperty) + then: 'data validation exception is not thrown' + noExceptionThrown() + } + + def 'CM Handle Query validation: validate module name condition properties - #scenario.'() { + when: 'validator is invoked' + CmHandleQueryRestParametersValidator.validateModuleNameConditionProperties(conditionProperty) + then: 'a data validation exception is thrown' + thrown(DataValidationException) + where: + scenario | conditionProperty + 'invalid value' | [moduleName: ''] + 'invalid name' | [wrongName: 'value'] + } +} -- cgit 1.2.3-korg