Add test for ScheduleController; 20/89020/2
authorgrabinsk <maciej.grabinski@nokia.com>
Fri, 31 May 2019 09:23:13 +0000 (11:23 +0200)
committergrabinsk <maciej.grabinski@nokia.com>
Fri, 31 May 2019 12:27:50 +0000 (14:27 +0200)
moving web related logic out from ScheduleTasksRunner

Change-Id: I57c0311509ca94b639e3dc9978fbe602aec1f0c4
Issue-ID: DCAEGEN2-1544
Signed-off-by: grabinsk <maciej.grabinski@nokia.com>
prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/controllers/ScheduleController.java
prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/tasks/ScheduledTasksRunner.java
prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/controllers/AppInfoControllerTest.java
prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/controllers/ScheduleControllerTest.java [new file with mode: 0644]

index aa91365..a0aa17e 100644 (file)
@@ -60,15 +60,18 @@ public class ScheduleController {
     @ApiOperation(value = "Receiving stop scheduling worker request")
     public Mono<ResponseEntity<String>> stopTask() {
         LOGGER.trace("Receiving stop scheduling worker request");
-        return scheduledTasksRunner.getResponseFromCancellationOfTasks();
+        return Mono.defer(() -> {
+                    scheduledTasksRunner.cancelTasks();
+                    return Mono.just(new ResponseEntity<>("PRH Service has been stopped!", HttpStatus.OK));
+                }
+        );
     }
 
-    @ApiOperation(value = "Sends success or error response on starting task execution")
     private ResponseEntity<String> createStartTaskResponse(boolean wasScheduled) {
         if (wasScheduled) {
             return new ResponseEntity<>("PRH Service has been started!", HttpStatus.CREATED);
         } else {
-            return new ResponseEntity<>("PRH Service is still running!", HttpStatus.NOT_ACCEPTABLE);
+            return new ResponseEntity<>("PRH Service is already running!", HttpStatus.NOT_ACCEPTABLE);
         }
     }
 }
index e9c1810..bc13ddc 100644 (file)
@@ -20,7 +20,6 @@
 
 package org.onap.dcaegen2.services.prh.tasks;
 
-import io.swagger.annotations.ApiOperation;
 import java.time.Duration;
 import java.time.Instant;
 import java.util.ArrayList;
@@ -35,11 +34,8 @@ import org.slf4j.Marker;
 import org.slf4j.MarkerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Configuration;
-import org.springframework.http.HttpStatus;
-import org.springframework.http.ResponseEntity;
 import org.springframework.scheduling.TaskScheduler;
 import org.springframework.scheduling.annotation.EnableScheduling;
-import reactor.core.publisher.Mono;
 
 
 /**
@@ -70,16 +66,10 @@ public class ScheduledTasksRunner {
 
     /**
      * Function which have to stop tasks execution.
-     *
-     * @return response entity about status of cancellation operation
      */
-    @ApiOperation(value = "Get response on stopping task execution")
-    public synchronized Mono<ResponseEntity<String>> getResponseFromCancellationOfTasks() {
+    public synchronized void cancelTasks() {
         scheduledPrhTaskFutureList.forEach(x -> x.cancel(false));
         scheduledPrhTaskFutureList.clear();
-        return Mono.defer(() ->
-            Mono.just(new ResponseEntity<>("PRH Service has already been stopped!", HttpStatus.CREATED))
-        );
     }
 
     /**
@@ -87,9 +77,7 @@ public class ScheduledTasksRunner {
      *
      * @return status of operation execution: true - started, false - not started
      */
-
     @PostConstruct
-    @ApiOperation(value = "Start task if possible")
     public synchronized boolean tryToStartTask() {
         LOGGER.info(ENTRY, "Start scheduling PRH workflow");
         if (scheduledPrhTaskFutureList.isEmpty()) {
index 23a444c..1dba66a 100644 (file)
@@ -27,11 +27,13 @@ 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.annotation.DirtiesContext;
 import org.springframework.test.web.reactive.server.WebTestClient;
 
 import static org.mockito.Mockito.when;
 
 @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
+@DirtiesContext
 class AppInfoControllerTest {
 
     private static final String SAMPLE_GIT_INFO_CONTENT = "{ \"git.commit.id\" : \"37444e\" }";
diff --git a/prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/controllers/ScheduleControllerTest.java b/prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/controllers/ScheduleControllerTest.java
new file mode 100644 (file)
index 0000000..ebdec09
--- /dev/null
@@ -0,0 +1,75 @@
+/*
+ * ============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.tasks.ScheduledTasksRunner;
+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.http.HttpStatus;
+import org.springframework.test.annotation.DirtiesContext;
+import org.springframework.test.web.reactive.server.WebTestClient;
+
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
+@DirtiesContext
+class ScheduleControllerTest {
+
+    @MockBean
+    private ScheduledTasksRunner scheduledTasksRunner;
+
+    @Autowired
+    private WebTestClient webTestClient;
+
+    @Test
+    void startEndpointShouldAllowStartingPrhTasks() {
+        when(scheduledTasksRunner.tryToStartTask()).thenReturn(true);
+        webTestClient
+                .get().uri("/start")
+                .exchange()
+                .expectStatus().isCreated()
+                .expectBody(String.class).isEqualTo("PRH Service has been started!");
+    }
+
+    @Test
+    void whenPrhTasksAreAlreadyStarted_shouldRespondThatRequestWasNotAccepted() {
+        when(scheduledTasksRunner.tryToStartTask()).thenReturn(false);
+        webTestClient
+                .get().uri("/start")
+                .exchange()
+                .expectStatus().isEqualTo(HttpStatus.NOT_ACCEPTABLE)
+                .expectBody(String.class).isEqualTo("PRH Service is already running!");
+    }
+
+    @Test
+    void stopEndpointShouldAllowStoppingPrhTasks() {
+        webTestClient
+                .get().uri("/stopPrh")
+                .exchange()
+                .expectStatus().isOk()
+                .expectBody(String.class).isEqualTo("PRH Service has been stopped!");
+
+        verify(scheduledTasksRunner).cancelTasks();
+    }
+}
\ No newline at end of file