1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.syncope.core.persistence.jpa.inner;
20
21 import static org.junit.jupiter.api.Assertions.assertEquals;
22 import static org.junit.jupiter.api.Assertions.assertNotNull;
23 import static org.junit.jupiter.api.Assertions.assertNull;
24 import static org.junit.jupiter.api.Assertions.assertTrue;
25 import static org.junit.jupiter.api.Assertions.fail;
26
27 import java.time.OffsetDateTime;
28 import java.util.List;
29 import java.util.Set;
30 import java.util.UUID;
31 import org.apache.syncope.common.lib.types.EntityViolationType;
32 import org.apache.syncope.common.lib.types.ResourceOperation;
33 import org.apache.syncope.common.lib.types.TaskType;
34 import org.apache.syncope.core.persistence.api.attrvalue.validation.InvalidEntityException;
35 import org.apache.syncope.core.persistence.api.dao.AnyTypeDAO;
36 import org.apache.syncope.core.persistence.api.dao.RemediationDAO;
37 import org.apache.syncope.core.persistence.api.dao.TaskDAO;
38 import org.apache.syncope.core.persistence.api.entity.Remediation;
39 import org.apache.syncope.core.persistence.api.entity.task.PullTask;
40 import org.apache.syncope.core.persistence.jpa.AbstractTest;
41 import org.junit.jupiter.api.Test;
42 import org.springframework.beans.factory.annotation.Autowired;
43 import org.springframework.transaction.annotation.Transactional;
44
45 @Transactional("Master")
46 public class RemediationTest extends AbstractTest {
47
48 @Autowired
49 private RemediationDAO remediationDAO;
50
51 @Autowired
52 private AnyTypeDAO anyTypeDAO;
53
54 @Autowired
55 private TaskDAO taskDAO;
56
57 @Test
58 public void findAll() {
59 List<Remediation> remediations = remediationDAO.findAll(null, null, 1, 1, List.of());
60 assertTrue(remediations.isEmpty());
61 }
62
63 @Test
64 public void createMissingPayload() {
65 Remediation remediation = entityFactory.newEntity(Remediation.class);
66 remediation.setAnyType(anyTypeDAO.find("PRINTER"));
67 remediation.setOperation(ResourceOperation.CREATE);
68 remediation.setError("Error");
69 remediation.setInstant(OffsetDateTime.now());
70 remediation.setRemoteName("remote");
71 remediation.setPullTask((PullTask) taskDAO.find(TaskType.PULL, "38abbf9e-a1a3-40a1-a15f-7d0ac02f47f1"));
72
73
74 try {
75 remediationDAO.save(remediation);
76 fail("This should not happen");
77 } catch (InvalidEntityException e) {
78 Set<EntityViolationType> violations = e.getViolations().values().iterator().next();
79 assertEquals(2, violations.size());
80 assertTrue(violations.stream().allMatch(violation -> violation.getPropertyPath().equals("payload")));
81 }
82 }
83
84 @Test
85 public void createWrongPayload() {
86 Remediation remediation = entityFactory.newEntity(Remediation.class);
87 remediation.setAnyType(anyTypeDAO.find("PRINTER"));
88 remediation.setOperation(ResourceOperation.CREATE);
89 remediation.setError("Error");
90 remediation.setInstant(OffsetDateTime.now());
91 remediation.setRemoteName("remote");
92 remediation.setPullTask((PullTask) taskDAO.find(TaskType.PULL, "38abbf9e-a1a3-40a1-a15f-7d0ac02f47f1"));
93 remediation.setPayload(UUID.randomUUID().toString());
94
95
96 try {
97 remediationDAO.save(remediation);
98 fail("This should not happen");
99 } catch (InvalidEntityException e) {
100 Set<EntityViolationType> violations = e.getViolations().values().iterator().next();
101 assertEquals(1, violations.size());
102 assertTrue(violations.stream().anyMatch(violation -> violation.getPropertyPath().equals("payload")));
103 }
104 }
105
106 @Test
107 public void create() {
108 Remediation remediation = entityFactory.newEntity(Remediation.class);
109 remediation.setAnyType(anyTypeDAO.find("PRINTER"));
110 remediation.setOperation(ResourceOperation.CREATE);
111 remediation.setError("Error");
112 remediation.setInstant(OffsetDateTime.now());
113 remediation.setRemoteName("remote");
114 remediation.setPullTask((PullTask) taskDAO.find(TaskType.PULL, "38abbf9e-a1a3-40a1-a15f-7d0ac02f47f1"));
115 remediation.setPayload(UUID.randomUUID().toString());
116 remediation.setOperation(ResourceOperation.DELETE);
117
118 remediation = remediationDAO.save(remediation);
119 assertNotNull(remediation.getKey());
120 assertNotNull(remediation.getPullTask());
121
122 taskDAO.delete(remediation.getPullTask());
123
124 entityManager().flush();
125
126 remediation = remediationDAO.find(remediation.getKey());
127 assertNull(remediation.getPullTask());
128 }
129 }