1 package de.dlr.shepard.integrationtests;
2
3 import static io.restassured.RestAssured.given;
4 import static org.assertj.core.api.Assertions.assertThat;
5 import static org.junit.jupiter.api.Assertions.assertEquals;
6
7 import de.dlr.shepard.ErrorResponse;
8 import de.dlr.shepard.auth.users.io.UserGroupIO;
9 import de.dlr.shepard.common.util.Constants;
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 UserGroupIT extends BaseTestCaseIT {
20
21 private static String userGroupURL;
22 private static UserGroupIO userGroupCreated;
23 private static UserGroupIO userGroupChanged;
24
25 @BeforeAll
26 public static void setUp() {
27 userGroupURL = "/" + Constants.USERGROUPS;
28 }
29
30 @Test
31 @Order(1)
32 public void createUserGroup() {
33 UserGroupIO userGroup = new UserGroupIO();
34 userGroup.setName("userGroup");
35 userGroup.setUsernames(new String[] { otherUser.getUser().getUsername() });
36
37 userGroupCreated = given()
38 .spec(requestSpecOfDefaultUser)
39 .body(userGroup)
40 .when()
41 .post(userGroupURL)
42 .then()
43 .statusCode(201)
44 .extract()
45 .as(UserGroupIO.class);
46 userGroup = userGroupCreated;
47
48 assertThat(userGroupCreated.getId()).isNotNull();
49 assertThat(userGroupCreated.getCreatedAt()).isNotNull();
50 assertThat(userGroupCreated.getCreatedBy()).isEqualTo(nameOfDefaultUser);
51 assertThat(userGroupCreated.getName()).isEqualTo("userGroup");
52 assertThat(userGroupCreated.getUsernames()).containsExactly(otherUser.getUser().getUsername());
53 assertThat(userGroupCreated.getUpdatedAt()).isNull();
54 assertThat(userGroupCreated.getUpdatedBy()).isNull();
55 }
56
57 @Test
58 @Order(2)
59 public void getUserGroup() {
60 UserGroupIO userGroup = given()
61 .spec(requestSpecOfDefaultUser)
62 .when()
63 .get(userGroupURL + "/" + userGroupCreated.getId())
64 .then()
65 .statusCode(200)
66 .extract()
67 .as(UserGroupIO.class);
68 assertEquals(userGroupCreated, userGroup);
69 }
70
71 @Test
72 @Order(3)
73 public void getUserGroup_doesNotExist_notFound() {
74 ErrorResponse response = given()
75 .spec(requestSpecOfDefaultUser)
76 .when()
77 .get(userGroupURL + "/99999")
78 .then()
79 .statusCode(404)
80 .extract()
81 .as(ErrorResponse.class);
82
83 assertThat(response.getMessage()).isEqualTo("ID ERROR - User Group with id 99999 is null or deleted");
84 }
85
86 @Test
87 @Order(4)
88 public void getAllUserGroups() {
89 UserGroupIO[] allUserGroups = given()
90 .spec(requestSpecOfDefaultUser)
91 .when()
92 .get(userGroupURL)
93 .then()
94 .statusCode(200)
95 .extract()
96 .as(UserGroupIO[].class);
97 assertThat(allUserGroups).contains(userGroupCreated);
98 }
99
100 @Test
101 @Order(5)
102 public void putUserGroup() {
103 UserGroupIO userGroup = new UserGroupIO();
104 userGroup.setName("changedUserGroup");
105 userGroup.setUsernames(new String[] { nameOfDefaultUser });
106 userGroup.setId(userGroupCreated.getId());
107 userGroupChanged = given()
108 .spec(requestSpecOfDefaultUser)
109 .body(userGroup)
110 .when()
111 .put(userGroupURL + "/" + userGroupCreated.getId())
112 .then()
113 .statusCode(200)
114 .extract()
115 .as(UserGroupIO.class);
116 assertThat(userGroupChanged.getName()).isEqualTo("changedUserGroup");
117 assertThat(userGroupChanged.getUsernames()).containsExactly(nameOfDefaultUser);
118 assertThat(userGroupChanged.getUpdatedAt()).isNotNull();
119 assertThat(userGroupChanged.getUpdatedBy()).isEqualTo(nameOfDefaultUser);
120 }
121
122 @Test
123 @Order(6)
124 public void deleteUserGroup() {
125 given()
126 .spec(requestSpecOfDefaultUser)
127 .when()
128 .delete(userGroupURL + "/" + userGroupCreated.getId())
129 .then()
130 .statusCode(204);
131 given()
132 .spec(requestSpecOfDefaultUser)
133 .when()
134 .get(userGroupURL + "/" + userGroupCreated.getId())
135 .then()
136 .statusCode(404);
137 }
138 }