diff options
author | 2024-11-22 13:49:38 +0000 | |
---|---|---|
committer | 2024-11-22 13:49:38 +0000 | |
commit | 266d4ba4f01ac7d451e0b62fd24a381fa75265a7 (patch) | |
tree | bca86c88cb317ecc7503c0dc044578b077e214bd /src/test/java/org | |
parent | 101f84b82fee1e1e245fb64df9269b9ebf5fd22d (diff) | |
parent | f63000bb493505f5660ecd000e688013c1fbe7ec (diff) |
Merge "RestApi for DB Schema Initialization-Address Review comments"
Diffstat (limited to 'src/test/java/org')
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"); + } + } + } +} |