Configs cleanup 63/88863/1
authorgrabinsk <maciej.grabinski@nokia.com>
Wed, 29 May 2019 13:06:10 +0000 (15:06 +0200)
committergrabinsk <maciej.grabinski@nokia.com>
Thu, 30 May 2019 10:38:26 +0000 (12:38 +0200)
Adding test for AppInfoController

Change-Id: Ib793cf20a17bcca56f5fe2162048c1b95409da01
Issue-ID: DCAEGEN2-1544
Signed-off-by: grabinsk <maciej.grabinski@nokia.com>
prh-app-server/pom.xml
prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/configuration/CbsConfiguration.java
prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/configuration/Config.java
prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/configuration/PrhAppConfig.java
prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/controllers/AppInfoController.java
prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/controllers/AppInfoControllerTest.java [new file with mode: 0644]
prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/integration/ServiceMockProvider.java [deleted file]
prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/tasks/AaiPublisherTaskTestConfig.java [moved from prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/tasks/AaiPublisherTaskSpy.java with 80% similarity]
prh-app-server/src/test/resources/application.yaml [new file with mode: 0644]

index 5e88011..5fee924 100644 (file)
       <scope>test</scope>
     </dependency>
     <dependency>
-      <groupId>org.springframework</groupId>
-      <artifactId>spring-test</artifactId>
+      <groupId>org.springframework.boot</groupId>
+      <artifactId>spring-boot-starter-test</artifactId>
       <scope>test</scope>
+      <exclusions>
+        <exclusion>
+          <groupId>junit</groupId>
+          <artifactId>junit</artifactId>
+        </exclusion>
+      </exclusions>
     </dependency>
     <dependency>
       <groupId>io.projectreactor</groupId>
index 0cf07a0..e412bff 100644 (file)
@@ -33,12 +33,7 @@ import org.onap.dcaegen2.services.sdk.rest.services.dmaap.client.model.MessageRo
 import org.onap.dcaegen2.services.sdk.rest.services.model.logging.RequestDiagnosticContext;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.context.properties.EnableConfigurationProperties;
-import org.springframework.context.annotation.ComponentScan;
 import org.springframework.context.annotation.Configuration;
-import org.springframework.context.annotation.Primary;
-import org.springframework.scheduling.annotation.EnableScheduling;
 import reactor.core.publisher.Flux;
 import reactor.core.publisher.Mono;
 import reactor.core.scheduler.Schedulers;
@@ -46,11 +41,7 @@ import reactor.core.scheduler.Schedulers;
 import java.util.Optional;
 
 @Configuration
