1 package de.dlr.shepard.context.references.file.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.context.collection.entities.Collection;
10 import de.dlr.shepard.context.collection.entities.DataObject;
11 import de.dlr.shepard.context.collection.io.CollectionIO;
12 import de.dlr.shepard.context.collection.io.DataObjectIO;
13 import de.dlr.shepard.context.collection.services.CollectionService;
14 import de.dlr.shepard.context.collection.services.DataObjectService;
15 import de.dlr.shepard.context.references.file.entities.FileReference;
16 import de.dlr.shepard.context.references.file.io.FileReferenceIO;
17 import de.dlr.shepard.context.references.file.services.FileReferenceService;
18 import de.dlr.shepard.data.file.entities.FileContainer;
19 import de.dlr.shepard.data.file.io.FileContainerIO;
20 import de.dlr.shepard.data.file.services.FileContainerService;
21 import io.quarkus.test.junit.QuarkusTest;
22 import jakarta.inject.Inject;
23 import jakarta.transaction.Transactional;
24 import java.util.List;
25 import org.junit.jupiter.api.BeforeEach;
26 import org.junit.jupiter.api.MethodOrderer;
27 import org.junit.jupiter.api.Order;
28 import org.junit.jupiter.api.Test;
29 import org.junit.jupiter.api.TestMethodOrder;
30
31 @TestMethodOrder(MethodOrderer.OrderAnnotation.class)
32 @QuarkusTest
33 public class FileReferenceDAOQuarkusTest {
34
35 @Inject
36 DataObjectService dataObjectService;
37
38 @Inject
39 CollectionService collectionService;
40
41 @Inject
42 FileContainerService fileContainerService;
43
44 @Inject
45 FileReferenceService fileReferenceService;
46
47 @Inject
48 FileReferenceDAO fileReferenceDAO;
49
50 @Inject
51 AuthenticationContext authenticationContext;
52
53 @Inject
54 UserService userService;
55
56 private DataObject dataObject1;
57 private DataObject dataObject2;
58 private FileContainer fileContainer1;
59 private Collection collection1;
60 private final String userName = "user_" + System.currentTimeMillis();
61 private FileReference fileReference11;
62 private FileReference fileReference12;
63
64 @BeforeEach
65 public void setup() {
66 User user = new User(userName);
67 userService.createOrUpdateUser(user);
68 authenticationContext.setPrincipal(new JWTPrincipal(userName, "key"));
69 CollectionIO collectionIO1 = new CollectionIO();
70 collectionIO1.setName("collection1");
71 collection1 = collectionService.createCollection(collectionIO1);
72 DataObjectIO dataObjectIO1 = new DataObjectIO();
73 dataObjectIO1.setName("dataObject1");
74 dataObject1 = dataObjectService.createDataObject(collection1.getShepardId(), dataObjectIO1);
75 DataObjectIO dataObjectIO2 = new DataObjectIO();
76 dataObjectIO2.setName("dataObject2");
77 dataObject2 = dataObjectService.createDataObject(collection1.getShepardId(), dataObjectIO2);
78 FileContainerIO fileContainerIO1 = new FileContainerIO();
79 fileContainerIO1.setName("fileContainer1");
80 fileContainer1 = fileContainerService.createContainer(fileContainerIO1);
81 FileReferenceIO fileReferenceIO11 = new FileReferenceIO();
82 fileReferenceIO11.setName("fileReference11");
83 fileReferenceIO11.setDataObjectId(dataObject1.getShepardId());
84 fileReferenceIO11.setFileContainerId(fileContainer1.getId());
85 String[] fileOIDs = {};
86 fileReferenceIO11.setFileOids(fileOIDs);
87 fileReference11 = fileReferenceService.createReference(
88 collection1.getShepardId(),
89 dataObject1.getShepardId(),
90 fileReferenceIO11
91 );
92 FileReferenceIO fileReferenceIO12 = new FileReferenceIO();
93 fileReferenceIO12.setName("fileReference12");
94 fileReferenceIO12.setDataObjectId(dataObject1.getShepardId());
95 fileReferenceIO12.setFileContainerId(fileContainer1.getId());
96 fileReferenceIO12.setFileOids(fileOIDs);
97 fileReference12 = fileReferenceService.createReference(
98 collection1.getShepardId(),
99 dataObject1.getShepardId(),
100 fileReferenceIO12
101 );
102 }
103
104 @Test
105 @Order(1)
106 @Transactional
107 public void findByDataObjectNeo4jIdTest() {
108 List<FileReference> actualFileReferences = fileReferenceDAO.findByDataObjectNeo4jId(dataObject1.getId());
109 assertEquals(2, actualFileReferences.size());
110 assertEquals(true, actualFileReferences.contains(fileReference11));
111 assertEquals(true, actualFileReferences.contains(fileReference12));
112 }
113
114 @Test
115 @Order(2)
116 @Transactional
117 public void findNothingByDataObjectNeo4jIdTest() {
118 List<FileReference> actualFileReferences = fileReferenceDAO.findByDataObjectNeo4jId(dataObject2.getId());
119 assertEquals(0, actualFileReferences.size());
120 }
121
122 @Test
123 @Order(3)
124 @Transactional
125 public void findByDataObjectShepardIdTest() {
126 List<FileReference> actualFileReferences = fileReferenceDAO.findByDataObjectNeo4jId(dataObject1.getShepardId());
127 assertEquals(2, actualFileReferences.size());
128 assertEquals(true, actualFileReferences.contains(fileReference11));
129 assertEquals(true, actualFileReferences.contains(fileReference12));
130 }
131
132 @Test
133 @Order(4)
134 @Transactional
135 public void findNothingByDataObjectShepardIdTest() {
136 List<FileReference> actualFileReferences = fileReferenceDAO.findByDataObjectNeo4jId(dataObject2.getShepardId());
137 assertEquals(0, actualFileReferences.size());
138 }
139 }