View Javadoc
1   package de.dlr.shepard.context.collection.daos;
2   
3   import static org.junit.jupiter.api.Assertions.assertEquals;
4   
5   import de.dlr.shepard.auth.security.AuthenticationContext;
6   import de.dlr.shepard.auth.security.JWTPrincipal;
7   import de.dlr.shepard.auth.users.entities.User;
8   import de.dlr.shepard.auth.users.services.UserService;
9   import de.dlr.shepard.common.util.QueryParamHelper;
10  import de.dlr.shepard.context.collection.endpoints.DataObjectAttributes;
11  import de.dlr.shepard.context.collection.entities.Collection;
12  import de.dlr.shepard.context.collection.io.CollectionIO;
13  import de.dlr.shepard.context.collection.services.CollectionService;
14  import io.quarkus.test.junit.QuarkusTest;
15  import jakarta.inject.Inject;
16  import jakarta.transaction.Transactional;
17  import java.util.Date;
18  import java.util.HashSet;
19  import java.util.List;
20  import java.util.Set;
21  import org.junit.jupiter.api.BeforeEach;
22  import org.junit.jupiter.api.Test;
23  
24  @QuarkusTest
25  public class CollectionDAOQuarkusTest {
26  
27    @Inject
28    CollectionDAO collectionDAO;
29  
30    @Inject
31    CollectionService collectionService;
32  
33    @Inject
34    UserService userService;
35  
36    @Inject
37    AuthenticationContext authenticationContext;
38  
39    private final String userName = "user_" + System.currentTimeMillis();
40    private final String userName1 = "user1_" + System.currentTimeMillis();
41  
42    Collection collection1u;
43    Collection collection1u1;
44    Collection collection2u1;
45  
46    private Collection createCollection(CollectionIO collectionToCreate) {
47      return collectionService.createCollection(collectionToCreate);
48    }
49  
50    @BeforeEach
51    public void setup() {
52      User user = new User(userName);
53      userService.createOrUpdateUser(user);
54      User user1 = new User(userName1);
55      userService.createOrUpdateUser(user1);
56      authenticationContext.setPrincipal(new JWTPrincipal(userName, "key"));
57      CollectionIO collectionIO1u = new CollectionIO();
58      collectionIO1u.setName("collection1u");
59      collection1u = createCollection(collectionIO1u);
60      authenticationContext.setPrincipal(new JWTPrincipal(userName1, "key"));
61      CollectionIO collectionIO1u1 = new CollectionIO();
62      collectionIO1u1.setName("collection1u1");
63      collection1u1 = createCollection(collectionIO1u1);
64      CollectionIO collectionIO2u1 = new CollectionIO();
65      collectionIO2u1.setName("collection2u1");
66      collection2u1 = createCollection(collectionIO2u1);
67    }
68  
69    @Test
70    @Transactional
71    public void findAll_WithoutNameByNeo4jId_user() {
72      QueryParamHelper params = new QueryParamHelper();
73      List<Collection> ret = collectionDAO.findAllCollectionsByNeo4jId(params, userName);
74      assertEquals(ret.size(), 1);
75      assertEquals(ret.get(0), collection1u);
76    }
77  
78    @Test
79    @Transactional
80    public void findAll_WithoutNameByNeo4jId_user1() {
81      QueryParamHelper params = new QueryParamHelper();
82      List<Collection> ret = collectionDAO.findAllCollectionsByNeo4jId(params, userName1);
83      assertEquals(ret.size(), 2);
84      Set<Collection> retSet = new HashSet<Collection>();
85      retSet.add(ret.get(0));
86      retSet.add(ret.get(1));
87      Set<Collection> expSet = new HashSet<Collection>();
88      expSet.add(collection2u1);
89      expSet.add(collection1u1);
90      assertEquals(retSet, expSet);
91    }
92  
93    @Test
94    @Transactional
95    public void findAll_WithoutNameByShepardId_user() {
96      QueryParamHelper params = new QueryParamHelper();
97      List<Collection> ret = collectionDAO.findAllCollectionsByShepardId(params, userName);
98      assertEquals(ret.size(), 1);
99      assertEquals(ret.get(0), collection1u);
100   }
101 
102   @Test
103   @Transactional
104   public void findAll_WithoutNameByShepardId_user1() {
105     QueryParamHelper params = new QueryParamHelper();
106     List<Collection> ret = collectionDAO.findAllCollectionsByShepardId(params, userName1);
107     assertEquals(ret.size(), 2);
108     Set<Collection> retSet = new HashSet<Collection>();
109     retSet.add(ret.get(0));
110     retSet.add(ret.get(1));
111     Set<Collection> expSet = new HashSet<Collection>();
112     expSet.add(collection2u1);
113     expSet.add(collection1u1);
114     assertEquals(retSet, expSet);
115   }
116 
117   @Test
118   @Transactional
119   public void findAll_WithoutNameByNeo4jIdOrderByNameDesc() {
120     var params = new QueryParamHelper();
121     var collectionAttribute = DataObjectAttributes.name;
122     params = params.withOrderByAttribute(collectionAttribute, true);
123     List<Collection> ret = collectionDAO.findAllCollectionsByNeo4jId(params, userName1);
124     assertEquals(ret.size(), 2);
125     assertEquals(ret.get(0), collection2u1);
126     assertEquals(ret.get(1), collection1u1);
127   }
128 
129   @Test
130   @Transactional
131   public void findAll_WithoutNameByShepardIdOrderByNameDesc() {
132     var params = new QueryParamHelper();
133     var collectionAttribute = DataObjectAttributes.name;
134     params = params.withOrderByAttribute(collectionAttribute, true);
135     List<Collection> ret = collectionDAO.findAllCollectionsByShepardId(params, userName1);
136     assertEquals(ret.size(), 2);
137     assertEquals(ret.get(0), collection2u1);
138     assertEquals(ret.get(1), collection1u1);
139   }
140 
141   @Test
142   @Transactional
143   public void findAll_ByNameByShepardId() {
144     var params = new QueryParamHelper().withName(collection1u.getName());
145     List<Collection> ret = collectionDAO.findAllCollectionsByShepardId(params, userName);
146     assertEquals(ret.size(), 1);
147     assertEquals(ret.get(0), collection1u);
148   }
149 
150   @Test
151   @Transactional
152   public void findAll_ByNameByNeo4jId() {
153     var params = new QueryParamHelper().withName(collection2u1.getName());
154     List<Collection> ret = collectionDAO.findAllCollectionsByNeo4jId(params, userName1);
155     assertEquals(ret.size(), 1);
156     assertEquals(ret.get(0), collection2u1);
157   }
158 
159   @Test
160   @Transactional
161   public void findAll_ByNeo4jIdWithPage0() {
162     var params = new QueryParamHelper().withPageAndSize(0, 1);
163     var collectionAttribute = DataObjectAttributes.name;
164     params = params.withOrderByAttribute(collectionAttribute, false);
165     List<Collection> ret = collectionDAO.findAllCollectionsByNeo4jId(params, userName1);
166     assertEquals(ret.size(), 1);
167     assertEquals(ret.get(0), collection1u1);
168   }
169 
170   @Test
171   @Transactional
172   public void findAll_ByNeo4jIdWithPage1() {
173     var params = new QueryParamHelper().withPageAndSize(1, 1);
174     var collectionAttribute = DataObjectAttributes.name;
175     params = params.withOrderByAttribute(collectionAttribute, false);
176     List<Collection> ret = collectionDAO.findAllCollectionsByNeo4jId(params, userName1);
177     assertEquals(ret.size(), 1);
178     assertEquals(ret.get(0), collection2u1);
179   }
180 
181   @Test
182   @Transactional
183   public void findAll_ByShepardIdWithPage0() {
184     var params = new QueryParamHelper().withPageAndSize(0, 1);
185     var collectionAttribute = DataObjectAttributes.name;
186     params = params.withOrderByAttribute(collectionAttribute, false);
187     List<Collection> ret = collectionDAO.findAllCollectionsByShepardId(params, userName1);
188     assertEquals(ret.size(), 1);
189     assertEquals(ret.get(0), collection1u1);
190   }
191 
192   @Test
193   @Transactional
194   public void findAll_ByShepardIdWithPage1() {
195     var params = new QueryParamHelper().withPageAndSize(1, 1);
196     var collectionAttribute = DataObjectAttributes.name;
197     params = params.withOrderByAttribute(collectionAttribute, false);
198     List<Collection> ret = collectionDAO.findAllCollectionsByShepardId(params, userName1);
199     assertEquals(ret.size(), 1);
200     assertEquals(ret.get(0), collection2u1);
201   }
202 
203   @Test
204   @Transactional
205   public void deleteByShepardId() {
206     QueryParamHelper params = new QueryParamHelper();
207     List<Collection> retBeforeDeletion = collectionDAO.findAllCollectionsByNeo4jId(params, userName);
208     User user = new User(userName);
209     Date date = new Date(1L);
210     collectionDAO.deleteCollectionByShepardId(collection1u.getShepardId(), user, date);
211     List<Collection> retAfterDeletion = collectionDAO.findAllCollectionsByNeo4jId(params, userName);
212     assert (retBeforeDeletion.size() != 0);
213     assertEquals(retBeforeDeletion.size() - 1, retAfterDeletion.size());
214   }
215 }