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.ErrorResponse;
7   import de.dlr.shepard.common.util.Constants;
8   import de.dlr.shepard.context.collection.io.CollectionIO;
9   import de.dlr.shepard.context.collection.io.DataObjectIO;
10  import de.dlr.shepard.context.references.uri.io.URIReferenceIO;
11  import io.quarkus.test.junit.QuarkusIntegrationTest;
12  import org.junit.jupiter.api.BeforeAll;
13  import org.junit.jupiter.api.MethodOrderer;
14  import org.junit.jupiter.api.Order;
15  import org.junit.jupiter.api.Test;
16  import org.junit.jupiter.api.TestMethodOrder;
17  
18  @QuarkusIntegrationTest
19  @TestMethodOrder(MethodOrderer.OrderAnnotation.class)
20  public class URIReferenceIT extends BaseTestCaseIT {
21  
22    private static CollectionIO collection;
23    private static DataObjectIO dataObject;
24  
25    private static String referencesURL;
26  
27    private static URIReferenceIO reference;
28  
29    @BeforeAll
30    public static void setUp() {
31      collection = createCollection("URIReferenceTestCollection");
32      dataObject = createDataObject("URIReferenceDataObject", collection.getId());
33  
34      referencesURL = String.format(
35        "/%s/%d/%s/%d/%s",
36        Constants.COLLECTIONS,
37        collection.getId(),
38        Constants.DATA_OBJECTS,
39        dataObject.getId(),
40        Constants.URI_REFERENCES
41      );
42    }
43  
44    @Test
45    @Order(1)
46    public void createURIReferenceTest() {
47      var toCreate = new URIReferenceIO();
48      toCreate.setName("URIReferenceDummy");
49      toCreate.setUri("http://MyAwesomeUrl.com");
50      toCreate.setRelationship("test-relationship");
51  
52      var actual = given()
53        .spec(requestSpecOfDefaultUser)
54        .body(toCreate)
55        .when()
56        .post(referencesURL)
57        .then()
58        .statusCode(201)
59        .extract()
60        .as(URIReferenceIO.class);
61      reference = actual;
62  
63      assertThat(actual.getId()).isNotNull();
64      assertThat(actual.getCreatedAt()).isNotNull();
65      assertThat(actual.getCreatedBy()).isEqualTo(nameOfDefaultUser);
66      assertThat(actual.getDataObjectId()).isEqualTo(dataObject.getId());
67      assertThat(actual.getName()).isEqualTo("URIReferenceDummy");
68      assertThat(actual.getUri()).isEqualTo("http://MyAwesomeUrl.com");
69      assertThat(actual.getType()).isEqualTo("URIReference");
70      assertThat(actual.getRelationship()).isEqualTo("test-relationship");
71      assertThat(actual.getUpdatedAt()).isNull();
72      assertThat(actual.getUpdatedBy()).isNull();
73    }
74  
75    @Test
76    @Order(2)
77    public void getURIReferenceTest() {
78      var actual = given()
79        .spec(requestSpecOfDefaultUser)
80        .when()
81        .get(referencesURL + "/" + reference.getId())
82        .then()
83        .statusCode(200)
84        .extract()
85        .as(URIReferenceIO.class);
86      assertThat(actual).isEqualTo(reference);
87    }
88  
89    @Test
90    @Order(3)
91    public void getURIReferencesTest() {
92      var actual = given()
93        .spec(requestSpecOfDefaultUser)
94        .when()
95        .get(referencesURL)
96        .then()
97        .statusCode(200)
98        .extract()
99        .as(URIReferenceIO[].class);
100     assertThat(actual).containsExactly(reference);
101   }
102 
103   @Test
104   @Order(4)
105   public void getURIReference_referenceDoesNotExist_notFound() {
106     var actual = given()
107       .spec(requestSpecOfDefaultUser)
108       .when()
109       .get(referencesURL + "/99999")
110       .then()
111       .statusCode(404)
112       .extract()
113       .as(ErrorResponse.class);
114 
115     assertThat(actual.getMessage()).isEqualTo("ID ERROR - URI Reference with id 99999 is null or deleted");
116   }
117 
118   @Test
119   @Order(5)
120   public void getURIReference_idBelongsToWrongDataObject_notFound() {
121     DataObjectIO otherDataObject = createDataObject("OtherStructuredDataReferenceTestDataObject", collection.getId());
122 
123     var toCreate = new URIReferenceIO();
124     toCreate.setName("URIReferenceDummy");
125     toCreate.setUri("http://MyAwesomeUrl.com");
126 
127     URIReferenceIO otherRef = given()
128       .spec(requestSpecOfDefaultUser)
129       .body(toCreate)
130       .when()
131       .post(
132         String.format(
133           "/%s/%d/%s/%d/%s",
134           Constants.COLLECTIONS,
135           collection.getId(),
136           Constants.DATA_OBJECTS,
137           otherDataObject.getId(),
138           Constants.URI_REFERENCES
139         )
140       )
141       .then()
142       .statusCode(201)
143       .extract()
144       .as(URIReferenceIO.class);
145 
146     var actual = given()
147       .spec(requestSpecOfDefaultUser)
148       .when()
149       .get(referencesURL + "/" + otherRef.getId())
150       .then()
151       .statusCode(404)
152       .extract()
153       .as(ErrorResponse.class);
154 
155     assertThat(actual.getMessage()).isEqualTo("ID ERROR - There is no association between dataObject and reference");
156   }
157 
158   @Test
159   @Order(6)
160   public void deleteURIReferenceTest() {
161     given()
162       .spec(requestSpecOfDefaultUser)
163       .when()
164       .delete(referencesURL + "/" + reference.getId())
165       .then()
166       .statusCode(204);
167     given()
168       .spec(requestSpecOfDefaultUser)
169       .when()
170       .delete(referencesURL + "/" + reference.getId())
171       .then()
172       .statusCode(404);
173     given().spec(requestSpecOfDefaultUser).when().get(referencesURL + "/" + reference.getId()).then().statusCode(404);
174   }
175 }