Skip to content

Commit 84a6845

Browse files
committed
Merge branch 'main' into feat/amp-170-call-web-hook-url
# Conflicts: # gradle/dependencies/spring-cloud.gradle # src/main/resources/application.yaml
2 parents 6f7f2df + fa11d84 commit 84a6845

File tree

7 files changed

+113
-3
lines changed

7 files changed

+113
-3
lines changed

build.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ apply {
1818
from("$rootDir/gradle/dependencies/java-core.gradle")
1919
from("$rootDir/gradle/dependencies/spring-core.gradle")
2020
from("$rootDir/gradle/dependencies/spring-db.gradle")
21+
from("$rootDir/gradle/dependencies/spring-cloud.gradle")
2122

2223
from("$rootDir/gradle/github/repositories.gradle")
2324
from("$rootDir/gradle/github/java.gradle")
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package uk.gov.hmcts.cp.subscription.clients;
2+
3+
import org.springframework.cloud.openfeign.FeignClient;
4+
import org.springframework.web.bind.annotation.GetMapping;
5+
import org.springframework.web.bind.annotation.PathVariable;
6+
import uk.gov.hmcts.cp.subscription.clients.model.MaterialResponse;
7+
8+
import java.util.UUID;
9+
10+
@FeignClient(
11+
name = "material-client",
12+
url = "${material-client.url}"
13+
)
14+
public interface MaterialClient {
15+
16+
@GetMapping("/material-query-api/query/api/rest/material/material/{materialId}/metadata")
17+
MaterialResponse getByMaterialId(@PathVariable UUID materialId);
18+
}
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
package uk.gov.hmcts.cp.subscription.clients.model;
2+
3+
import com.fasterxml.jackson.annotation.JsonFormat;
4+
import jakarta.validation.constraints.NotNull;
5+
import lombok.AllArgsConstructor;
6+
import lombok.Getter;
7+
import lombok.NoArgsConstructor;
8+
9+
import java.time.LocalDateTime;
10+
import java.util.UUID;
11+
12+
@Getter
13+
@NoArgsConstructor
14+
@AllArgsConstructor
15+
public class MaterialResponse {
16+
17+
@NotNull
18+
private UUID materialId;
19+
20+
private UUID alfrescoAssetId;
21+
22+
private String fileName;
23+
24+
private String mimeType;
25+
26+
@JsonFormat(shape = JsonFormat.Shape.STRING)
27+
private LocalDateTime materialAddedDate;
28+
}
29+

src/main/resources/application.yaml

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,6 @@
11
server:
22
port: ${SERVER_PORT:4550}
33

4-
document-service:
5-
url: ${DOCUMENT_SERVICE_URL:http://localhost:8081}
6-
74
spring:
85
application:
96
name: service-cp-crime-hearing-case-event-subscription
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
package uk.gov.hmcts.cp.subscription.clients;
2+
3+
import org.junit.jupiter.api.Test;
4+
import org.springframework.beans.factory.annotation.Autowired;
5+
import org.springframework.boot.test.context.SpringBootTest;
6+
import org.springframework.test.context.ContextConfiguration;
7+
import org.wiremock.spring.ConfigureWireMock;
8+
import org.wiremock.spring.EnableWireMock;
9+
import uk.gov.hmcts.cp.subscription.clients.model.MaterialResponse;
10+
import uk.gov.hmcts.cp.subscription.config.TestContainersInitialise;
11+
12+
import java.util.UUID;
13+
14+
import static org.assertj.core.api.AssertionsForClassTypes.assertThat;
15+
import static org.assertj.core.api.AssertionsForClassTypes.assertThatThrownBy;
16+
17+
@SpringBootTest
18+
@ContextConfiguration(initializers = TestContainersInitialise.class)
19+
@EnableWireMock({@ConfigureWireMock(name = "material-client", baseUrlProperties = "material-client.url")})
20+
class MaterialClientIntegrationTest {
21+
22+
@Autowired
23+
private MaterialClient materialClient;
24+
25+
@Test
26+
void should_return_material_by_id() {
27+
28+
final UUID materialId = UUID.fromString("6c198796-08bb-4803-b456-fa0c29ca6021");
29+
MaterialResponse response = materialClient.getByMaterialId(materialId);
30+
31+
assertThat(response).satisfies(resp -> {
32+
assertThat(resp.getMaterialId()).isEqualTo(materialId);
33+
assertThat(resp.getAlfrescoAssetId()).isEqualTo(UUID.fromString("82257b1b-571d-432e-8871-b0c5b4bd18b1"));
34+
assertThat(resp.getMimeType()).isEqualTo("application/pdf");
35+
assertThat(resp.getFileName()).isEqualTo("PrisonCourtRegister_20251219083322.pdf");
36+
});
37+
}
38+
39+
@Test
40+
void should_throw_not_found_when_material_does_not_exist() {
41+
UUID materialId = UUID.fromString("6c198796-08bb-4803-b456-fa0c29ca6022");
42+
assertThatThrownBy(() -> materialClient.getByMaterialId(materialId))
43+
.isInstanceOf(feign.FeignException.NotFound.class);
44+
}
45+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
{
2+
"materialId": "6c198796-08bb-4803-b456-fa0c29ca6021",
3+
"alfrescoAssetId": "82257b1b-571d-432e-8871-b0c5b4bd18b1",
4+
"fileName": "PrisonCourtRegister_20251219083322.pdf",
5+
"mimeType": "application/pdf",
6+
"materialAddedDate": "2025-12-19T08:33:29.866Z"
7+
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
{
2+
"request": {
3+
"method": "GET",
4+
"url": "/material-query-api/query/api/rest/material/material/6c198796-08bb-4803-b456-fa0c29ca6021/metadata"
5+
},
6+
"response": {
7+
"status": 200,
8+
"headers": {
9+
"Content-Type": "application/json"
10+
},
11+
"bodyFileName": "material-response.json"
12+
}
13+
}

0 commit comments

Comments
 (0)