Fixed some sonar warnings 79/4779/1
authorPatrikBuhr <patrik.buhr@est.tech>
Mon, 28 Sep 2020 07:15:13 +0000 (09:15 +0200)
committerPatrikBuhr <patrik.buhr@est.tech>
Mon, 28 Sep 2020 07:16:00 +0000 (09:16 +0200)
Improved code coverage in new code
Fixed some sonar warnings

Change-Id: Idbd68bcabf9c9bcb4e6d82fe5da3463831bef998
Issue-ID: NONRTRIC-173
Signed-off-by: PatrikBuhr <patrik.buhr@est.tech>
enrichment-coordinator-service/src/main/java/org/oransc/enrichment/repository/EiJob.java
enrichment-coordinator-service/src/test/java/org/oransc/enrichment/ApplicationTest.java
enrichment-coordinator-service/src/test/java/org/oransc/enrichment/clients/AsyncRestClientTest.java [new file with mode: 0644]

index b36e38d..bb880e7 100644 (file)
@@ -24,7 +24,7 @@ import org.immutables.gson.Gson;
 import org.immutables.value.Value;
 
 /**
- * Represents the dynamic information about a Near-RT RIC.
+ * Represents the dynamic information about a EI Job
  */
 @Value.Immutable
 @Gson.TypeAdapters
