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.auth.users.io.UserIO;
7   import de.dlr.shepard.common.search.io.UserSearchBody;
8   import de.dlr.shepard.common.search.io.UserSearchParams;
9   import de.dlr.shepard.common.search.io.UserSearchResult;
10  import de.dlr.shepard.common.util.Constants;
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 UserSearcherIT extends BaseTestCaseIT {
21  
22    private static String searchURL;
23    private static UserIO userIO1;
24    private static UserIO userIO2;
25  
26    @BeforeAll
27    public static void setUp() {
28      searchURL = "/" + Constants.SEARCH + "/" + Constants.USERS;
29      userIO1 = new UserIO(getNewUser("user1" + System.currentTimeMillis()));
30      userIO2 = new UserIO(getNewUser("user2" + System.currentTimeMillis()));
31    }
32  
33    @Test
34    @Order(1)
35    public void findUserTest() {
36      String query = "{\"property\": \"username\", \"value\": \"test_it\", \"operator\": \"eq\"}";
37      var params = new UserSearchParams(query);
38      var searchBody = new UserSearchBody(params);
39      var result = given()
40        .spec(requestSpecOfDefaultUser)
41        .body(searchBody)
42        .when()
43        .post(searchURL)
44        .then()
45        .statusCode(200)
46        .extract()
47        .as(UserSearchResult.class);
48      assertThat(result.getResults()).containsExactly(new UserIO(defaultUser.getUser()));
49      assertThat(result.getSearchParams()).isEqualTo(params);
50    }
51  
52    @Test
53    @Order(2)
54    public void findUsersByEmailTest() {
55      String query = "{\"property\": \"email\", \"value\": \"integration@test.org\", \"operator\": \"eq\"}";
56      var params = new UserSearchParams(query);
57      var searchBody = new UserSearchBody(params);
58      var result = given()
59        .spec(requestSpecOfDefaultUser)
60        .body(searchBody)
61        .when()
62        .post(searchURL)
63        .then()
64        .statusCode(200)
65        .extract()
66        .as(UserSearchResult.class);
67      assertThat(result.getResults()).contains(new UserIO(defaultUser.getUser()), userIO1, userIO2);
68    }
69  
70    @Test
71    @Order(3)
72    public void findOneUserTest() {
73      String query = "{\"property\": \"username\", \"value\": \"user1\", \"operator\": \"contains\"}";
74      var params = new UserSearchParams(query);
75      var searchBody = new UserSearchBody(params);
76      var result = given()
77        .spec(requestSpecOfDefaultUser)
78        .body(searchBody)
79        .when()
80        .post(searchURL)
81        .then()
82        .statusCode(200)
83        .extract()
84        .as(UserSearchResult.class);
85      assertThat(result.getResults()).contains(userIO1);
86      assertThat(result.getResults()).doesNotContain(userIO2, new UserIO(defaultUser.getUser()));
87    }
88  
89    @Test
90    @Order(4)
91    public void findTwoUsersTest() {
92      String query = "{\"property\": \"username\", \"value\": \"user\", \"operator\": \"contains\"}";
93      var params = new UserSearchParams(query);
94      var searchBody = new UserSearchBody(params);
95      var result = given()
96        .spec(requestSpecOfDefaultUser)
97        .body(searchBody)
98        .when()
99        .post(searchURL)
100       .then()
101       .statusCode(200)
102       .extract()
103       .as(UserSearchResult.class);
104     assertThat(result.getResults()).contains(userIO1, userIO2);
105     assertThat(result.getResults()).doesNotContain(new UserIO(defaultUser.getUser()));
106   }
107 }