From d5347e9c2764b8b6816b266bbb912baf8bc0e840 Mon Sep 17 00:00:00 2001
From: Joze RIHTARSIC <joze.RIHTARSIC@ext.ec.europa.eu>
Date: Wed, 8 Jun 2022 13:47:16 +0200
Subject: [PATCH] add unit tests

---
 .../AbstractServiceIntegrationTest.java       |  3 +
 .../ui/UIAlertServiceIntegrationTest.java     | 59 +++++++++++++++++++
 .../ui/UIUserServiceIntegrationTest.java      | 53 ++++++++++++-----
 .../edelivery/smp/testutil/TestDBUtils.java   | 22 +++++++
 .../src/test/resources/cleanup-database.sql   |  2 +
 5 files changed, 124 insertions(+), 15 deletions(-)
 create mode 100644 smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/ui/UIAlertServiceIntegrationTest.java

diff --git a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/AbstractServiceIntegrationTest.java b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/AbstractServiceIntegrationTest.java
index 257fa28b1..ca5d6ebe8 100644
--- a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/AbstractServiceIntegrationTest.java
+++ b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/AbstractServiceIntegrationTest.java
@@ -79,6 +79,9 @@ public abstract class AbstractServiceIntegrationTest {
     @Autowired
     protected UserDao userDao;
 
+    @Autowired
+    protected AlertDao alertDao;
+
     @Autowired
     DBAssertion dbAssertion;
 
diff --git a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/ui/UIAlertServiceIntegrationTest.java b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/ui/UIAlertServiceIntegrationTest.java
new file mode 100644
index 000000000..73c750fc1
--- /dev/null
+++ b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/ui/UIAlertServiceIntegrationTest.java
@@ -0,0 +1,59 @@
+package eu.europa.ec.edelivery.smp.services.ui;
+
+import eu.europa.ec.edelivery.smp.data.model.DBAlert;
+import eu.europa.ec.edelivery.smp.data.ui.AlertRO;
+import eu.europa.ec.edelivery.smp.data.ui.ServiceResult;
+import eu.europa.ec.edelivery.smp.services.AbstractServiceIntegrationTest;
+import eu.europa.ec.edelivery.smp.services.AlertService;
+import eu.europa.ec.edelivery.smp.testutil.TestDBUtils;
+import org.junit.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.test.context.ContextConfiguration;
+
+import static org.junit.Assert.assertEquals;
+
+@ContextConfiguration(classes = UIAlertService.class)
+public class UIAlertServiceIntegrationTest extends AbstractServiceIntegrationTest {
+
+    @Autowired
+    protected UIAlertService testInstance;
+
+    @Autowired
+    AlertService alertService;
+
+    protected void insertDataObjects(int size) {
+
+        String username = "username-intg-test";
+        TestDBUtils.createDBAlert(username);
+        for (int i = 0; i < size; i++) {
+            DBAlert alert = TestDBUtils.createDBAlert(username);
+            alertDao.persistFlushDetach(alert);
+        }
+    }
+
+
+    @Test
+    public void getTableList() {
+        ServiceResult<AlertRO> before = testInstance.getTableList(-1, -1, null, null, null);
+        int newAddedValuesCount = 10;
+        insertDataObjects(newAddedValuesCount);
+
+        ServiceResult<AlertRO> result = testInstance.getTableList(-1, -1, null, null, null);
+
+        assertEquals(before.getCount() + newAddedValuesCount, result.getCount().intValue());
+    }
+
+
+    @Test
+    public void convertToRo() {
+        DBAlert alert = TestDBUtils.createDBAlert("test");
+        AlertRO alertRO = testInstance.convertToRo(alert);
+
+        assertEquals(alert.getUsername(), alertRO.getUsername());
+        assertEquals(alert.getAlertLevel(), alertRO.getAlertLevel());
+        assertEquals(alert.getAlertStatus(), alertRO.getAlertStatus());
+        assertEquals(alert.getAlertStatusDesc(), alertRO.getAlertStatusDesc());
+        assertEquals(alert.getMailTo(), alertRO.getMailTo());
+        assertEquals(alert.getProperties().size(), alertRO.getAlertDetails().size());
+    }
+}
\ No newline at end of file
diff --git a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/ui/UIUserServiceIntegrationTest.java b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/ui/UIUserServiceIntegrationTest.java
index 2c2f2bf51..88dbcfb7b 100644
--- a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/ui/UIUserServiceIntegrationTest.java
+++ b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/ui/UIUserServiceIntegrationTest.java
@@ -11,11 +11,11 @@ import eu.europa.ec.edelivery.smp.data.ui.UserRO;
 import eu.europa.ec.edelivery.smp.data.ui.enums.EntityROStatus;
 import eu.europa.ec.edelivery.smp.exceptions.SMPRuntimeException;
 import eu.europa.ec.edelivery.smp.services.AbstractServiceIntegrationTest;
+import eu.europa.ec.edelivery.smp.testutil.TestConstants;
 import eu.europa.ec.edelivery.smp.testutil.TestDBUtils;
 import eu.europa.ec.edelivery.smp.testutil.TestROUtils;
 import org.hamcrest.CoreMatchers;
 import org.hamcrest.MatcherAssert;
-import org.junit.Assert;
 import org.junit.Rule;
 import org.junit.Test;
 import org.junit.rules.ExpectedException;
@@ -307,8 +307,8 @@ public class UIUserServiceIntegrationTest extends AbstractServiceIntegrationTest
     public void testUpdateUserPasswordNotMatchReqExpression() {
         long authorizedUserId = 1L;
         long userToUpdateId = 1L;
-        String authorizedPassword="testPass";
-        String newPassword="newPass";
+        String authorizedPassword = "testPass";
+        String newPassword = "newPass";
 
         SMPRuntimeException result = assertThrows(SMPRuntimeException.class,
                 () -> testInstance.updateUserPassword(authorizedUserId, userToUpdateId, authorizedPassword, newPassword));
@@ -321,8 +321,8 @@ public class UIUserServiceIntegrationTest extends AbstractServiceIntegrationTest
 
         long authorizedUserId = 1L;
         long userToUpdateId = 1L;
-        String authorizedPassword="oldPass";
-        String newPassword="TTTTtttt1111$$$$$";
+        String authorizedPassword = "oldPass";
+        String newPassword = "TTTTtttt1111$$$$$";
 
         SMPRuntimeException result = assertThrows(SMPRuntimeException.class,
                 () -> testInstance.updateUserPassword(authorizedUserId, userToUpdateId, authorizedPassword, newPassword));
@@ -342,8 +342,8 @@ public class UIUserServiceIntegrationTest extends AbstractServiceIntegrationTest
 
         long authorizedUserId = user.getId();
         long userToUpdateId = 1L;
-        String authorizedPassword="oldPass";
-        String newPassword="TTTTtttt1111$$$$$";
+        String authorizedPassword = "oldPass";
+        String newPassword = "TTTTtttt1111$$$$$";
 
         BadCredentialsException result = assertThrows(BadCredentialsException.class,
                 () -> testInstance.updateUserPassword(authorizedUserId, userToUpdateId, authorizedPassword, newPassword));
@@ -363,8 +363,8 @@ public class UIUserServiceIntegrationTest extends AbstractServiceIntegrationTest
 
         long authorizedUserId = user.getId();
         long userToUpdateId = user.getId();
-        String authorizedPassword=userPassword;
-        String newPassword="TTTTtttt1111$$$$$";
+        String authorizedPassword = userPassword;
+        String newPassword = "TTTTtttt1111$$$$$";
 
         testInstance.updateUserPassword(authorizedUserId, userToUpdateId, authorizedPassword, newPassword);
     }
@@ -398,7 +398,7 @@ public class UIUserServiceIntegrationTest extends AbstractServiceIntegrationTest
 
     @Test
     public void testUpdateUserdataCertificateOK() throws Exception {
-        String certSubject = "CN="+UUID.randomUUID().toString()+",O=eDelivery,C=EU";
+        String certSubject = "CN=" + UUID.randomUUID().toString() + ",O=eDelivery,C=EU";
         String userPassword = UUID.randomUUID().toString();
         DBUser user = new DBUser();
         user.setPassword(BCrypt.hashpw(userPassword, BCrypt.gensalt()));
@@ -409,7 +409,8 @@ public class UIUserServiceIntegrationTest extends AbstractServiceIntegrationTest
 
         CertificateRO certificateRO = TestROUtils.createCertificateRO(certSubject, BigInteger.TEN);
         UserRO userRO = new UserRO();
-        userRO.setCertificate(certificateRO);;
+        userRO.setCertificate(certificateRO);
+
         testInstance.updateUserdata(user.getId(), userRO);
 
 
@@ -417,11 +418,33 @@ public class UIUserServiceIntegrationTest extends AbstractServiceIntegrationTest
         // fields must not change
         assertNotNull(changedUser.getCertificate());
         assertNotNull(changedUser.getCertificate().getPemEncoding());
-        assertNotNull(certificateRO.getCertificateId(),changedUser.getCertificate().getCertificateId());
-        assertNotNull(certificateRO.getSubject(),changedUser.getCertificate().getSubject());
-        assertNotNull(certificateRO.getIssuer(),changedUser.getCertificate().getIssuer());
-        assertNotNull(certificateRO.getSerialNumber(),changedUser.getCertificate().getSerialNumber());
+        assertNotNull(certificateRO.getCertificateId(), changedUser.getCertificate().getCertificateId());
+        assertNotNull(certificateRO.getSubject(), changedUser.getCertificate().getSubject());
+        assertNotNull(certificateRO.getIssuer(), changedUser.getCertificate().getIssuer());
+        assertNotNull(certificateRO.getSerialNumber(), changedUser.getCertificate().getSerialNumber());
+    }
+
+
+    @Test
+    public void testUpdateUserdataCertificateWithExistingCertificateOK() throws Exception {
+        String certSubject = "CN=" + UUID.randomUUID().toString() + ",O=eDelivery,C=EU";
+        DBUser user = TestDBUtils.createDBUserByCertificate(TestConstants.USER_CERT_2);
+        userDao.persistFlushDetach(user);
+
+        CertificateRO certificateRO = TestROUtils.createCertificateRO(certSubject, BigInteger.TEN);
+        UserRO userRO = new UserRO();
+        userRO.setCertificate(certificateRO);
+        ;
+        testInstance.updateUserdata(user.getId(), userRO);
 
 
+        DBUser changedUser = userDao.findUser(user.getId()).get();
+        // fields must not change
+        assertNotNull(changedUser.getCertificate());
+        assertNotNull(changedUser.getCertificate().getPemEncoding());
+        assertNotNull(certificateRO.getCertificateId(), changedUser.getCertificate().getCertificateId());
+        assertNotNull(certificateRO.getSubject(), changedUser.getCertificate().getSubject());
+        assertNotNull(certificateRO.getIssuer(), changedUser.getCertificate().getIssuer());
+        assertNotNull(certificateRO.getSerialNumber(), changedUser.getCertificate().getSerialNumber());
     }
 }