-@ComponentScan("org.onap.dcaegen2.services.sdk.rest.services.cbs.client.providers")
-@EnableConfigurationProperties
-@EnableScheduling
-@Primary
-public class CbsConfiguration extends PrhAppConfig {
+public class CbsConfiguration implements Config {
     private static final Logger LOGGER = LoggerFactory.getLogger(CbsConfiguration.class);
     private AaiClientConfiguration aaiClientCBSConfiguration;
     private MessageRouterPublisher messageRouterPublisher;
@@ -59,8 +50,11 @@ public class CbsConfiguration extends PrhAppConfig {
     private MessageRouterSubscribeRequest messageRouterCBSSubscribeRequest;
     private MessageRouterPublishRequest messageRouterCBSUpdatePublishRequest;
 
-    @Autowired
-    private ConsulConfigFileReader consulConfigFileReader;
+    private final ConsulConfigFileReader consulConfigFileReader;
+
+    public CbsConfiguration(ConsulConfigFileReader consulConfigFileReader) {
+        this.consulConfigFileReader = consulConfigFileReader;
+    }
 
     public void runTask() {
         Flux.defer(this::resolveEnvProperties)
index 53ccdc0..5fe6d70 100644 (file)
@@ -25,15 +25,12 @@ import org.onap.dcaegen2.services.sdk.rest.services.dmaap.client.api.MessageRout
 import org.onap.dcaegen2.services.sdk.rest.services.dmaap.client.api.MessageRouterSubscriber;
 import org.onap.dcaegen2.services.sdk.rest.services.dmaap.client.model.MessageRouterPublishRequest;
 import org.onap.dcaegen2.services.sdk.rest.services.dmaap.client.model.MessageRouterSubscribeRequest;
-import org.springframework.core.io.Resource;
 
 /**
  * @author <a href="mailto:przemyslaw.wasala@nokia.com">Przemysław Wąsala</a> on 4/25/18
  */
 public interface Config {
 
-    Resource getGitInfo();
-
     MessageRouterSubscribeRequest getMessageRouterSubscribeRequest();
 
     AaiClientConfiguration getAaiClientConfiguration();
index 5ef00dd..71d707b 100644 (file)
@@ -23,8 +23,6 @@ package org.onap.dcaegen2.services.prh.configuration;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Value;
-import org.springframework.boot.context.properties.ConfigurationProperties;
-import org.springframework.boot.context.properties.EnableConfigurationProperties;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.core.io.Resource;
 import org.springframework.util.StreamUtils;
@@ -37,9 +35,7 @@ import java.nio.charset.Charset;
  * @author <a href="mailto:przemyslaw.wasala@nokia.com">Przemysław Wąsala</a> on 4/9/18
  */
 @Configuration
-@EnableConfigurationProperties
-@ConfigurationProperties("app")
-public abstract class PrhAppConfig implements Config {
+public class PrhAppConfig {
     private static final Logger LOGGER = LoggerFactory.getLogger(PrhAppConfig.class);
 
     @Value("classpath:git_info.json")
@@ -47,10 +43,11 @@ public abstract class PrhAppConfig implements Config {
 
     @PostConstruct
     private void printGitInfo() throws IOException {
-        LOGGER.debug("Git info={}", StreamUtils.copyToString(gitInfo.getInputStream(), Charset.defaultCharset()));
+        if(LOGGER.isDebugEnabled()) {
+            LOGGER.debug("Git info={}", StreamUtils.copyToString(gitInfo.getInputStream(), Charset.defaultCharset()));
+        }
     }
 
-    @Override
     public Resource getGitInfo() {
         return gitInfo;
     }
index 9a49dee..7475814 100644 (file)
 
 package org.onap.dcaegen2.services.prh.controllers;
 
-import io.swagger.annotations.*;
-import org.onap.dcaegen2.services.prh.configuration.Config;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiResponse;
+import io.swagger.annotations.ApiResponses;
+import org.onap.dcaegen2.services.prh.configuration.PrhAppConfig;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.core.io.Resource;
-import org.springframework.http.*;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.MediaType;
+import org.springframework.http.ResponseEntity;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RestController;
 import reactor.core.publisher.Mono;
@@ -39,11 +43,10 @@ import reactor.core.publisher.Mono;
 public class AppInfoController {
 
     private static final Logger LOGGER = LoggerFactory.getLogger(AppInfoController.class);
-    private final Resource gitInfo;
+    private final PrhAppConfig config;
 
-    @Autowired
-    public AppInfoController(Config config) {
-        gitInfo = config.getGitInfo();
+    public AppInfoController(PrhAppConfig config) {
+        this.config = config;
     }
 
     @GetMapping(value = "heartbeat", produces = MediaType.TEXT_PLAIN_VALUE)
@@ -58,6 +61,6 @@ public class AppInfoController {
     @GetMapping(value = "version", produces = MediaType.APPLICATION_JSON_VALUE)
     @ApiOperation("Returns version information")
     public Mono<Resource> version() {
-        return Mono.defer(() -> Mono.just(gitInfo));
+        return Mono.defer(() -> Mono.just(config.getGitInfo()));
     }
 }
diff --git a/prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/controllers/AppInfoControllerTest.java b/prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/controllers/AppInfoControllerTest.java
new file mode 100644 (file)
index 0000000..23a444c
--- /dev/null
@@ -0,0 +1,67 @@
+/*
+ * ============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.controllers;
+
+import org.junit.jupiter.api.Test;
+import org.onap.dcaegen2.services.prh.configuration.PrhAppConfig;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.boot.test.mock.mockito.MockBean;
+import org.springframework.core.io.ByteArrayResource;
+import org.springframework.http.MediaType;
+import org.springframework.test.web.reactive.server.WebTestClient;
+
+import static org.mockito.Mockito.when;
+
+@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
+class AppInfoControllerTest {
+
+    private static final String SAMPLE_GIT_INFO_CONTENT = "{ \"git.commit.id\" : \"37444e\" }";
+
+    @MockBean
+    private PrhAppConfig prhAppConfig;
+
+    @Autowired
+    private WebTestClient webTestClient;
+
+    @Test
+    void shouldProvideHeartbeatResponse() {
+        webTestClient
+                .get().uri("/heartbeat")
+                .accept(MediaType.TEXT_PLAIN)
+                .exchange()
+                .expectStatus().isOk()
+                .expectBody(String.class).isEqualTo("alive");
+    }
+
+
+    @Test
+    void shouldProvideVersionInfo() {
+        when(prhAppConfig.getGitInfo()).thenReturn(new ByteArrayResource(SAMPLE_GIT_INFO_CONTENT.getBytes()));
+
+        webTestClient
+                .get().uri("/version")
+                .accept(MediaType.APPLICATION_JSON)
+                .exchange()
+                .expectStatus().isOk()
+                .expectBody(String.class).isEqualTo(SAMPLE_GIT_INFO_CONTENT);
+    }
+}
\ No newline at end of file
diff --git a/prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/integration/ServiceMockProvider.java b/prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/integration/ServiceMockProvider.java
deleted file mode 100644 (file)
index 2660e3e..0000000
+++ /dev/null
@@ -1,45 +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.mock;
-
-import org.onap.dcaegen2.services.prh.configuration.PrhAppConfig;
-import org.onap.dcaegen2.services.prh.model.ConsumerDmaapModel;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-
-/**
- * @author <a href="mailto:przemyslaw.wasala@nokia.com">Przemysław Wąsala</a> on 7/10/18
- */
-@Configuration
-class ServiceMockProvider {
-
-    @Bean
-    public PrhAppConfig getPrhAppConfig() {
-        return mock(PrhAppConfig.class);
-    }
-
-    @Bean
-    public ConsumerDmaapModel getRequestDetails() {
-        return mock(ConsumerDmaapModel.class);
-    }
-}
@@ -21,7 +21,6 @@
 package org.onap.dcaegen2.services.prh.tasks;
 
 import org.onap.dcaegen2.services.prh.configuration.CbsConfiguration;
-import org.onap.dcaegen2.services.prh.model.ConsumerDmaapModel;
 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;
@@ -30,7 +29,6 @@ import org.springframework.context.annotation.Primary;
 
 import static org.mockito.Mockito.doReturn;
 import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.spy;
 
 
 
@@ -38,22 +36,18 @@ import static org.mockito.Mockito.spy;
  * @author <a href="mailto:przemyslaw.wasala@nokia.com">Przemysław Wąsala</a> on 4/13/18
  */
 @Configuration
-public class AaiPublisherTaskSpy {
+public class AaiPublisherTaskTestConfig {
 
     /**
      * Mocking bean for tests.
-     *
-     * @return A&AI ProducerTask spy
      */
     @Bean
     @Primary
     public AaiProducerTask registerSimpleAaiPublisherTask() {
-        CbsConfiguration cbsConfiguration = spy(CbsConfiguration.class);
-        ConsumerDmaapModel consumerDmaapModel = spy(ConsumerDmaapModel.class);
+        CbsConfiguration cbsConfiguration = mock(CbsConfiguration.class);
         doReturn(mock(AaiClientConfiguration.class)).when(cbsConfiguration).getAaiClientConfiguration();
         AaiHttpPatchClient aaiReactiveHttpPatchClient = mock(AaiHttpPatchClient.class);
-        AaiProducerTaskImpl aaiProducerTask = spy(new AaiProducerTaskImpl(aaiReactiveHttpPatchClient));
 
-        return aaiProducerTask;
+        return new AaiProducerTaskImpl(aaiReactiveHttpPatchClient);
     }
 }
diff --git a/prh-app-server/src/test/resources/application.yaml b/prh-app-server/src/test/resources/application.yaml
new file mode 100644 (file)
index 0000000..90385b2
--- /dev/null
@@ -0,0 +1,3 @@
+spring:
+  profiles:
+    active: prod
\ No newline at end of file