diff options
Diffstat (limited to 'prh-app-server/src/test/java')
-rw-r--r-- | prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/integration/PrhWorkflowIntegrationTest.java | 124 | ||||
-rw-r--r-- | prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/integration/PrhWorkflowSchedulingIntegrationTest.java (renamed from prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/tasks/CbsConfigTestConfig.java) | 31 | ||||
-rw-r--r-- | prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/integration/ScheduledXmlContextITest.java | 60 | ||||
-rw-r--r-- | prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/tasks/AaiPublisherTaskTestConfig.java | 53 | ||||
-rw-r--r-- | prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/tasks/DmaapConsumerTaskTestConfig.java | 50 | ||||
-rw-r--r-- | prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/tasks/DmaapProducerTaskTestConfig.java | 53 | ||||
-rw-r--r-- | prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/tasks/ScheduleControllerSpy.java | 74 |
7 files changed, 143 insertions, 302 deletions
diff --git a/prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/integration/PrhWorkflowIntegrationTest.java b/prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/integration/PrhWorkflowIntegrationTest.java new file mode 100644 index 00000000..672cfc47 --- /dev/null +++ b/prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/integration/PrhWorkflowIntegrationTest.java @@ -0,0 +1,124 @@ +/* + * ============LICENSE_START======================================================= + * PNF-REGISTRATION-HANDLER + * ================================================================================ + * Copyright (C) 2019 NOKIA Intellectual Property. All rights reserved. + * ================================================================================ + * 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. + * ============LICENSE_END========================================================= + */ + +package org.onap.dcaegen2.services.prh.integration; + +import com.github.tomakehurst.wiremock.client.WireMock; +import com.google.gson.Gson; +import com.google.gson.JsonObject; +import com.jayway.jsonpath.JsonPath; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.onap.dcaegen2.services.prh.MainApp; +import org.onap.dcaegen2.services.prh.configuration.CbsConfiguration; +import org.onap.dcaegen2.services.prh.tasks.ScheduledTasks; +import org.onap.dcaegen2.services.prh.tasks.ScheduledTasksRunner; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.boot.test.mock.mockito.MockBean; +import org.springframework.cloud.contract.wiremock.AutoConfigureWireMock; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Import; + +import java.nio.file.Files; +import java.nio.file.Paths; + +import static com.github.tomakehurst.wiremock.client.WireMock.*; +import static java.lang.ClassLoader.getSystemResource; +import static java.util.Collections.singletonList; + + +@SpringBootTest +@AutoConfigureWireMock(port = 0) +class PrhWorkflowIntegrationTest { + + @Autowired + private ScheduledTasks scheduledTasks; + + @MockBean + private ScheduledTasksRunner scheduledTasksRunner; // just to disable scheduling - some configurability in ScheduledTaskRunner not to start tasks at app startup would be welcome + + + @Configuration + @Import(MainApp.class) + static class CbsConfigTestConfig { + + @Value("http://localhost:${wiremock.server.port}") + private String wiremockServerAddress; + + @Bean + public CbsConfiguration cbsConfiguration() { + JsonObject cbsConfigJson = new Gson().fromJson(getResourceContent("configurationFromCbs.json") + .replaceAll("https?://dmaap-mr[\\w.]*:\\d+", wiremockServerAddress) + .replaceAll("https?://aai[\\w.]*:\\d+", wiremockServerAddress), + JsonObject.class); + + CbsConfiguration cbsConfiguration = new CbsConfiguration(); + cbsConfiguration.parseCBSConfig(cbsConfigJson); + return cbsConfiguration; + } + } + + @BeforeEach + void resetWireMock() { + WireMock.reset(); + } + + + @Test + void whenThereAreNoEventsInDmaap_WorkflowShouldFinish() { + stubFor(get(urlEqualTo("/events/unauthenticated.VES_PNFREG_OUTPUT/OpenDCAE-c12/c12")) + .willReturn(aResponse().withBody("[]"))); + + scheduledTasks.scheduleMainPrhEventTask(); + + verify(0, anyRequestedFor(urlPathMatching("/aai.*"))); + verify(0, postRequestedFor(urlPathMatching("/events.*"))); + } + + + @Test + void whenThereIsAnEventsInDmaap_ShouldSendPnfReadyNotification() { + String event = getResourceContent("integration/event.json"); + String pnfName = JsonPath.read(event, "$.event.commonEventHeader.sourceName"); + + stubFor(get(urlEqualTo("/events/unauthenticated.VES_PNFREG_OUTPUT/OpenDCAE-c12/c12")) + .willReturn(ok().withBody(new Gson().toJson(singletonList(event))))); + stubFor(get(urlEqualTo("/aai/v12/network/pnfs/pnf/" + pnfName)).willReturn(ok().withBody("{}"))); + stubFor(patch(urlEqualTo("/aai/v12/network/pnfs/pnf/" + pnfName))); + stubFor(post(urlEqualTo("/events/unauthenticated.PNF_READY"))); + + scheduledTasks.scheduleMainPrhEventTask(); + + verify(1, postRequestedFor(urlEqualTo("/events/unauthenticated.PNF_READY")) + .withRequestBody(matchingJsonPath("$[0].correlationId", equalTo(pnfName)))); + } + + + private static String getResourceContent(String resourceName) { + try { + return new String(Files.readAllBytes(Paths.get(getSystemResource(resourceName).toURI()))); + } catch (Exception e) { + throw new RuntimeException("failed loading content of '" + resourceName + "'", e); + } + } +} diff --git a/prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/tasks/CbsConfigTestConfig.java b/prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/integration/PrhWorkflowSchedulingIntegrationTest.java index 9e3ef2e1..44dcabfa 100644 --- a/prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/tasks/CbsConfigTestConfig.java +++ b/prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/integration/PrhWorkflowSchedulingIntegrationTest.java @@ -1,8 +1,8 @@ /* * ============LICENSE_START======================================================= - * PROJECT + * PNF-REGISTRATION-HANDLER * ================================================================================ - * Copyright (C) 2018 NOKIA Intellectual Property. All rights reserved. + * Copyright (C) 2019 NOKIA Intellectual Property. All rights reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -18,17 +18,24 @@ * ============LICENSE_END========================================================= */ -package org.onap.dcaegen2.services.prh.tasks; +package org.onap.dcaegen2.services.prh.integration; -import org.onap.dcaegen2.services.prh.configuration.CbsConfiguration; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; +import org.junit.jupiter.api.Test; +import org.onap.dcaegen2.services.prh.tasks.ScheduledTasks; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.boot.test.mock.mockito.MockBean; -@Configuration -public class CbsConfigTestConfig { +import static org.mockito.Mockito.verify; - @Bean - public CbsConfiguration cbsConfiguration() { - return new CbsConfiguration(); + +@SpringBootTest +class PrhWorkflowSchedulingIntegrationTest { + + @MockBean + private ScheduledTasks scheduledTasks; + + @Test + void prhWorkflowShouldBeExecutedRightAfterApplicationStart() { + verify(scheduledTasks).scheduleMainPrhEventTask(); } -} +}
\ No newline at end of file diff --git a/prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/integration/ScheduledXmlContextITest.java b/prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/integration/ScheduledXmlContextITest.java deleted file mode 100644 index e0198536..00000000 --- a/prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/integration/ScheduledXmlContextITest.java +++ /dev/null @@ -1,60 +0,0 @@ -/* - * ============LICENSE_START======================================================= - * PROJECT - * ================================================================================ - * Copyright (C) 2018 NOKIA Intellectual Property. All rights reserved. - * ================================================================================ - * 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. - * ============LICENSE_END========================================================= - */ - -package org.onap.dcaegen2.services.prh.integration; - -import static org.mockito.Mockito.atLeast; -import static org.mockito.Mockito.verify; - -import java.util.concurrent.Executors; -import java.util.concurrent.ScheduledExecutorService; -import java.util.concurrent.TimeUnit; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.ExtendWith; -import org.mockito.junit.jupiter.MockitoExtension; -import org.onap.dcaegen2.services.prh.tasks.ScheduledTasks; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.context.annotation.Configuration; -import org.springframework.test.context.ContextConfiguration; -import org.springframework.test.context.junit.jupiter.SpringExtension; - -/** - * @author <a href="mailto:przemyslaw.wasala@nokia.com">Przemysław Wąsala</a> on 3/27/18 - */ -@Configuration -@ExtendWith({MockitoExtension.class, SpringExtension.class}) -@ContextConfiguration(locations = "classpath:scheduled-context.xml") -class ScheduledXmlContextITest { - - private static final int WAIT_FOR_SCHEDULING = 1; - - @Autowired - private ScheduledTasks scheduledTask; - - @Test - void testScheduling() { - final ScheduledExecutorService executorService = Executors.newSingleThreadScheduledExecutor(); - executorService.scheduleWithFixedDelay(this::verifyDmaapConsumerTask, 0, WAIT_FOR_SCHEDULING, TimeUnit.SECONDS); - } - - private void verifyDmaapConsumerTask() { - verify(scheduledTask, atLeast(1)).scheduleMainPrhEventTask(); - } -} diff --git a/prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/tasks/AaiPublisherTaskTestConfig.java b/prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/tasks/AaiPublisherTaskTestConfig.java deleted file mode 100644 index fe3a3ae3..00000000 --- a/prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/tasks/AaiPublisherTaskTestConfig.java +++ /dev/null @@ -1,53 +0,0 @@ -/* - * ============LICENSE_START======================================================= - * PROJECT - * ================================================================================ - * Copyright (C) 2018 NOKIA Intellectual Property. All rights reserved. - * ================================================================================ - * 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. - * ============LICENSE_END========================================================= - */ - -package org.onap.dcaegen2.services.prh.tasks; - -import org.onap.dcaegen2.services.prh.configuration.CbsConfiguration; -import org.onap.dcaegen2.services.sdk.rest.services.aai.client.config.AaiClientConfiguration; -import org.onap.dcaegen2.services.sdk.rest.services.aai.client.service.http.patch.AaiHttpPatchClient; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.Primary; - -import static org.mockito.Mockito.doReturn; -import static org.mockito.Mockito.mock; - - - -/** - * @author <a href="mailto:przemyslaw.wasala@nokia.com">Przemysław Wąsala</a> on 4/13/18 - */ -@Configuration -public class AaiPublisherTaskTestConfig { - - /** - * Mocking bean for tests. - */ - @Bean - @Primary - public AaiProducerTask registerSimpleAaiPublisherTask() { - CbsConfiguration cbsConfiguration = mock(CbsConfiguration.class); - doReturn(mock(AaiClientConfiguration.class)).when(cbsConfiguration).getAaiClientConfiguration(); - AaiHttpPatchClient aaiReactiveHttpPatchClient = mock(AaiHttpPatchClient.class); - - return new AaiProducerTaskImpl(aaiReactiveHttpPatchClient); - } -} diff --git a/prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/tasks/DmaapConsumerTaskTestConfig.java b/prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/tasks/DmaapConsumerTaskTestConfig.java deleted file mode 100644 index 29290aed..00000000 --- a/prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/tasks/DmaapConsumerTaskTestConfig.java +++ /dev/null @@ -1,50 +0,0 @@ -/* - * ============LICENSE_START======================================================= - * PROJECT - * ================================================================================ - * Copyright (C) 2018 NOKIA Intellectual Property. All rights reserved. - * ================================================================================ - * 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. - * ============LICENSE_END========================================================= - */ - -package org.onap.dcaegen2.services.prh.tasks; - -import org.onap.dcaegen2.services.prh.configuration.CbsConfiguration; -import org.onap.dcaegen2.services.prh.service.DmaapConsumerJsonParser; -import org.onap.dcaegen2.services.sdk.rest.services.dmaap.client.model.MessageRouterPublishRequest; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.Primary; - -import static org.mockito.Mockito.doReturn; -import static org.mockito.Mockito.mock; - -/** - * @author <a href="mailto:przemyslaw.wasala@nokia.com">Przemysław Wąsala</a> on 3/27/18 - */ -@Configuration -public class DmaapConsumerTaskTestConfig { - - /** - * Mocking bean for tests. - */ - @Bean - @Primary - public DmaapConsumerTask registerSimpleDmaapConsumerTask() { - CbsConfiguration cbsConfiguration = mock(CbsConfiguration.class); - DmaapConsumerJsonParser dmaapConsumerJsonParser = mock(DmaapConsumerJsonParser.class); - doReturn(mock(MessageRouterPublishRequest.class)).when(cbsConfiguration).getMessageRouterPublishRequest(); - return new DmaapConsumerTaskImpl(cbsConfiguration, dmaapConsumerJsonParser); - } -} diff --git a/prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/tasks/DmaapProducerTaskTestConfig.java b/prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/tasks/DmaapProducerTaskTestConfig.java deleted file mode 100644 index a6697163..00000000 --- a/prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/tasks/DmaapProducerTaskTestConfig.java +++ /dev/null @@ -1,53 +0,0 @@ -/* - * ============LICENSE_START======================================================= - * PROJECT - * ================================================================================ - * Copyright (C) 2018 NOKIA Intellectual Property. All rights reserved. - * ================================================================================ - * 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. - * ============LICENSE_END========================================================= - */ - -package org.onap.dcaegen2.services.prh.tasks; - -import org.onap.dcaegen2.services.prh.configuration.CbsConfiguration; -import org.onap.dcaegen2.services.sdk.rest.services.dmaap.client.api.MessageRouterPublisher; -import org.onap.dcaegen2.services.sdk.rest.services.dmaap.client.model.MessageRouterPublishRequest; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.Primary; - -import java.util.function.Supplier; - -import static org.mockito.Mockito.doReturn; -import static org.mockito.Mockito.mock; - -/** - * @author <a href="mailto:przemyslaw.wasala@nokia.com">Przemysław Wąsala</a> on 4/13/18 - */ -@Configuration -public class DmaapProducerTaskTestConfig { - - /** - * Mocking bean for tests. - */ - @Bean - @Primary - public DmaapPublisherTask registerSimpleDmaapPublisherTask() { - final CbsConfiguration cbsConfiguration = mock(CbsConfiguration.class); - final Supplier<MessageRouterPublishRequest> configSupplier = cbsConfiguration::getMessageRouterPublishRequest; - doReturn(mock(MessageRouterPublishRequest.class)).when(cbsConfiguration).getMessageRouterPublishRequest(); - MessageRouterPublisher messageRouterPublisher = mock(MessageRouterPublisher.class); - return new DmaapPublisherTaskImpl(configSupplier, () -> messageRouterPublisher); - } -} diff --git a/prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/tasks/ScheduleControllerSpy.java b/prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/tasks/ScheduleControllerSpy.java deleted file mode 100644 index 8d41ec63..00000000 --- a/prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/tasks/ScheduleControllerSpy.java +++ /dev/null @@ -1,74 +0,0 @@ -/* - * ============LICENSE_START======================================================= - * PNF-REGISTRATION-HANDLER - * ================================================================================ - * Copyright (C) 2018 NOKIA Intellectual Property. All rights reserved. - * ================================================================================ - * 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. - * ============LICENSE_END========================================================= - */ - -package org.onap.dcaegen2.services.prh.tasks; - -import static org.mockito.Mockito.spy; - -import java.util.Map; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Qualifier; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.Primary; - -/** - * @author <a href="mailto:przemyslaw.wasala@nokia.com">Przemysław Wąsala</a> on 4/5/18 - */ -@Configuration -public class ScheduleControllerSpy { - - @Autowired - private DmaapConsumerTask dmaapConsumerTaskImplSpy; - - @Qualifier("ReadyPublisherTask") - @Autowired - private DmaapPublisherTask dmaapReadyPublisherTaskImplSpy; - - @Qualifier("UpdatePublisherTask") - @Autowired - private DmaapPublisherTask dmaapUpdatePublisherTaskImplSpy; - - @Autowired - private AaiQueryTask aaiQueryTaskImplSpy; - - @Autowired - private AaiProducerTask aaiPublisherTaskImplSpy; - - @Autowired - private BbsActionsTask bbsActionsTaskImplSpy; - - @Autowired - private Map<String, String> mdcContextMap; - - @Bean - @Primary - public ScheduledTasks registerSimpleScheduledTask() { - return spy(new ScheduledTasks( - dmaapConsumerTaskImplSpy, - dmaapReadyPublisherTaskImplSpy, - dmaapUpdatePublisherTaskImplSpy, - aaiQueryTaskImplSpy, - aaiPublisherTaskImplSpy, - bbsActionsTaskImplSpy, - mdcContextMap)); - } -} |