diff --git a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/testutil/TestDBUtils.java b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/testutil/TestDBUtils.java
index da792681a..a10bc9d58 100644
--- a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/testutil/TestDBUtils.java
+++ b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/testutil/TestDBUtils.java
@@ -1,5 +1,6 @@
 package eu.europa.ec.edelivery.smp.testutil;
 
+import com.sun.org.apache.bcel.internal.generic.ARETURN;
 import eu.europa.ec.edelivery.smp.data.model.*;
 import eu.europa.ec.edelivery.smp.data.ui.enums.AlertLevelEnum;
 import eu.europa.ec.edelivery.smp.data.ui.enums.AlertStatusEnum;
@@ -24,6 +25,27 @@ public class TestDBUtils {
         return domain;
     }
 
+    public static DBAlert createDBAlert(String username) {
+        return createDBAlert(username, "mail-subject", "mail.to@test.eu",AlertLevelEnum.MEDIUM, AlertTypeEnum.CREDENTIAL_IMMINENT_EXPIRATION);
+    }
+
+    public static DBAlert createDBAlert(String username, String mailSubject,
+                                        String mailTo,
+                                        AlertLevelEnum level,
+                                        AlertTypeEnum alertType) {
+        DBAlert alert = new DBAlert();
+        alert.setMailSubject(mailSubject);
+        alert.setMailTo(mailTo);
+        alert.setUsername(username);
+        alert.setReportingTime(OffsetDateTime.now());
+        alert.setAlertType(alertType);
+        alert.setAlertLevel(level);
+        alert.setAlertStatus(AlertStatusEnum.PROCESS);
+        alert.addProperty("prop1", "propValue1");
+        alert.addProperty("prop2", "propValue2");
+        return alert;
+    }
+
     public static DBDomain createDBDomain() {
         return createDBDomain(TestConstants.TEST_DOMAIN_CODE_1);
     }
diff --git a/smp-server-library/src/test/resources/cleanup-database.sql b/smp-server-library/src/test/resources/cleanup-database.sql
index 95d7afdd4..0a97f57a1 100755
--- a/smp-server-library/src/test/resources/cleanup-database.sql
+++ b/smp-server-library/src/test/resources/cleanup-database.sql
@@ -9,6 +9,7 @@ DELETE FROM SMP_SERVICE_GROUP_AUD ;
 DELETE FROM SMP_DOMAIN_AUD;
 DELETE FROM SMP_CERTIFICATE_AUD ;
 DELETE FROM SMP_USER_AUD;
+DELETE FROM SMP_ALERT_PROPERTY_AUD;
 DELETE FROM SMP_ALERT_AUD;
 DELETE FROM SMP_REV_INFO;
 
@@ -23,6 +24,7 @@ DELETE FROM SMP_SERVICE_GROUP;
 DELETE FROM SMP_DOMAIN;
 DELETE FROM SMP_CERTIFICATE;
 DELETE FROM SMP_USER;
+DELETE FROM SMP_ALERT_PROPERTY;
 DELETE FROM SMP_ALERT;
 DELETE FROM SMP_OWNERSHIP;
 
-- 
GitLab