index 4997539..62eff12 100644 (file)
@@ -204,7 +204,7 @@ class ApplicationTest {
         assertThat(this.eiJobs.size()).isEqualTo(1);
         String url = ConsumerConsts.API_ROOT + "/eitypes/typeId/eijobs/jobId";
         restClient().delete(url).block();
-        assertThat(this.eiJobs.size()).isEqualTo(0);
+        assertThat(this.eiJobs.size()).isZero();
 
         ProducerSimulatorController.TestResults simulatorResults = this.producerSimulator.getTestResults();
         await().untilAsserted(() -> assertThat(simulatorResults.jobsStopped.size()).isEqualTo(1));
@@ -303,10 +303,9 @@ class ApplicationTest {
 
         assertThat(this.eiTypes.size()).isEqualTo(1);
         EiType type = this.eiTypes.getType(EI_TYPE_ID);
-        assertThat(type.getProducerIds().contains("eiProducerId")).isTrue();
+        assertThat(type.getProducerIds()).contains("eiProducerId");
         assertThat(this.eiProducers.size()).isEqualTo(1);
-        assertThat(this.eiProducers.get("eiProducerId").eiTypes().iterator().next().getId().equals(EI_TYPE_ID))
-            .isTrue();
+        assertThat(this.eiProducers.get("eiProducerId").eiTypes().iterator().next().getId()).isEqualTo(EI_TYPE_ID);
 
         resp = restClient().putForEntity(url, body).block();
         assertThat(resp.getStatusCode()).isEqualTo(HttpStatus.OK);
@@ -370,27 +369,43 @@ class ApplicationTest {
 
     @Test
     void testDeleteEiProducer() throws Exception {
-        String url = ProducerConsts.API_ROOT + "/eiproducers/eiProducerId";
-        String url2 = ProducerConsts.API_ROOT + "/eiproducers/eiProducerId2";
-        String body = gson.toJson(producerEiRegistratioInfo(EI_TYPE_ID));
-        restClient().putForEntity(url, body).block();
-        restClient().putForEntity(url2, body).block();
+        putEiProducerWithOneType("eiProducerId", EI_TYPE_ID);
+        putEiProducerWithOneType("eiProducerId2", EI_TYPE_ID);
+
         assertThat(this.eiProducers.size()).isEqualTo(2);
         EiType type = this.eiTypes.getType(EI_TYPE_ID);
-        assertThat(type.getProducerIds().contains("eiProducerId")).isTrue();
-        assertThat(type.getProducerIds().contains("eiProducerId2")).isTrue();
+        assertThat(type.getProducerIds()).contains("eiProducerId");
+        assertThat(type.getProducerIds()).contains("eiProducerId2");
         putEiJob(EI_TYPE_ID, "jobId");
         assertThat(this.eiJobs.size()).isEqualTo(1);
 
+        String url = ProducerConsts.API_ROOT + "/eiproducers/eiProducerId";
         restClient().deleteForEntity(url).block();
         assertThat(this.eiProducers.size()).isEqualTo(1);
-        assertThat(this.eiTypes.getType(EI_TYPE_ID).getProducerIds().contains("eiProducerId")).isFalse();
+        assertThat(this.eiTypes.getType(EI_TYPE_ID).getProducerIds()).doesNotContain("eiProducerId");
         assertThat(this.eiJobs.size()).isEqualTo(1);
 
+        String url2 = ProducerConsts.API_ROOT + "/eiproducers/eiProducerId2";
         restClient().deleteForEntity(url2).block();
-        assertThat(this.eiProducers.size()).isEqualTo(0);
-        assertThat(this.eiTypes.size()).isEqualTo(0);
-        assertThat(this.eiJobs.size()).isEqualTo(0);
+        assertThat(this.eiProducers.size()).isZero();
+        assertThat(this.eiTypes.size()).isZero();
+        assertThat(this.eiJobs.size()).isZero();
+    }
+
+    @Test
+    void testGetProducerEiType() throws JsonMappingException, JsonProcessingException, ServiceException {
+        putEiProducerWithOneType(EI_PRODUCER_ID, EI_TYPE_ID);
+        String url = ProducerConsts.API_ROOT + "/eitypes/" + EI_TYPE_ID;
+        ResponseEntity<String> resp = restClient().getForEntity(url).block();
+        assertThat(resp.getBody()).contains(EI_PRODUCER_ID);
+    }
+
+    @Test
+    void testGetProducerIdentifiers() throws JsonMappingException, JsonProcessingException, ServiceException {
+        putEiProducerWithOneType(EI_PRODUCER_ID, EI_TYPE_ID);
+        String url = ProducerConsts.API_ROOT + "/eiproducers";
+        ResponseEntity<String> resp = restClient().getForEntity(url).block();
+        assertThat(resp.getBody()).contains(EI_PRODUCER_ID);
     }
 
     ProducerEiTypeRegistrationInfo producerEiTypeRegistrationInfo(String typeId)
diff --git a/enrichment-coordinator-service/src/test/java/org/oransc/enrichment/clients/AsyncRestClientTest.java b/enrichment-coordinator-service/src/test/java/org/oransc/enrichment/clients/AsyncRestClientTest.java
new file mode 100644 (file)
index 0000000..e2273cf
--- /dev/null
@@ -0,0 +1,161 @@
+/*-
+ * ========================LICENSE_START=================================
+ * ONAP : ccsdk oran
+ * ======================================================================
+ * Copyright (C) 2019-2020 Nordix Foundation. 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.oransc.enrichment.clients;
+
+import io.netty.util.internal.logging.InternalLoggerFactory;
+import io.netty.util.internal.logging.JdkLoggerFactory;
+
+import java.io.IOException;
+
+import okhttp3.mockwebserver.MockResponse;
+import okhttp3.mockwebserver.MockWebServer;
+
+import org.junit.jupiter.api.AfterAll;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Test;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.MediaType;
+import org.springframework.web.reactive.function.client.WebClientResponseException;
+
+import reactor.core.publisher.Mono;
+import reactor.test.StepVerifier;
+import reactor.util.Loggers;
+
+class AsyncRestClientTest {
+    private static final String BASE_URL = "BaseUrl";
+    private static final String REQUEST_URL = "/test";
+    private static final String USERNAME = "username";
+    private static final String PASSWORD = "password";
+    private static final String TEST_JSON = "{\"type\":\"type1\"}";
+    private static final int SUCCESS_CODE = 200;
+    private static final int ERROR_CODE = 500;
+
+    private static MockWebServer mockWebServer;
+
+    private static AsyncRestClient clientUnderTest;
+
+    @BeforeAll
+    static void init() {
+        // skip a lot of unnecessary logs from MockWebServer
+        InternalLoggerFactory.setDefaultFactory(JdkLoggerFactory.INSTANCE);
+        Loggers.useJdkLoggers();
+        mockWebServer = new MockWebServer();
+        clientUnderTest = new AsyncRestClient(mockWebServer.url(BASE_URL).toString());
+    }
+
+    @AfterAll
+    static void tearDown() throws IOException {
+        mockWebServer.shutdown();
+    }
+
+    @Test
+    void testGetNoError() {
+        mockWebServer.enqueue(new MockResponse().setResponseCode(SUCCESS_CODE) //
+            .setHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE) //
+            .setBody(TEST_JSON));
+
+        Mono<String> returnedMono = clientUnderTest.get(REQUEST_URL);
+        StepVerifier.create(returnedMono).expectNext(TEST_JSON).expectComplete().verify();
+    }
+
+    @Test
+    void testGetError() {
+        mockWebServer.enqueue(new MockResponse().setResponseCode(ERROR_CODE));
+
+        Mono<String> returnedMono = clientUnderTest.get(REQUEST_URL);
+        StepVerifier.create(returnedMono)
+            .expectErrorMatches(throwable -> throwable instanceof WebClientResponseException).verify();
+    }
+
+    @Test
+    void testPutNoError() {
+        mockWebServer.enqueue(new MockResponse().setResponseCode(SUCCESS_CODE) //
+            .setHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE) //
+            .setBody(TEST_JSON));
+
+        Mono<String> returnedMono = clientUnderTest.put(REQUEST_URL, TEST_JSON);
+        StepVerifier.create(returnedMono).expectNext(TEST_JSON).expectComplete().verify();
+    }
+
+    @Test
+    void testPutError() {
+        mockWebServer.enqueue(new MockResponse().setResponseCode(ERROR_CODE));
+
+        Mono<String> returnedMono = clientUnderTest.put(REQUEST_URL, TEST_JSON);
+        StepVerifier.create(returnedMono)
+            .expectErrorMatches(throwable -> throwable instanceof WebClientResponseException).verify();
+    }
+
+    @Test
+    void testDeleteNoError() {
+        mockWebServer.enqueue(new MockResponse().setResponseCode(SUCCESS_CODE));
+
+        Mono<String> returnedMono = clientUnderTest.delete(REQUEST_URL);
+        StepVerifier.create(returnedMono).expectNext("").expectComplete().verify();
+    }
+
+    @Test
+    void testDeleteError() {
+        mockWebServer.enqueue(new MockResponse().setResponseCode(ERROR_CODE));
+
+        Mono<String> returnedMono = clientUnderTest.delete(REQUEST_URL);
+        StepVerifier.create(returnedMono)
+            .expectErrorMatches(throwable -> throwable instanceof WebClientResponseException).verify();
+    }
+
+    @Test
+    void testPostNoError() {
+        mockWebServer.enqueue(new MockResponse().setResponseCode(SUCCESS_CODE) //
+            .setHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE) //
+            .setBody(TEST_JSON));
+
+        Mono<String> returnedMono = clientUnderTest.post(REQUEST_URL, TEST_JSON);
+        StepVerifier.create(returnedMono).expectNext(TEST_JSON).expectComplete().verify();
+    }
+
+    @Test
+    void testPostError() {
+        mockWebServer.enqueue(new MockResponse().setResponseCode(ERROR_CODE));
+
+        Mono<String> returnedMono = clientUnderTest.post(REQUEST_URL, TEST_JSON);
+        StepVerifier.create(returnedMono)
+            .expectErrorMatches(throwable -> throwable instanceof WebClientResponseException).verify();
+    }
+
+    @Test
+    void testPostWithAuthHeaderNoError() {
+        mockWebServer.enqueue(new MockResponse().setResponseCode(SUCCESS_CODE) //
+            .setHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE) //
+            .setBody(TEST_JSON));
+
+        Mono<String> returnedMono = clientUnderTest.postWithAuthHeader(REQUEST_URL, TEST_JSON, USERNAME, PASSWORD);
+        StepVerifier.create(returnedMono).expectNext(TEST_JSON).expectComplete().verify();
+    }
+
+    @Test
+    void testPostWithAuthHeaderError() {
+        mockWebServer.enqueue(new MockResponse().setResponseCode(ERROR_CODE));
+
+        Mono<String> returnedMono = clientUnderTest.postWithAuthHeader(REQUEST_URL, TEST_JSON, USERNAME, PASSWORD);
+        StepVerifier.create(returnedMono)
+            .expectErrorMatches(throwable -> throwable instanceof WebClientResponseException).verify();
+    }
+}