|
13 | 13 | package software.amazon.lambda.powertools.kafka;
|
14 | 14 |
|
15 | 15 | import static org.assertj.core.api.Assertions.assertThat;
|
| 16 | +import static org.assertj.core.api.Assertions.assertThatThrownBy; |
16 | 17 | import static software.amazon.lambda.powertools.kafka.testutils.TestUtils.createConsumerRecordsType;
|
17 | 18 | import static software.amazon.lambda.powertools.kafka.testutils.TestUtils.serializeAvro;
|
18 | 19 |
|
|
40 | 41 | import com.fasterxml.jackson.core.JsonProcessingException;
|
41 | 42 | import com.fasterxml.jackson.databind.ObjectMapper;
|
42 | 43 |
|
| 44 | +import software.amazon.lambda.powertools.kafka.serializers.LambdaDefaultDeserializer; |
43 | 45 | import software.amazon.lambda.powertools.kafka.serializers.PowertoolsDeserializer;
|
44 | 46 | import software.amazon.lambda.powertools.kafka.testutils.TestProductPojo;
|
45 | 47 |
|
@@ -142,6 +144,62 @@ void shouldHandleInputStreamType() throws IOException {
|
142 | 144 | assertThat(resultString).isEqualTo(testInput);
|
143 | 145 | }
|
144 | 146 |
|
| 147 | + @Test |
| 148 | + void shouldConvertInputStreamToString() { |
| 149 | + // When |
| 150 | + LambdaDefaultDeserializer deserializer = new LambdaDefaultDeserializer(); |
| 151 | + |
| 152 | + // Then |
| 153 | + String expected = "This is a test string"; |
| 154 | + ByteArrayInputStream inputStream = new ByteArrayInputStream(expected.getBytes()); |
| 155 | + |
| 156 | + // Convert InputStream to String |
| 157 | + String result = deserializer.fromJson(inputStream, String.class); |
| 158 | + |
| 159 | + // Verify the result |
| 160 | + assertThat(result).isEqualTo(expected); |
| 161 | + } |
| 162 | + |
| 163 | + @Test |
| 164 | + void shouldThrowRuntimeExceptionWhenInputStreamIsInvalid() { |
| 165 | + // When |
| 166 | + LambdaDefaultDeserializer deserializer = new LambdaDefaultDeserializer(); |
| 167 | + |
| 168 | + // Create a problematic InputStream that throws IOException when read |
| 169 | + InputStream problematicStream = new InputStream() { |
| 170 | + @Override |
| 171 | + public int read() throws IOException { |
| 172 | + throw new IOException("Simulated IO error"); |
| 173 | + } |
| 174 | + |
| 175 | + @Override |
| 176 | + public byte[] readAllBytes() throws IOException { |
| 177 | + throw new IOException("Simulated IO error"); |
| 178 | + } |
| 179 | + }; |
| 180 | + |
| 181 | + // Then |
| 182 | + assertThatThrownBy(() -> deserializer.fromJson(problematicStream, String.class)) |
| 183 | + .isInstanceOf(RuntimeException.class) |
| 184 | + .hasMessageContaining("Failed to read input stream as String"); |
| 185 | + } |
| 186 | + |
| 187 | + @Test |
| 188 | + void shouldConvertStringToByteArray() { |
| 189 | + // When |
| 190 | + LambdaDefaultDeserializer deserializer = new LambdaDefaultDeserializer(); |
| 191 | + |
| 192 | + // Then |
| 193 | + String input = "This is a test string"; |
| 194 | + |
| 195 | + // Convert String to InputStream |
| 196 | + byte[] result = deserializer.fromJson(input, InputStream.class); |
| 197 | + |
| 198 | + // Verify the result |
| 199 | + String resultString = new String(result); |
| 200 | + assertThat(resultString).isEqualTo(input); |
| 201 | + } |
| 202 | + |
145 | 203 | @ParameterizedTest
|
146 | 204 | @MethodSource("inputTypes")
|
147 | 205 | @SetEnvironmentVariable(key = "_HANDLER", value = "software.amazon.lambda.powertools.kafka.testutils.JsonHandler::handleRequest")
|
|
0 commit comments