View Javadoc
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  }