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.subscription.io.SubscriptionIO;
8   import de.dlr.shepard.common.util.Constants;
9   import de.dlr.shepard.common.util.RequestMethod;
10  import io.quarkus.test.junit.QuarkusIntegrationTest;
11  import org.junit.jupiter.api.BeforeAll;
12  import org.junit.jupiter.api.MethodOrderer;
13  import org.junit.jupiter.api.Order;
14  import org.junit.jupiter.api.Test;
15  import org.junit.jupiter.api.TestMethodOrder;
16  
17  @QuarkusIntegrationTest
18  @TestMethodOrder(MethodOrderer.OrderAnnotation.class)
19  public class SubscriptionIT extends BaseTestCaseIT {
20  
21    private static String subscriptionsURL;
22  
23    private static SubscriptionIO subscription;
24  
25    @BeforeAll
26    public static void setUp() {
27      subscriptionsURL = String.format("/%s/%s/%s", Constants.USERS, nameOfDefaultUser, Constants.SUBSCRIPTIONS);
28    }
29  
30    @Test
31    @Order(1)
32    public void createSubscriptionTest() {
33      var toCreate = new SubscriptionIO();
34      toCreate.setName("SubscriptionDummy");
35      toCreate.setCallbackURL("http://my-callback-url.local");
36      toCreate.setRequestMethod(RequestMethod.DELETE);
37      toCreate.setSubscribedURL("http://my-subscribed-url.local");
38  
39      var actual = given()
40        .spec(requestSpecOfDefaultUser)
41        .body(toCreate)
42        .when()
43        .post(subscriptionsURL)
44        .then()
45        .statusCode(201)
46        .extract()
47        .as(SubscriptionIO.class);
48      subscription = actual;
49  
50      assertThat(actual.getId()).isNotNull();
51      assertThat(actual.getCreatedAt()).isNotNull();
52      assertThat(actual.getCreatedBy()).isEqualTo(nameOfDefaultUser);
53      assertThat(actual.getName()).isEqualTo("SubscriptionDummy");
54      assertThat(actual.getCallbackURL()).isEqualTo("http://my-callback-url.local");
55      assertThat(actual.getRequestMethod()).isEqualTo(RequestMethod.DELETE);
56      assertThat(actual.getSubscribedURL()).isEqualTo("http://my-subscribed-url.local");
57    }
58  
59    @Test
60    @Order(2)
61    public void getSubscriptionTest() {
62      var actual = given()
63        .spec(requestSpecOfDefaultUser)
64        .when()
65        .get(subscriptionsURL + "/" + subscription.getId())
66        .then()
67        .statusCode(200)
68        .extract()
69        .as(SubscriptionIO.class);
70      assertThat(actual).isEqualTo(subscription);
71    }
72  
73    @Test
74    @Order(3)
75    public void getSubscriptionTest_doesNotExist_notFound() {
76      ErrorResponse actual = given()
77        .spec(requestSpecOfDefaultUser)
78        .when()
79        .get(subscriptionsURL + "/99999")
80        .then()
81        .statusCode(404)
82        .extract()
83        .as(ErrorResponse.class);
84      assertThat(actual.getMessage()).isEqualTo("ID ERROR - Subscription does not exist");
85    }
86  
87    @Test
88    @Order(4)
89    public void getSubscriptionTest_requestingSubscriptionOfOtherUser_forbidden() {
90      ErrorResponse actual = given()
91        .spec(requestSpecOfOtherUser)
92        .when()
93        .get(subscriptionsURL + "/" + subscription.getId())
94        .then()
95        .statusCode(403)
96        .extract()
97        .as(ErrorResponse.class);
98      assertThat(actual.getMessage()).isEqualTo("The requested action is forbidden by the permission policies");
99    }
100 
101   @Test
102   @Order(5)
103   public void getSubscriptionTest_requestingIdOfOtherUser_notFound() {
104     ErrorResponse actual = given()
105       .spec(requestSpecOfOtherUser)
106       .when()
107       .get(
108         String.format(
109           "/%s/%s/%s/%s",
110           Constants.USERS,
111           otherUser.getUser().getUsername(),
112           Constants.SUBSCRIPTIONS,
113           subscription.getId()
114         )
115       )
116       .then()
117       .statusCode(403)
118       .extract()
119       .as(ErrorResponse.class);
120     assertThat(actual.getMessage()).isEqualTo("You do not have permissions for this Subscription.");
121   }
122 
123   @Test
124   @Order(6)
125   public void getSubscriptionsTest() {
126     var actual = given()
127       .spec(requestSpecOfDefaultUser)
128       .when()
129       .get(subscriptionsURL)
130       .then()
131       .statusCode(200)
132       .extract()
133       .as(SubscriptionIO[].class);
134     assertThat(actual).containsExactly(subscription);
135   }
136 
137   @Test
138   @Order(7)
139   public void deleteSubscriptionTest() {
140     given()
141       .spec(requestSpecOfDefaultUser)
142       .when()
143       .delete(subscriptionsURL + "/" + subscription.getId())
144       .then()
145       .statusCode(204);
146 
147     given()
148       .spec(requestSpecOfDefaultUser)
149       .when()
150       .get(subscriptionsURL + "/" + subscription.getId())
151       .then()
152       .statusCode(404);
153   }
154 }