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 }