From b503889326deea3fe0869b6ae07d6ce1d2810006 Mon Sep 17 00:00:00 2001 From: "waqas.ikram" Date: Thu, 30 Apr 2020 17:56:58 +0100 Subject: [PATCH] Fix for SO-2855 Change-Id: Ic60becb234f43a086bec5e594885422ceeda210f Issue-ID: SO-2855 Signed-off-by: waqas.ikram --- .../ConversionServiceConfiguration.java | 4 +- .../sol003/AbstractPkgNotificationConverter.java | 13 +++- .../sol003/PkgChangeNotificationConverter.java | 8 ++- .../sol003/PkgOnboardingNotificationConverter.java | 9 ++- ...EtsiSubscriptionNotificationControllerTest.java | 70 +++++++++++----------- 5 files changed, 63 insertions(+), 41 deletions(-) diff --git a/adapters/etsi-sol003-adapter/etsi-sol003-package-management/etsi-sol003-package-management-adapter/src/main/java/org/onap/so/adapters/etsi/sol003/adapter/packagemanagement/ConversionServiceConfiguration.java b/adapters/etsi-sol003-adapter/etsi-sol003-package-management/etsi-sol003-package-management-adapter/src/main/java/org/onap/so/adapters/etsi/sol003/adapter/packagemanagement/ConversionServiceConfiguration.java index ecb8bbbc2e..15601f7c0e 100644 --- a/adapters/etsi-sol003-adapter/etsi-sol003-package-management/etsi-sol003-package-management-adapter/src/main/java/org/onap/so/adapters/etsi/sol003/adapter/packagemanagement/ConversionServiceConfiguration.java +++ b/adapters/etsi-sol003-adapter/etsi-sol003-package-management/etsi-sol003-package-management-adapter/src/main/java/org/onap/so/adapters/etsi/sol003/adapter/packagemanagement/ConversionServiceConfiguration.java @@ -47,8 +47,8 @@ public class ConversionServiceConfiguration { final DefaultConversionService service = new DefaultConversionService(); service.addConverter(new VnfPkgInfoConverter(vnfmAdapterUrlProvider)); service.addConverter(new PkgmSubscriptionRequestConverter()); - service.addConverter(new PkgChangeNotificationConverter()); - service.addConverter(new PkgOnboardingNotificationConverter()); + service.addConverter(new PkgChangeNotificationConverter(vnfmAdapterUrlProvider)); + service.addConverter(new PkgOnboardingNotificationConverter(vnfmAdapterUrlProvider)); return service; } diff --git a/adapters/etsi-sol003-adapter/etsi-sol003-package-management/etsi-sol003-package-management-adapter/src/main/java/org/onap/so/adapters/etsi/sol003/adapter/packagemanagement/converters/etsicatalog/sol003/AbstractPkgNotificationConverter.java b/adapters/etsi-sol003-adapter/etsi-sol003-package-management/etsi-sol003-package-management-adapter/src/main/java/org/onap/so/adapters/etsi/sol003/adapter/packagemanagement/converters/etsicatalog/sol003/AbstractPkgNotificationConverter.java index 5aba579115..fda2d54869 100644 --- a/adapters/etsi-sol003-adapter/etsi-sol003-package-management/etsi-sol003-package-management-adapter/src/main/java/org/onap/so/adapters/etsi/sol003/adapter/packagemanagement/converters/etsicatalog/sol003/AbstractPkgNotificationConverter.java +++ b/adapters/etsi-sol003-adapter/etsi-sol003-package-management/etsi-sol003-package-management-adapter/src/main/java/org/onap/so/adapters/etsi/sol003/adapter/packagemanagement/converters/etsicatalog/sol003/AbstractPkgNotificationConverter.java @@ -20,6 +20,7 @@ package org.onap.so.adapters.etsi.sol003.adapter.packagemanagement.converters.etsicatalog.sol003; +import org.onap.so.adapters.etsi.sol003.adapter.common.VnfmAdapterUrlProvider; import org.onap.so.adapters.etsi.sol003.adapter.etsicatalog.notification.model.PkgmLinks; import org.onap.so.adapters.etsi.sol003.adapter.packagemanagement.extclients.vnfm.notification.model.URIisprovidedbytheclientwhencreatingthesubscriptionVnfPackageOnboardingNotificationLinks; import org.onap.so.adapters.etsi.sol003.adapter.packagemanagement.extclients.vnfm.notification.model.URIisprovidedbytheclientwhencreatingthesubscriptionVnfPackageOnboardingNotificationLinksVnfPackage; @@ -32,18 +33,24 @@ import org.onap.so.adapters.etsi.sol003.adapter.packagemanagement.extclients.vnf */ abstract public class AbstractPkgNotificationConverter { + private final VnfmAdapterUrlProvider vnfmAdapterUrlProvider; + + public AbstractPkgNotificationConverter(final VnfmAdapterUrlProvider vnfmAdapterUrlProvider) { + this.vnfmAdapterUrlProvider = vnfmAdapterUrlProvider; + } + protected URIisprovidedbytheclientwhencreatingthesubscriptionVnfPackageOnboardingNotificationLinks convert( - final PkgmLinks pkgmLinks) { + final PkgmLinks pkgmLinks, final String vnfPkgId, final String subscriptionId) { final URIisprovidedbytheclientwhencreatingthesubscriptionVnfPackageOnboardingNotificationLinksVnfPackage linksVnfPackage = new URIisprovidedbytheclientwhencreatingthesubscriptionVnfPackageOnboardingNotificationLinksVnfPackage(); if (pkgmLinks.getVnfPackage() != null) { - linksVnfPackage.setHref(pkgmLinks.getVnfPackage().getHref()); + linksVnfPackage.setHref(vnfmAdapterUrlProvider.getVnfPackageUrl(vnfPkgId)); } final URIisprovidedbytheclientwhencreatingthesubscriptionVnfPackageOnboardingNotificationLinksVnfPackage linksSubscription = new URIisprovidedbytheclientwhencreatingthesubscriptionVnfPackageOnboardingNotificationLinksVnfPackage(); if (pkgmLinks.getSubscription() != null) { - linksSubscription.setHref(pkgmLinks.getSubscription().getHref()); + linksSubscription.setHref(vnfmAdapterUrlProvider.getSubscriptionUriString(subscriptionId)); } final URIisprovidedbytheclientwhencreatingthesubscriptionVnfPackageOnboardingNotificationLinks links = diff --git a/adapters/etsi-sol003-adapter/etsi-sol003-package-management/etsi-sol003-package-management-adapter/src/main/java/org/onap/so/adapters/etsi/sol003/adapter/packagemanagement/converters/etsicatalog/sol003/PkgChangeNotificationConverter.java b/adapters/etsi-sol003-adapter/etsi-sol003-package-management/etsi-sol003-package-management-adapter/src/main/java/org/onap/so/adapters/etsi/sol003/adapter/packagemanagement/converters/etsicatalog/sol003/PkgChangeNotificationConverter.java index 164f6d05b4..157f98787e 100644 --- a/adapters/etsi-sol003-adapter/etsi-sol003-package-management/etsi-sol003-package-management-adapter/src/main/java/org/onap/so/adapters/etsi/sol003/adapter/packagemanagement/converters/etsicatalog/sol003/PkgChangeNotificationConverter.java +++ b/adapters/etsi-sol003-adapter/etsi-sol003-package-management/etsi-sol003-package-management-adapter/src/main/java/org/onap/so/adapters/etsi/sol003/adapter/packagemanagement/converters/etsicatalog/sol003/PkgChangeNotificationConverter.java @@ -21,6 +21,7 @@ package org.onap.so.adapters.etsi.sol003.adapter.packagemanagement.converters.etsicatalog.sol003; import static org.slf4j.LoggerFactory.getLogger; +import org.onap.so.adapters.etsi.sol003.adapter.common.VnfmAdapterUrlProvider; import org.onap.so.adapters.etsi.sol003.adapter.etsicatalog.notification.model.PkgChangeNotification; import org.onap.so.adapters.etsi.sol003.adapter.packagemanagement.extclients.vnfm.notification.model.VnfPackageChangeNotification; import org.slf4j.Logger; @@ -38,6 +39,10 @@ public class PkgChangeNotificationConverter extends AbstractPkgNotificationConve implements Converter { private static final Logger logger = getLogger(PkgChangeNotificationConverter.class); + public PkgChangeNotificationConverter(final VnfmAdapterUrlProvider vnfmAdapterUrlProvider) { + super(vnfmAdapterUrlProvider); + } + /** * Convert a {@link PkgChangeNotification} Object to an {@link VnfPackageChangeNotification} Object * @@ -71,7 +76,8 @@ public class PkgChangeNotificationConverter extends AbstractPkgNotificationConve .fromValue(pkgChangeNotification.getOperationalState().getValue())); } - vnfPackageChangeNotification.setLinks(convert((pkgChangeNotification.getLinks()))); + vnfPackageChangeNotification.setLinks(convert(pkgChangeNotification.getLinks(), + pkgChangeNotification.getVnfPkgId(), pkgChangeNotification.getSubscriptionId())); return vnfPackageChangeNotification; } diff --git a/adapters/etsi-sol003-adapter/etsi-sol003-package-management/etsi-sol003-package-management-adapter/src/main/java/org/onap/so/adapters/etsi/sol003/adapter/packagemanagement/converters/etsicatalog/sol003/PkgOnboardingNotificationConverter.java b/adapters/etsi-sol003-adapter/etsi-sol003-package-management/etsi-sol003-package-management-adapter/src/main/java/org/onap/so/adapters/etsi/sol003/adapter/packagemanagement/converters/etsicatalog/sol003/PkgOnboardingNotificationConverter.java index aeaef94304..6fdce75754 100644 --- a/adapters/etsi-sol003-adapter/etsi-sol003-package-management/etsi-sol003-package-management-adapter/src/main/java/org/onap/so/adapters/etsi/sol003/adapter/packagemanagement/converters/etsicatalog/sol003/PkgOnboardingNotificationConverter.java +++ b/adapters/etsi-sol003-adapter/etsi-sol003-package-management/etsi-sol003-package-management-adapter/src/main/java/org/onap/so/adapters/etsi/sol003/adapter/packagemanagement/converters/etsicatalog/sol003/PkgOnboardingNotificationConverter.java @@ -21,6 +21,7 @@ package org.onap.so.adapters.etsi.sol003.adapter.packagemanagement.converters.etsicatalog.sol003; import static org.slf4j.LoggerFactory.getLogger; +import org.onap.so.adapters.etsi.sol003.adapter.common.VnfmAdapterUrlProvider; import org.onap.so.adapters.etsi.sol003.adapter.etsicatalog.notification.model.PkgOnboardingNotification; import org.onap.so.adapters.etsi.sol003.adapter.packagemanagement.extclients.vnfm.notification.model.VnfPackageOnboardingNotification; import org.slf4j.Logger; @@ -38,6 +39,11 @@ public class PkgOnboardingNotificationConverter extends AbstractPkgNotificationC implements Converter { private static final Logger logger = getLogger(PkgOnboardingNotificationConverter.class); + public PkgOnboardingNotificationConverter(final VnfmAdapterUrlProvider vnfmAdapterUrlProvider) { + super(vnfmAdapterUrlProvider); + } + + /** * Convert a {@link PkgOnboardingNotification} Object to an {@link VnfPackageOnboardingNotification} Object * @@ -61,7 +67,8 @@ public class PkgOnboardingNotificationConverter extends AbstractPkgNotificationC vnfPackageOnboardingNotification.setVnfPkgId(pkgOnboardingNotification.getVnfPkgId()); vnfPackageOnboardingNotification.setVnfdId(pkgOnboardingNotification.getVnfdId()); - vnfPackageOnboardingNotification.setLinks(convert((pkgOnboardingNotification.getLinks()))); + vnfPackageOnboardingNotification.setLinks(convert(pkgOnboardingNotification.getLinks(), + pkgOnboardingNotification.getVnfPkgId(), pkgOnboardingNotification.getSubscriptionId())); return vnfPackageOnboardingNotification; } diff --git a/adapters/etsi-sol003-adapter/etsi-sol003-package-management/etsi-sol003-package-management-adapter/src/test/java/org/onap/so/adapters/etsi/sol003/adapter/packagemanagement/rest/EtsiSubscriptionNotificationControllerTest.java b/adapters/etsi-sol003-adapter/etsi-sol003-package-management/etsi-sol003-package-management-adapter/src/test/java/org/onap/so/adapters/etsi/sol003/adapter/packagemanagement/rest/EtsiSubscriptionNotificationControllerTest.java index 02257def7a..f158a9e1de 100644 --- a/adapters/etsi-sol003-adapter/etsi-sol003-package-management/etsi-sol003-package-management-adapter/src/test/java/org/onap/so/adapters/etsi/sol003/adapter/packagemanagement/rest/EtsiSubscriptionNotificationControllerTest.java +++ b/adapters/etsi-sol003-adapter/etsi-sol003-package-management/etsi-sol003-package-management-adapter/src/test/java/org/onap/so/adapters/etsi/sol003/adapter/packagemanagement/rest/EtsiSubscriptionNotificationControllerTest.java @@ -20,8 +20,22 @@ package org.onap.so.adapters.etsi.sol003.adapter.packagemanagement.rest; -import com.google.gson.Gson; -import com.google.gson.GsonBuilder; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; +import static org.onap.so.adapters.etsi.sol003.adapter.common.CommonConstants.ETSI_SUBSCRIPTION_NOTIFICATION_CONTROLLER_BASE_URL; +import static org.onap.so.client.RestTemplateConfig.CONFIGURABLE_REST_TEMPLATE; +import static org.springframework.test.annotation.DirtiesContext.ClassMode.BEFORE_CLASS; +import static org.springframework.test.web.client.match.MockRestRequestMatchers.header; +import static org.springframework.test.web.client.match.MockRestRequestMatchers.jsonPath; +import static org.springframework.test.web.client.match.MockRestRequestMatchers.method; +import static org.springframework.test.web.client.match.MockRestRequestMatchers.requestTo; +import static org.springframework.test.web.client.response.MockRestResponseCreators.withStatus; +import static org.springframework.test.web.client.response.MockRestResponseCreators.withSuccess; +import java.net.URI; +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.List; +import java.util.UUID; import org.junit.After; import org.junit.Before; import org.junit.Test; @@ -59,22 +73,7 @@ import org.springframework.test.context.ActiveProfiles; import org.springframework.test.context.junit4.SpringRunner; import org.springframework.test.web.client.MockRestServiceServer; import org.springframework.web.client.RestTemplate; -import java.net.URI; -import java.time.LocalDateTime; -import java.util.ArrayList; -import java.util.List; -import java.util.UUID; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; -import static org.onap.so.adapters.etsi.sol003.adapter.common.CommonConstants.ETSI_SUBSCRIPTION_NOTIFICATION_CONTROLLER_BASE_URL; -import static org.onap.so.client.RestTemplateConfig.CONFIGURABLE_REST_TEMPLATE; -import static org.springframework.test.annotation.DirtiesContext.ClassMode.BEFORE_CLASS; -import static org.springframework.test.web.client.match.MockRestRequestMatchers.header; -import static org.springframework.test.web.client.match.MockRestRequestMatchers.jsonPath; -import static org.springframework.test.web.client.match.MockRestRequestMatchers.method; -import static org.springframework.test.web.client.match.MockRestRequestMatchers.requestTo; -import static org.springframework.test.web.client.response.MockRestResponseCreators.withStatus; -import static org.springframework.test.web.client.response.MockRestResponseCreators.withSuccess; +import com.google.gson.Gson; /** * @author Andrew Lamb (andrew.a.lamb@est.tech) @@ -106,10 +105,13 @@ public class EtsiSubscriptionNotificationControllerTest { private static final java.time.LocalDateTime TIMESTAMP = java.time.LocalDateTime.of(2020, 1, 1, 1, 1, 1, 1); private static final String VNFPKG_ID = UUID.randomUUID().toString(); private static final String VNFD_ID = UUID.randomUUID().toString(); + private static final String EXPECTED_VNF_PACKAGE_HREF = + "https://so-vnfm-adapter.onap:30406/so/vnfm-adapter/v1/vnfpkgm/v1/vnf_packages/" + VNFPKG_ID; + private static final String EXPECTED_SUBSCRIPTION_HREF = + "https://so-vnfm-adapter.onap:30406/so/vnfm-adapter/v1/vnfpkgm/v1/subscriptions/" + SUBSCRIPTION_ID; + private BasicHttpHeadersProvider basicHttpHeadersProvider; - private final Gson gson = new GsonBuilder().registerTypeAdapter(LocalDateTime.class, - new EtsiSubscriptionNotificationController.LocalDateTimeTypeAdapter()).create(); @Autowired @Qualifier(CONFIGURABLE_REST_TEMPLATE) @@ -163,7 +165,8 @@ public class EtsiSubscriptionNotificationControllerTest { .andExpect(jsonPath("$.subscriptionId").value(SUBSCRIPTION_ID)) .andExpect(jsonPath("$.timeStamp").value(TIME_STAMP_STRING_EXPECTED_FROM_ETSI_CATALOG)) .andExpect(jsonPath("$.vnfPkgId").value(VNFPKG_ID)).andExpect(jsonPath("$.vnfdId").value(VNFD_ID)) - .andExpect(jsonPath("$._links").value(buildPkgmLinks())) + .andExpect(jsonPath("$._links") + .value(buildPkgmLinks(EXPECTED_VNF_PACKAGE_HREF, EXPECTED_SUBSCRIPTION_HREF))) .andExpect(header("Authorization", EXPECTED_BASIC_AUTHORIZATION)).andRespond(withSuccess()); final ResponseEntity response = sendHttpPost(notification); @@ -292,7 +295,8 @@ public class EtsiSubscriptionNotificationControllerTest { jsonPath("$.changeType").value(PkgChangeNotification.ChangeTypeEnum.OP_STATE_CHANGE.toString())) .andExpect(jsonPath("$.operationalState") .value(PkgChangeNotification.OperationalStateEnum.ENABLED.toString())) - .andExpect(jsonPath("$._links").value(buildPkgmLinks())) + .andExpect(jsonPath("$._links") + .value(buildPkgmLinks(EXPECTED_VNF_PACKAGE_HREF, EXPECTED_SUBSCRIPTION_HREF))) .andExpect(header("Authorization", EXPECTED_BASIC_AUTHORIZATION)).andRespond(withSuccess()); final ResponseEntity response = sendHttpPost(notification); @@ -397,7 +401,8 @@ public class EtsiSubscriptionNotificationControllerTest { .andExpect(jsonPath("$.subscriptionId").value(SUBSCRIPTION_ID)) .andExpect(jsonPath("$.timeStamp").value(TIME_STAMP_STRING_EXPECTED_FROM_ETSI_CATALOG)) .andExpect(jsonPath("$.vnfPkgId").value(VNFPKG_ID)).andExpect(jsonPath("$.vnfdId").value(VNFD_ID)) - .andExpect(jsonPath("$._links").value(buildPkgmLinks())) + .andExpect(jsonPath("$._links") + .value(buildPkgmLinks(EXPECTED_VNF_PACKAGE_HREF, EXPECTED_SUBSCRIPTION_HREF))) .andExpect(header("Authorization", EXPECTED_BASIC_AUTHORIZATION)).andRespond(withSuccess()); final ResponseEntity response = sendHttpPost(notification); @@ -451,7 +456,9 @@ public class EtsiSubscriptionNotificationControllerTest { jsonPath("$.changeType").value(PkgChangeNotification.ChangeTypeEnum.OP_STATE_CHANGE.toString())) .andExpect(jsonPath("$.operationalState") .value(PkgChangeNotification.OperationalStateEnum.ENABLED.toString())) - .andExpect(jsonPath("$._links").value(buildPkgmLinks())).andRespond(withSuccess()); + .andExpect(jsonPath("$._links") + .value(buildPkgmLinks(EXPECTED_VNF_PACKAGE_HREF, EXPECTED_SUBSCRIPTION_HREF))) + .andRespond(withSuccess()); final ResponseEntity response = sendHttpPost(notification); @@ -526,17 +533,12 @@ public class EtsiSubscriptionNotificationControllerTest { } private PkgmLinks buildPkgmLinks() { - final PkgmLinks pkgmLinks = new PkgmLinks(); - - final NOTIFICATIONLINKSERIALIZER subscriptionLinkSerializer = new NOTIFICATIONLINKSERIALIZER(); - subscriptionLinkSerializer.setHref("subscription_href"); - pkgmLinks.setSubscription(subscriptionLinkSerializer); - - final NOTIFICATIONLINKSERIALIZER vnfPackageLinkSerializer = new NOTIFICATIONLINKSERIALIZER(); - vnfPackageLinkSerializer.setHref("vnf_package_href"); - pkgmLinks.setVnfPackage(vnfPackageLinkSerializer); + return buildPkgmLinks("vnf_package_href", "subscription_href"); + } - return pkgmLinks; + private PkgmLinks buildPkgmLinks(final String vnfPkgHref, final String subscriptionHref) { + return new PkgmLinks().vnfPackage(new NOTIFICATIONLINKSERIALIZER().href(vnfPkgHref)) + .subscription(new NOTIFICATIONLINKSERIALIZER().href(subscriptionHref)); } private PkgmSubscriptionRequest buildPkgmSubscriptionRequest( -- 2.16.6