aboutsummaryrefslogtreecommitdiffstats
path: root/src/test/java/org
diff options
context:
space:
mode:
authorFiete Ostkamp <fiete.ostkamp@telekom.de>2024-11-22 13:49:38 +0000
committerGerrit Code Review <gerrit@onap.org>2024-11-22 13:49:38 +0000
commit266d4ba4f01ac7d451e0b62fd24a381fa75265a7 (patch)
treebca86c88cb317ecc7503c0dc044578b077e214bd /src/test/java/org
parent101f84b82fee1e1e245fb64df9269b9ebf5fd22d (diff)
parentf63000bb493505f5660ecd000e688013c1fbe7ec (diff)
Merge "RestApi for DB Schema Initialization-Address Review comments"
Diffstat (limited to 'src/test/java/org')
-rw-r--r--src/test/java/org/onap/aai/config/WebClientConfiguration.java13
-rw-r--r--src/test/java/org/onap/aai/rest/SchemaJobStatusControllerTest.java90
-rw-r--r--src/test/java/org/onap/aai/rest/SchemaJobStatusServiceTest.java132
3 files changed, 235 insertions, 0 deletions
diff --git a/src/test/java/org/onap/aai/config/WebClientConfiguration.java b/src/test/java/org/onap/aai/config/WebClientConfiguration.java
index c76b9b1..8f395ed 100644
--- a/src/test/java/org/onap/aai/config/WebClientConfiguration.java
+++ b/src/test/java/org/onap/aai/config/WebClientConfiguration.java
@@ -48,4 +48,17 @@ public class WebClientConfiguration {
})
.build();
}
+
+ @Lazy
+ @Bean
+ @Primary
+ WebTestClient appClient(@Value("${server.port}") int port) {
+ return WebTestClient.bindToServer()
+ .baseUrl("http://localhost:" + port)
+ .responseTimeout(Duration.ofSeconds(300))
+ .defaultHeaders(headers -> {
+ headers.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON));
+ })
+ .build();
+ }
}
diff --git a/src/test/java/org/onap/aai/rest/SchemaJobStatusControllerTest.java b/src/test/java/org/onap/aai/rest/SchemaJobStatusControllerTest.java
new file mode 100644
index 0000000..971a174
--- /dev/null
+++ b/src/test/java/org/onap/aai/rest/SchemaJobStatusControllerTest.java
@@ -0,0 +1,90 @@
+/**
+ * ============LICENSE_START=======================================================
+ * org.onap.aai
+ * ================================================================================
+ * Copyright © 2024 Deutsche Telekom. 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.aai.rest;
+
+import static org.mockito.Mockito.when;
+
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.onap.aai.config.WebClientConfiguration;
+import org.onap.aai.restclient.PropertyPasswordConfiguration;
+import org.onap.aai.service.SchemaJobStatusService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.boot.test.context.SpringBootTest.WebEnvironment;
+import org.springframework.boot.test.mock.mockito.MockBean;
+import org.springframework.context.annotation.Import;
+import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.web.reactive.server.WebTestClient;
+
+
+@Import(WebClientConfiguration.class)
+@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT)
+@ContextConfiguration(initializers = PropertyPasswordConfiguration.class)
+public class SchemaJobStatusControllerTest {
+
+ @MockBean
+ private SchemaJobStatusService schemaJobStatusService;
+
+ @Autowired
+ private SchemaJobStatusController schemaJobStatusController;
+
+ @Autowired
+ WebTestClient webClient;
+
+ @BeforeEach
+ void setUp() {
+ // Bind the WebTestClient to the controller
+ webClient = WebTestClient.bindToController(schemaJobStatusController).build();
+ }
+
+ @Test
+ void testIsSchemaInitializedTrue() throws Exception {
+ when(schemaJobStatusService.isSchemaInitialized()).thenReturn(true);
+
+ webClient.get()
+ .uri("/isSchemaInitialized")
+ .exchange()
+ .expectStatus()
+ .isOk()
+ .expectBody(Boolean.class).isEqualTo(true);
+ }
+
+ @Test
+ void testIsSchemaInitializedFalse() throws Exception {
+ when(schemaJobStatusService.isSchemaInitialized()).thenReturn(false);
+
+ webClient.get()
+ .uri("/isSchemaInitialized")
+ .exchange()
+ .expectStatus()
+ .isOk()
+ .expectBody(Boolean.class).isEqualTo(false);
+ }
+
+ @Test
+ void testInvalidEndpoint() {
+ webClient.get()
+ .uri("/nonexistentEndpoint")
+ .exchange()
+ .expectStatus()
+ .isNotFound();
+ }
+} \ No newline at end of file
diff --git a/src/test/java/org/onap/aai/rest/SchemaJobStatusServiceTest.java b/src/test/java/org/onap/aai/rest/SchemaJobStatusServiceTest.java
new file mode 100644
index 0000000..108e0eb
--- /dev/null
+++ b/src/test/java/org/onap/aai/rest/SchemaJobStatusServiceTest.java
@@ -0,0 +1,132 @@
+/**
+ * ============LICENSE_START=======================================================
+ * org.onap.aai
+ * ================================================================================
+ * Copyright © 2024 Deutsche Telekom. 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.aai.rest;
+
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.junit.jupiter.api.Assertions.fail;
+
+import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource;
+import org.janusgraph.core.JanusGraphTransaction;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.Test;
+import org.onap.aai.AAISetup;
+import org.onap.aai.dbmap.AAIGraph;
+import org.onap.aai.exceptions.AAIException;
+import org.onap.aai.service.SchemaJobStatusService;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.test.context.ContextConfiguration;
+
+@ContextConfiguration(classes = SchemaJobStatusService.class)
+public class SchemaJobStatusServiceTest extends AAISetup {
+
+ private static final Logger logger = LoggerFactory.getLogger(SchemaJobStatusServiceTest.class);
+
+ @Autowired
+ private SchemaJobStatusService schemaJobStatusService;
+
+ private void createGraph(boolean initialized) {
+ JanusGraphTransaction transaction = AAIGraph.getInstance().getGraph().newTransaction();
+ boolean success = true;
+ try {
+ GraphTraversalSource g = transaction.traversal();
+ g.addV().property("schema-initialized", initialized)
+ .next();
+
+ } catch(Exception ex){
+ success = false;
+ logger.error("Unable to create the vertexes", ex);
+ } finally {
+ if(success){
+ transaction.commit();
+ } else {
+ transaction.rollback();
+ fail("Unable to setup the graph");
+ }
+ }
+ }
+
+ private void createGraphWithoutSchemaVertex() {
+ JanusGraphTransaction transaction = AAIGraph.getInstance().getGraph().newTransaction();
+ boolean success = true;
+ try {
+ GraphTraversalSource g = transaction.traversal();
+
+ g.addV().property("aai-node-type", "pserver")
+ .next();
+
+ } catch(Exception ex){
+ success = false;
+ logger.error("Unable to create the vertexes", ex);
+ } finally {
+ if(success){
+ transaction.commit();
+ } else {
+ transaction.rollback();
+ fail("Unable to setup the graph");
+ }
+ }
+ }
+
+ @Test
+ public void testSchemaInitializedTrue() throws AAIException{
+ createGraph(true);
+ boolean result = schemaJobStatusService.isSchemaInitialized();
+ assertTrue(result);
+ }
+
+ @Test
+ public void testSchemaInitializedFalse() throws AAIException{
+ createGraph(false);
+ boolean result = schemaJobStatusService.isSchemaInitialized();
+ assertFalse(result);
+ }
+
+ @Test
+ public void testVertexNotPresent() throws AAIException{
+ createGraphWithoutSchemaVertex();
+ boolean result = schemaJobStatusService.isSchemaInitialized();
+ assertFalse(result);
+ }
+
+ @AfterEach
+ public void tearDown(){
+ JanusGraphTransaction transaction = AAIGraph.getInstance().getGraph().newTransaction();
+ boolean success = true;
+ try {
+ GraphTraversalSource g = transaction.traversal();
+ g.V().has("schema-initialized")
+ .toList()
+ .forEach(v -> v.remove());
+ } catch(Exception ex){
+ success = false;
+ logger.error("Unable to remove the vertexes", ex);
+ } finally {
+ if(success){
+ transaction.commit();
+ } else {
+ transaction.rollback();
+ fail("Unable to teardown the graph");
+ }
+ }
+ }
+}