Change to JUnit5
[nonrtric.git] / policy-agent / src / test / java / org / oransc / policyagent / configuration / ApplicationConfigTest.java
index 0cbb395..830a821 100644 (file)
  * limitations under the License.
  * ========================LICENSE_END===================================
  */
+
 package org.oransc.policyagent.configuration;
 
+import static org.assertj.core.api.Assertions.assertThat;
 import static org.junit.Assert.assertTrue;
 import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.doReturn;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.spy;
-import static org.mockito.Mockito.doReturn;
-import java.io.ByteArrayInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.net.URL;
-import java.nio.charset.StandardCharsets;
-import java.util.Properties;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+
 import ch.qos.logback.classic.spi.ILoggingEvent;
 import ch.qos.logback.core.read.ListAppender;
 import com.google.common.base.Charsets;
@@ -39,11 +37,21 @@ import com.google.gson.JsonIOException;
 import com.google.gson.JsonObject;
 import com.google.gson.JsonParser;
 import com.google.gson.JsonSyntaxException;
-import org.junit.Test;
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.net.URL;
+import java.nio.charset.StandardCharsets;
+import java.util.Arrays;
+import java.util.Properties;
+import java.util.Vector;
 import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
 import org.onap.dcaegen2.services.sdk.rest.services.cbs.client.api.CbsClient;
 import org.onap.dcaegen2.services.sdk.rest.services.cbs.client.model.EnvProperties;
 import org.onap.dcaegen2.services.sdk.rest.services.cbs.client.model.ImmutableEnvProperties;
+import org.oransc.policyagent.exceptions.ServiceException;
 import org.oransc.policyagent.utils.LoggingUtils;
 import reactor.core.publisher.Flux;
 import reactor.core.publisher.Mono;
@@ -54,14 +62,52 @@ public class ApplicationConfigTest {
     private ApplicationConfig appConfigUnderTest;
     CbsClient cbsClient = mock(CbsClient.class);
 
+    public static final ImmutableRicConfig CORRECT_RIC_CONIFG = ImmutableRicConfig.builder() //
+        .name("ric1") //
+        .baseUrl("http://localhost:8080/") //
+        .managedElementIds(new Vector<String>(Arrays.asList("kista_1", "kista_2"))) //
+        .build();
 
     private static EnvProperties properties() {
         return ImmutableEnvProperties.builder() //
-                .consulHost("host") //
-                .consulPort(123) //
-                .cbsName("cbsName") //
-                .appName("appName") //
-                .build();
+            .consulHost("host") //
+            .consulPort(123) //
+            .cbsName("cbsName") //
+            .appName("appName") //
+            .build();
+    }
+
+    @Test
+    public void whenTheConfigurationFits() throws IOException, ServiceException {
+
+        appConfigUnderTest = spy(ApplicationConfig.class);
+        appConfigUnderTest.systemEnvironment = new Properties();
+        // When
+        doReturn(getCorrectJson()).when(appConfigUnderTest).createInputStream(any());
+        appConfigUnderTest.initialize();
+
+        // Then
+        verify(appConfigUnderTest, times(1)).loadConfigurationFromFile(any());
+
+        Vector<RicConfig> ricConfigs = appConfigUnderTest.getRicConfigs();
+        RicConfig ricConfig = ricConfigs.firstElement();
+        assertThat(ricConfigs).isNotNull();
+        assertThat(ricConfig).isEqualTo(CORRECT_RIC_CONIFG);
+    }
+
+    @Test
+    public void whenFileIsExistsButJsonIsIncorrect() throws IOException, ServiceException {
+
+        appConfigUnderTest = spy(ApplicationConfig.class);
+        appConfigUnderTest.systemEnvironment = new Properties();
+
+        // When
+        doReturn(getIncorrectJson()).when(appConfigUnderTest).createInputStream(any());
+        appConfigUnderTest.loadConfigurationFromFile(any());
+
+        // Then
+        verify(appConfigUnderTest, times(1)).loadConfigurationFromFile(any());
+        Assertions.assertNull(appConfigUnderTest.getRicConfigs());
     }
 
     @Test
@@ -73,9 +119,7 @@ public class ApplicationConfigTest {
         final ListAppender<ILoggingEvent> logAppender = LoggingUtils.getLogListAppender(ApplicationConfig.class);
         Flux<ApplicationConfig> task = appConfigUnderTest.createRefreshTask();
 
-        StepVerifier.create(task)
-                .expectSubscription()
-                .verifyComplete();
+        StepVerifier.create(task).expectSubscription().verifyComplete();
 
         assertTrue(logAppender.list.toString().contains("$CONSUL_HOST environment has not been defined"));
     }
@@ -96,12 +140,12 @@ public class ApplicationConfigTest {
         Flux<ApplicationConfig> task = appConfigUnderTest.createRefreshTask();
 
         StepVerifier //
-                .create(task) //
-                .expectSubscription() //
-                .verifyComplete();
+            .create(task) //
+            .expectSubscription() //
+            .verifyComplete();
 
         assertTrue(
-                logAppender.list.toString().contains("Could not refresh application configuration java.io.IOException"));
+            logAppender.list.toString().contains("Could not refresh application configuration java.io.IOException"));
     }
 
     @Test
@@ -119,10 +163,10 @@ public class ApplicationConfigTest {
         Flux<ApplicationConfig> task = appConfigUnderTest.createRefreshTask();
 
         StepVerifier //
-                .create(task) //
-                .expectSubscription() //
-                .expectNext(appConfigUnderTest) //
-                .verifyComplete();
+            .create(task) //
+            .expectSubscription() //
+            .expectNext(appConfigUnderTest) //
+            .verifyComplete();
 
         Assertions.assertNotNull(appConfigUnderTest.getRicConfigs());
     }
@@ -138,4 +182,11 @@ public class ApplicationConfigTest {
         return new ByteArrayInputStream((string.getBytes(StandardCharsets.UTF_8)));
     }
 
+    private static InputStream getIncorrectJson() {
+        String string = "{" + //
+            "    \"config\": {" + //
+            "        \"ric\": {"; //
+        return new ByteArrayInputStream((string.getBytes(StandardCharsets.UTF_8)));
+    }
+
 }