diff options
Diffstat (limited to 'spring-utils')
2 files changed, 210 insertions, 0 deletions
diff --git a/spring-utils/src/test/java/org/onap/policy/common/spring/utils/CustomImplicitNamingStrategyTest.java b/spring-utils/src/test/java/org/onap/policy/common/spring/utils/CustomImplicitNamingStrategyTest.java new file mode 100644 index 00000000..e7c3ad5d --- /dev/null +++ b/spring-utils/src/test/java/org/onap/policy/common/spring/utils/CustomImplicitNamingStrategyTest.java @@ -0,0 +1,74 @@ +/* + * ============LICENSE_START======================================================= + * Copyright (C) 2024 Nordix Foundation. + * ================================================================================ + * 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.policy.common.spring.utils; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.mockito.ArgumentMatchers.anyString; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; + +import org.hibernate.boot.model.naming.Identifier; +import org.hibernate.boot.model.naming.ImplicitJoinColumnNameSource; +import org.hibernate.boot.model.relational.Database; +import org.hibernate.boot.spi.InFlightMetadataCollector; +import org.hibernate.boot.spi.MetadataBuildingContext; +import org.hibernate.engine.jdbc.env.spi.IdentifierHelper; +import org.hibernate.engine.jdbc.env.spi.JdbcEnvironment; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; +import org.mockito.Mock; + +class CustomImplicitNamingStrategyTest { + + static CustomImplicitNamingStrategy strategy; + + @Mock + static ImplicitJoinColumnNameSource source; + + @BeforeAll + public static void setUpBeforeClass() { + strategy = new CustomImplicitNamingStrategy(); + source = mock(ImplicitJoinColumnNameSource.class); + } + + @Test + void testDetermineJoinColumnName() { + Identifier identifier = new Identifier("identifier", true); + + MetadataBuildingContext buildingContextMock = mock(MetadataBuildingContext.class); + InFlightMetadataCollector flightCollectorMock = mock(InFlightMetadataCollector.class); + Database databaseMock = mock(Database.class); + + when(flightCollectorMock.getDatabase()).thenReturn(databaseMock); + when(source.getReferencedColumnName()).thenReturn(identifier); + when(source.getBuildingContext()).thenReturn(buildingContextMock); + when(buildingContextMock.getMetadataCollector()).thenReturn(flightCollectorMock); + + JdbcEnvironment environmentMock = mock(JdbcEnvironment.class); + when(databaseMock.getJdbcEnvironment()).thenReturn(environmentMock); + + IdentifierHelper helperMock = mock(IdentifierHelper.class); + when(environmentMock.getIdentifierHelper()).thenReturn(helperMock); + when(helperMock.toIdentifier(anyString())).thenReturn(identifier); + + Identifier result = strategy.determineJoinColumnName(source); + assertEquals(identifier, result); + } + +} diff --git a/spring-utils/src/test/java/org/onap/policy/common/spring/utils/YamlHttpMessageConverterTest.java b/spring-utils/src/test/java/org/onap/policy/common/spring/utils/YamlHttpMessageConverterTest.java new file mode 100644 index 00000000..0c467412 --- /dev/null +++ b/spring-utils/src/test/java/org/onap/policy/common/spring/utils/YamlHttpMessageConverterTest.java @@ -0,0 +1,136 @@ +/* + * ============LICENSE_START======================================================= + * ONAP + * ================================================================================ + * Copyright (C) 2024 Nordix Foundation. + * ================================================================================ + * 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.policy.common.spring.utils; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; + +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.nio.charset.StandardCharsets; +import java.util.HashMap; +import java.util.Map; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpInputMessage; +import org.springframework.http.HttpOutputMessage; +import org.springframework.http.MediaType; +import org.springframework.http.converter.HttpMessageNotReadableException; +import org.springframework.http.converter.HttpMessageNotWritableException; + +class YamlHttpMessageConverterTest { + + private YamlHttpMessageConverter converter; + + @BeforeEach + void setUp() { + converter = new YamlHttpMessageConverter(); + } + + @Test + void testCanReadAndWriteYamlMediaType() { + MediaType mediaType = new MediaType("application", "yaml"); + assertTrue(converter.canRead(Object.class, mediaType)); + assertTrue(converter.canWrite(Object.class, mediaType)); + } + + @Test + void testReadInternal() throws IOException { + // YAML content representing a simple key-value pair as a map + String yamlContent = "key: value"; + + // Mocking HttpHeaders + HttpHeaders headers = mock(HttpHeaders.class); + when(headers.getContentType()).thenReturn(MediaType.APPLICATION_JSON); // Return JSON media type + + // Mocking HttpInputMessage + HttpInputMessage inputMessage = mock(HttpInputMessage.class); + when(inputMessage.getBody()).thenReturn(new ByteArrayInputStream(yamlContent.getBytes(StandardCharsets.UTF_8))); + when(inputMessage.getHeaders()).thenReturn(headers); + + // Now we call the converter's read method and assert the results + Map<String, String> result = (Map<String, String>) converter.read(Map.class, null, inputMessage); + + assertNotNull(result); + assertEquals("value", result.get("key")); + } + + + @Test + void testReadInternalWithException() throws IOException { + HttpInputMessage inputMessage = mock(HttpInputMessage.class); + when(inputMessage.getBody()).thenThrow(new IOException("IO Exception during reading")); + + assertThrows(HttpMessageNotReadableException.class, () -> converter.read(Map.class, null, inputMessage)); + } + + @Test + void testWriteInternal() throws IOException { + // Mocking HttpHeaders + HttpHeaders headers = mock(HttpHeaders.class); + when(headers.getContentType()).thenReturn(MediaType.APPLICATION_JSON); // Return JSON media type + when(headers.getAcceptCharset()).thenReturn(null); // Return null to use default charset + + // Mocking HttpOutputMessage + HttpOutputMessage outputMessage = mock(HttpOutputMessage.class); + ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + when(outputMessage.getBody()).thenReturn(outputStream); + when(outputMessage.getHeaders()).thenReturn(headers); + + // A simple map to be serialized into YAML + Map<String, String> map = new HashMap<>(); + map.put("key", "value"); + + // Calling the converter's write method + converter.write(map, null, outputMessage); + + // Verifying the output + String result = outputStream.toString(StandardCharsets.UTF_8); + assertTrue(result.contains("key: value")); + } + + + @Test + void testWriteInternalWithException() throws IOException { + // Mocking HttpHeaders + HttpHeaders headers = mock(HttpHeaders.class); + when(headers.getContentType()).thenReturn(MediaType.APPLICATION_JSON); // Return YAML media type + + // Mocking HttpOutputMessage to throw an IOException when getBody() is called + HttpOutputMessage outputMessage = mock(HttpOutputMessage.class); + when(outputMessage.getBody()).thenThrow(new IOException("IO Exception during writing")); + when(outputMessage.getHeaders()).thenReturn(headers); + + // A simple map to be serialized into YAML + Map<String, String> map = new HashMap<>(); + map.put("key", "value"); + + // We expect the write method to throw a HttpMessageNotWritableException + assertThrows(HttpMessageNotWritableException.class, () -> converter.write(map, null, outputMessage)); + } + +} |