1 package de.dlr.shepard.integrationtests;
2
3 import static io.restassured.RestAssured.given;
4 import static org.assertj.core.api.Assertions.assertThat;
5
6 import de.dlr.shepard.common.util.Constants;
7 import de.dlr.shepard.context.collection.io.CollectionIO;
8 import de.dlr.shepard.context.collection.io.DataObjectIO;
9 import io.quarkus.test.junit.QuarkusIntegrationTest;
10 import java.io.IOException;
11 import java.util.ArrayList;
12 import java.util.zip.ZipInputStream;
13 import org.junit.jupiter.api.BeforeAll;
14 import org.junit.jupiter.api.MethodOrderer;
15 import org.junit.jupiter.api.Order;
16 import org.junit.jupiter.api.Test;
17 import org.junit.jupiter.api.TestMethodOrder;
18
19 @QuarkusIntegrationTest
20 @TestMethodOrder(MethodOrderer.OrderAnnotation.class)
21 public class ExportIT extends BaseTestCaseIT {
22
23 private static String collectionsURL;
24 private static CollectionIO collection;
25 private static DataObjectIO dataObject;
26
27 @BeforeAll
28 public static void setUp() {
29 collection = createCollection("ExportTestCollection");
30 dataObject = createDataObject("ExportTestDataObject", collection.getId());
31
32 collectionsURL = "/" + Constants.COLLECTIONS + "/" + collection.getId() + "/export";
33 }
34
35 @Test
36 @Order(1)
37 public void exportCollection_successful() throws IOException {
38 var actual = given()
39 .spec(requestSpecOfDefaultUser)
40 .when()
41 .get(collectionsURL)
42 .then()
43 .statusCode(200)
44 .extract()
45 .asInputStream();
46 var zis = new ZipInputStream(actual);
47 var filenames = new ArrayList<String>();
48
49 var zipEntry = zis.getNextEntry();
50 while (zipEntry != null) {
51 filenames.add(zipEntry.getName());
52 zipEntry = zis.getNextEntry();
53 }
54
55 assertThat(filenames).containsExactlyInAnyOrder(
56 collection.getId() + ".json",
57 dataObject.getId() + ".json",
58 "ro-crate-metadata.json"
59 );
60 }
61 }