From 77db1aa77019257b61cc294195743eac9a704dec Mon Sep 17 00:00:00 2001 From: ToineSiebelink Date: Thu, 15 Jan 2026 09:27:27 +0000 Subject: [PATCH] Ensure delete has target MO in resource identifier, not the parent Issue-ID: CPS-3130 Change-Id: Ie343a0221d2daee9b8ea46eb4c2df80e9721aa97 Signed-off-by: ToineSiebelink --- .../org/onap/cps/ncmp/rest/controller/ProvMnSControllerSpec.groovy | 4 ++-- .../cps/ncmp/impl/data/policyexecutor/OperationDetailsFactory.java | 3 +-- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/cps-ncmp-rest/src/test/groovy/org/onap/cps/ncmp/rest/controller/ProvMnSControllerSpec.groovy b/cps-ncmp-rest/src/test/groovy/org/onap/cps/ncmp/rest/controller/ProvMnSControllerSpec.groovy index e956410deb..cd5318b346 100644 --- a/cps-ncmp-rest/src/test/groovy/org/onap/cps/ncmp/rest/controller/ProvMnSControllerSpec.groovy +++ b/cps-ncmp-rest/src/test/groovy/org/onap/cps/ncmp/rest/controller/ProvMnSControllerSpec.groovy @@ -297,7 +297,7 @@ class ProvMnSControllerSpec extends Specification { mockAlternateIdMatcher.getCmHandleIdByLongestMatchingAlternateId('/managedElement=1/myClass=id1', "/") >> 'ch-1' and: 'persistence service returns valid yangModelCmHandle' mockInventoryPersistence.getYangModelCmHandle('ch-1') >> validCmHandle - def expectedResourceIdentifier = '/myClass=id1/childClass=1' + def expectedResourceIdentifier = '/myClass=id1/childClass=1/grandchildClass=1' when: 'patch data resource request is performed' def response = mvc.perform(patch(url) .header('Authorization', 'my authorization') @@ -436,7 +436,7 @@ class ProvMnSControllerSpec extends Specification { and: 'the content is whatever the DMI returned' assert response.contentAsString == responseContentFromDmi and: 'Policy Executor was invoked with correct resource identifier and almost empty operation details (not used for delete!)' - 1 * mockPolicyExecutor.checkPermission(_, OperationType.DELETE, 'my authorization', '/myClass=id1/childClass=1', expectedDeleteChangeRequest) + 1 * mockPolicyExecutor.checkPermission(_, OperationType.DELETE, 'my authorization', '/myClass=id1/childClass=1/grandChildClass=2', expectedDeleteChangeRequest) where: 'following responses returned by DMI' scenario | responseStatusFromDmi | responseContentFromDmi 'happy flow' | OK | 'content from DMI' diff --git a/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/impl/data/policyexecutor/OperationDetailsFactory.java b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/impl/data/policyexecutor/OperationDetailsFactory.java index 22b3097dc7..2169bf5b92 100644 --- a/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/impl/data/policyexecutor/OperationDetailsFactory.java +++ b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/impl/data/policyexecutor/OperationDetailsFactory.java @@ -105,8 +105,7 @@ public class OperationDetailsFactory { * @return OperationDetails object */ public OperationDetails buildOperationDetailsForDelete(final String fdn) { - final String parentFdn = ParameterHelper.extractParentFdn(fdn); - return new OperationDetails(OperationType.DELETE, parentFdn, "", emptyList()); + return new OperationDetails(OperationType.DELETE, fdn, "", emptyList()); } /** -- 2.16.6