Update baseUrl of pms_v2.0
[portal/nonrtric-controlpanel.git] / webapp-backend / src / test / java / org / oransc / portal / nonrtric / controlpanel / eiproducerapi / EiProducerApiImplTest.java
index d478d45..1f4c21b 100644 (file)
  */
 package org.oransc.portal.nonrtric.controlpanel.eiproducerapi;
 
+import static org.junit.Assert.assertThrows;
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertTrue;
 import static org.mockito.ArgumentMatchers.eq;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
+
+import com.google.gson.GsonBuilder;
+import com.google.gson.JsonSyntaxException;
+
 import java.util.Arrays;
+import java.util.List;
+
 import org.junit.jupiter.api.Test;
+import org.oransc.portal.nonrtric.controlpanel.model.JobInfo;
+import org.oransc.portal.nonrtric.controlpanel.model.ProducerRegistrationInfo;
+import org.oransc.portal.nonrtric.controlpanel.model.ProducerStatusInfo;
 import org.oransc.portal.nonrtric.controlpanel.util.AsyncRestClient;
 import org.springframework.http.HttpStatus;
 import org.springframework.http.ResponseEntity;
@@ -33,31 +43,25 @@ import org.springframework.web.client.HttpServerErrorException;
 import reactor.core.publisher.Mono;
 
 class EiProducerApiImplTest {
-    private static final String URL_EI_TYPES = "/eitypes";
-    private static final String EI_TYPE_1 = "eitype1";
-    private static final String EI_TYPE_2 = "eitype2";
-    private static final String EI_TYPE_1_INFO_VALID =
-            "{\"ei_producer_ids\":[\"eiprod1\",\"eiprod2\"],\"ei_job_data_schema\":{\"title\":\"eijob1\"}}";
-    private static final String EI_TYPE_1_INFO_INVALID =
-            "{\"ei_producer_ids\":[\"eiprod1\",\"eiprod2\"],\"ei_job_data_schema\":\"title\":\"eijob1\"}}";
     private static final String URL_EI_PRODUCERS = "/eiproducers";
     private static final String EI_PRODUCER_1 = "eiprod1";
     private static final String EI_PRODUCER_2 = "eiprod2";
     private static final String EI_PRODUCER_1_INFO_VALID =
-            "{\"supported_ei_types\":[{\"ei_type_identity\":\"eitype1\",\"ei_job_data_schema\":{\"title\":\"eijob1\"}}]}";
+        "{\"supported_ei_types\":[{\"ei_type_identity\":\"eitype1\",\"ei_job_data_schema\":{\"title\":\"eijob1\"}}]}";
     private static final String EI_PRODUCER_1_INFO_INVALID =
-            "{\"supported_ei_types\":[{\"ei_type_identity\":\"eitype1\",\"ei_job_data_schema\":\"title\":\"eijob1\"}}]}";
+        "{\"supported_ei_types\":[{\"ei_type_identity\":\"eitype1\",\"ei_job_data_schema\":\"title\":\"eijob1\"}}]}";
     private static final String URL_STATUS = "/status";
     private static final String EI_PRODUCER_1_STATUS_VALID = "{\"operational_state\":\"ENABLED\"}";
     private static final String EI_PRODUCER_1_STATUS_INVALID = "\"operational_state\":\"ENABLED\"}";
     private static final String URL_EI_JOBS = "/eijobs";
     private static final String EI_JOB_1_INFO =
-            "{\"ei_job_identity\":\"eijob1\",\"ei_job_data\":{},\"ei_type_identity\":\"eitype1\"}";
+        "{\"ei_job_identity\":\"eijob1\",\"ei_job_data\":{},\"ei_type_identity\":\"eitype1\"}";
     private static final String EI_JOB_2_INFO =
-            "{\"ei_job_identity\":\"eijob2\",\"ei_job_data\":{},\"ei_type_identity\":\"eitype2\"}";
+        "{\"ei_job_identity\":\"eijob2\",\"ei_job_data\":{},\"ei_type_identity\":\"eitype2\"}";
 
     AsyncRestClient restClientMock = mock(AsyncRestClient.class);
     EiProducerApiImpl apiUnderTest = new EiProducerApiImpl(restClientMock);
+    private static com.google.gson.Gson gson = new GsonBuilder().create();
 
     private void whenGetReturnOK(String url, HttpStatus status, String body) {
         ResponseEntity<String> ret = new ResponseEntity<>(body, status);
@@ -69,44 +73,6 @@ class EiProducerApiImplTest {
         when(restClientMock.getForEntity(eq(url))).thenReturn(Mono.error(e));
     }
 
-    @Test
-    void testGetAllEiTypeIdsFailure() {
-        whenGetReturnFailure(URL_EI_TYPES, HttpStatus.NOT_FOUND, "");
-        ResponseEntity<String> returnedResp = apiUnderTest.getAllEiTypeIds();
-        assertEquals(HttpStatus.NOT_FOUND, returnedResp.getStatusCode());
-    }
-
-    @Test
-    void testGetAllEiTypeIdsSuccess() {
-        String eiTypeIds = Arrays.asList(EI_TYPE_1, EI_TYPE_2).toString();
-
-        whenGetReturnOK(URL_EI_TYPES, HttpStatus.OK, eiTypeIds);
-
-        ResponseEntity<String> returnedResp = apiUnderTest.getAllEiTypeIds();
-        assertEquals("[\"" + EI_TYPE_1 + "\",\"" + EI_TYPE_2 + "\"]", returnedResp.getBody());
-        assertEquals(HttpStatus.OK, returnedResp.getStatusCode());
-    }
-
-    @Test
-    void testGetEiTypeValidJson() {
-        whenGetReturnOK(URL_EI_TYPES + "/" + EI_TYPE_1, HttpStatus.OK, EI_TYPE_1_INFO_VALID);
-
-        ResponseEntity<String> returnedResp = apiUnderTest.getEiType(EI_TYPE_1);
-
-        assertEquals(HttpStatus.OK, returnedResp.getStatusCode());
-        assertEquals(EI_TYPE_1_INFO_VALID, returnedResp.getBody());
-    }
-
-    @Test
-    void testGetEiTypeInvalidJson() {
-        whenGetReturnOK(URL_EI_TYPES + "/" + EI_TYPE_1, HttpStatus.OK, EI_TYPE_1_INFO_INVALID);
-
-        ResponseEntity<String> returnedResp = apiUnderTest.getEiType(EI_TYPE_1);
-
-        assertEquals(HttpStatus.INTERNAL_SERVER_ERROR, returnedResp.getStatusCode());
-        assertTrue(returnedResp.getBody().contains("JSONException"));
-    }
-
     @Test
     void testGetAllEiProducerIdsFailure() {
         whenGetReturnFailure(URL_EI_PRODUCERS, HttpStatus.NOT_FOUND, "");
@@ -129,27 +95,34 @@ class EiProducerApiImplTest {
     void testGetEiProducerValidJson() {
         whenGetReturnOK(URL_EI_PRODUCERS + "/" + EI_PRODUCER_1, HttpStatus.OK, EI_PRODUCER_1_INFO_VALID);
 
-        ResponseEntity<String> returnedResp = apiUnderTest.getEiProducer(EI_PRODUCER_1);
+        ResponseEntity<ProducerRegistrationInfo> returnedResp = apiUnderTest.getEiProducer(EI_PRODUCER_1);
 
         assertEquals(HttpStatus.OK, returnedResp.getStatusCode());
-        assertEquals(EI_PRODUCER_1_INFO_VALID, returnedResp.getBody());
+        assertEquals(EI_PRODUCER_1_INFO_VALID, gson.toJson(returnedResp.getBody()));
     }
 
     @Test
-    void testGetEiProducerInvalidJson() {
+    public void whenGetEiProducerExceptionThrown_thenAssertionSucceeds() {
         whenGetReturnOK(URL_EI_PRODUCERS + "/" + EI_PRODUCER_1, HttpStatus.OK, EI_PRODUCER_1_INFO_INVALID);
+        Exception exception = assertThrows(JsonSyntaxException.class, () -> {
+            apiUnderTest.getEiProducer(EI_PRODUCER_1);
+        });
 
-        ResponseEntity<String> returnedResp = apiUnderTest.getEiProducer(EI_PRODUCER_1);
-
-        assertEquals(HttpStatus.INTERNAL_SERVER_ERROR, returnedResp.getStatusCode());
-        assertTrue(returnedResp.getBody().contains("JSONException"));
+        String expectedMessage = "Expected BEGIN_OBJECT but was STRING";
+        String actualMessage = exception.getMessage();
+        assertTrue(actualMessage.contains(expectedMessage));
     }
 
     @Test
-    void testGetEiJobsForOneEiProducerFailure() {
+    void whenGetEiJobsForOneEiProducerExceptionThrown_thenAssertionSucceeds() {
         whenGetReturnFailure(URL_EI_PRODUCERS + "/" + EI_PRODUCER_1 + URL_EI_JOBS, HttpStatus.NOT_FOUND, "");
-        ResponseEntity<String> returnedResp = apiUnderTest.getEiJobsForOneEiProducer(EI_PRODUCER_1);
-        assertEquals(HttpStatus.NOT_FOUND, returnedResp.getStatusCode());
+        Exception exception = assertThrows(IllegalStateException.class, () -> {
+            apiUnderTest.getEiJobsForOneEiProducer(EI_PRODUCER_1);
+        });
+
+        String expectedMessage = "Not a JSON Array: null";
+        String actualMessage = exception.getMessage();
+        assertTrue(actualMessage.contains(expectedMessage));
     }
 
     @Test
@@ -158,9 +131,9 @@ class EiProducerApiImplTest {
 
         whenGetReturnOK(URL_EI_PRODUCERS + "/" + EI_PRODUCER_1 + URL_EI_JOBS, HttpStatus.OK, eiJobs);
 
-        ResponseEntity<String> returnedResp = apiUnderTest.getEiJobsForOneEiProducer(EI_PRODUCER_1);
-        assertTrue(returnedResp.getBody().contains("\"ei_job_identity\":\"eijob1\""));
-        assertTrue(returnedResp.getBody().contains("\"ei_job_identity\":\"eijob2\""));
+        ResponseEntity<List<JobInfo>> returnedResp = apiUnderTest.getEiJobsForOneEiProducer(EI_PRODUCER_1);
+        assertTrue(gson.toJson(returnedResp.getBody()).contains("\"ei_job_identity\":\"eijob1\""));
+        assertTrue(gson.toJson(returnedResp.getBody()).contains("\"ei_job_identity\":\"eijob2\""));
         assertEquals(HttpStatus.OK, returnedResp.getStatusCode());
     }
 
@@ -168,19 +141,22 @@ class EiProducerApiImplTest {
     void testGetEiProducerStatusValidJson() {
         whenGetReturnOK(URL_EI_PRODUCERS + "/" + EI_PRODUCER_1 + URL_STATUS, HttpStatus.OK, EI_PRODUCER_1_STATUS_VALID);
 
-        ResponseEntity<String> returnedResp = apiUnderTest.getEiProducerStatus(EI_PRODUCER_1);
+        ResponseEntity<ProducerStatusInfo> returnedResp = apiUnderTest.getEiProducerStatus(EI_PRODUCER_1);
 
         assertEquals(HttpStatus.OK, returnedResp.getStatusCode());
-        assertEquals(EI_PRODUCER_1_STATUS_VALID, returnedResp.getBody());
+        assertEquals(EI_PRODUCER_1_STATUS_VALID, gson.toJson(returnedResp.getBody()));
     }
 
     @Test
-    void testGetEiProducerStatusInvalidJson() {
-        whenGetReturnOK(URL_EI_PRODUCERS + "/" + EI_PRODUCER_1 + URL_STATUS, HttpStatus.OK, EI_PRODUCER_1_STATUS_INVALID);
-
-        ResponseEntity<String> returnedResp = apiUnderTest.getEiProducerStatus(EI_PRODUCER_1);
-
-        assertEquals(HttpStatus.INTERNAL_SERVER_ERROR, returnedResp.getStatusCode());
-        assertTrue(returnedResp.getBody().contains("JSONException"));
+    public void whenGetEiProducerStatusExceptionThrown_thenAssertionSucceeds() {
+        whenGetReturnOK(URL_EI_PRODUCERS + "/" + EI_PRODUCER_1 + URL_STATUS, HttpStatus.OK,
+            EI_PRODUCER_1_STATUS_INVALID);
+        Exception exception = assertThrows(JsonSyntaxException.class, () -> {
+            apiUnderTest.getEiProducerStatus(EI_PRODUCER_1);
+        });
+
+        String expectedMessage = "Expected BEGIN_OBJECT but was STRING";
+        String actualMessage = exception.getMessage();
+        assertTrue(actualMessage.contains(expectedMessage));
     }
 }