diff --git a/pom.xml b/pom.xml index c35d7bc3b..703b5e825 100644 --- a/pom.xml +++ b/pom.xml @@ -390,7 +390,7 @@ UTF-8 - 2.21.4 + 2.21.5 4.12.0 4.7.7 3.6.1 diff --git a/src/main/java/com/mindee/v2/parsing/inference/FailedInferenceResponse.java b/src/main/java/com/mindee/v2/parsing/inference/FailedInferenceResponse.java new file mode 100644 index 000000000..5994a84bf --- /dev/null +++ b/src/main/java/com/mindee/v2/parsing/inference/FailedInferenceResponse.java @@ -0,0 +1,56 @@ +package com.mindee.v2.parsing.inference; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import com.mindee.v1.parsing.common.LocalDateTimeDeserializer; +import com.mindee.v2.parsing.CommonResponse; +import com.mindee.v2.parsing.error.ErrorResponse; +import java.time.LocalDateTime; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * Represents an asynchronous polling response. + */ +@Data +@EqualsAndHashCode(callSuper = true) +@JsonIgnoreProperties(ignoreUnknown = true) +public class FailedInferenceResponse extends CommonResponse { + /** + * UUID of the failed inference. + */ + @JsonProperty("inference_id") + String inferenceId; + + /** + * UUID of the model used. + */ + @JsonProperty("model_id") + String modelId; + + /** + * Name of the input file. + */ + @JsonProperty("file_name") + String fileName; + + /** + * Alias sent for the file, if any + */ + @JsonProperty("file_alias") + String fileAlias; + + /** + * Problem details for the failure, if available. + */ + @JsonProperty("error") + ErrorResponse error; + + /** + * Date and time when the inference was started. + */ + @JsonProperty("created_at") + @JsonDeserialize(using = LocalDateTimeDeserializer.class) + LocalDateTime createdAt; +} diff --git a/src/test/java/com/mindee/v2/parsing/FailedInferenceResponseTest.java b/src/test/java/com/mindee/v2/parsing/FailedInferenceResponseTest.java new file mode 100644 index 000000000..47f85abe0 --- /dev/null +++ b/src/test/java/com/mindee/v2/parsing/FailedInferenceResponseTest.java @@ -0,0 +1,34 @@ +package com.mindee.v2.parsing; + +import static com.mindee.TestingUtilities.getV2ResourcePath; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertInstanceOf; +import static org.junit.jupiter.api.Assertions.assertNotNull; + +import com.mindee.v2.parsing.inference.FailedInferenceResponse; +import java.io.IOException; +import java.time.LocalDateTime; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; + +@DisplayName("MindeeV2 - Failed Inference Tests") +public class FailedInferenceResponseTest { + @Test + @DisplayName("properties must be valid") + void whenFailed_mustLoad() throws IOException { + var localResponse = new LocalResponse( + getV2ResourcePath("errors/webhook_error_500_failed.json") + ); + var response = localResponse.deserializeResponse(FailedInferenceResponse.class); + assertNotNull(response); + assertEquals("12345678-1234-1234-1234-123456789ABC", response.getInferenceId()); + assertEquals("default_sample.jpg", response.getFileName()); + assertEquals("dummy-alias.jpg", response.getFileAlias()); + assertEquals("dummy-alias.jpg", response.getFileAlias()); + assertInstanceOf(LocalDateTime.class, response.getCreatedAt()); + assertNotNull(response.getError()); + assertNotNull(response.getError()); + assertEquals(500, response.getError().getStatus()); + assertEquals("500-012", response.getError().getCode()); + } +} diff --git a/src/test/resources b/src/test/resources index 2d7fcf8f5..e41ab97c2 160000 --- a/src/test/resources +++ b/src/test/resources @@ -1 +1 @@ -Subproject commit 2d7fcf8f591f6d7f40e39862965325e6a8a21874 +Subproject commit e41ab97c2833f15ea5c4edf221c2d197d212f632