From 8f602e983e3c139f9fd936358b74eeef9732ee5f Mon Sep 17 00:00:00 2001
From: RIHTARSIC Joze <joze.rihtarsic@ext.ec.europa.eu>
Date: Thu, 15 Jun 2023 16:17:06 +0200
Subject: [PATCH] Enable unit tests

---
 .../conversion/DBUserToUserROConverter.java   |  3 ++
 .../DBUserToUserROConverterTest.java          | 28 ++++++++++++-------
 .../smp/auth/SMPAuthenticationProvider.java   |  2 --
 .../SecurityConfigurationClientCertTest.java  |  1 -
 .../security/SecurityConfigurationTest.java   | 13 +++++----
 .../security/SignatureValidatorTest.java      |  7 -----
 .../auth/SMPAuthenticationProviderTest.java   |  1 -
 ...> ResourceControllerSingleDomainTest.java} |  9 ++----
 .../controllers/ResourceControllerTest.java   |  2 --
 9 files changed, 32 insertions(+), 34 deletions(-)
 rename smp-webapp/src/test/java/eu/europa/ec/edelivery/smp/controllers/{ServiceGroupControllerSingleDomainTest.java => ResourceControllerSingleDomainTest.java} (98%)

diff --git a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/conversion/DBUserToUserROConverter.java b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/conversion/DBUserToUserROConverter.java
index 6d978c745..9109f5abb 100644
--- a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/conversion/DBUserToUserROConverter.java
+++ b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/conversion/DBUserToUserROConverter.java
@@ -48,6 +48,9 @@ public class DBUserToUserROConverter implements Converter<DBUser, UserRO> {
         if (!credentials.isEmpty()) {
             // expected only one username/password
             DBCredential credential = credentials.get(0);
+            target.setPasswordExpired(credential.getExpireOn() == null || OffsetDateTime.now().isAfter(credential.getExpireOn()));
+
+
             target.setPasswordUpdatedOn(credential.getChangedOn());
             target.setPasswordExpireOn(credential.getExpireOn());
             target.setPasswordExpired(isCredentialExpired(credential));
diff --git a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/conversion/DBUserToUserROConverterTest.java b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/conversion/DBUserToUserROConverterTest.java
index d8ab5f970..9c7db51b3 100644
--- a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/conversion/DBUserToUserROConverterTest.java
+++ b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/conversion/DBUserToUserROConverterTest.java
@@ -1,6 +1,7 @@
 package eu.europa.ec.edelivery.smp.conversion;
 
 import eu.europa.ec.edelivery.smp.data.dao.CredentialDao;
+import eu.europa.ec.edelivery.smp.data.enums.CredentialTargetType;
 import eu.europa.ec.edelivery.smp.data.enums.CredentialType;
 import eu.europa.ec.edelivery.smp.data.model.user.DBCertificate;
 import eu.europa.ec.edelivery.smp.data.model.user.DBCredential;
@@ -18,6 +19,7 @@ import org.mockito.junit.MockitoJUnitRunner;
 import org.springframework.core.convert.ConversionService;
 
 import java.time.OffsetDateTime;
+import java.util.List;
 import java.util.Optional;
 
 import static org.assertj.core.api.Assertions.assertThat;
@@ -28,7 +30,6 @@ import static org.assertj.core.api.Assertions.assertThat;
  */
 
 @RunWith(MockitoJUnitRunner.class)
-@Ignore
 public class DBUserToUserROConverterTest {
 
     private DBUser source;
@@ -53,6 +54,10 @@ public class DBUserToUserROConverterTest {
     @Test
     public void returnsThePasswordAsExpiredWhenConvertingAnExistingUserThatHasAPasswordThatHasBeenRecentlyReset() {
         givenAnExistingUserHavingAPasswordThatHasJustBeenReset();
+        List<DBCredential> credentialList = source.getUserCredentials();
+        Mockito.doReturn(credentialList).when(credentialDao).findUserCredentialForByUserIdTypeAndTarget(Mockito.any(),
+                        Mockito.any(CredentialType.class),
+                        Mockito.any(CredentialTargetType.class));
 
         whenConvertingTheExistingUser();
 
@@ -72,7 +77,10 @@ public class DBUserToUserROConverterTest {
     @Test
     public void returnsThePasswordAsExpiredWhenConvertingAnExistingUserThatHasAPasswordChangedMoreThanThreeMonthsAgo() {
         givenAnExistingUserHavingAPasswordThatChangedMoreThanThreeMonthsAgo();
-
+        List<DBCredential> credentialList = source.getUserCredentials();
+        Mockito.doReturn(credentialList).when(credentialDao).findUserCredentialForByUserIdTypeAndTarget(Mockito.any(),
+                Mockito.any(CredentialType.class),
+                Mockito.any(CredentialTargetType.class));
         whenConvertingTheExistingUser();
 
         thenThePasswordIsMarkedAsExpired("The passwords should be marked as expired when converting users having password they have changed more than 3 months ago");
@@ -97,22 +105,22 @@ public class DBUserToUserROConverterTest {
 
     private void givenAnExistingUser(String password, OffsetDateTime passwordChange, DBCertificate certificate) {
         source = new DBUser();
-        /*
-        Optional<DBCredential> optUserPassCred = source.getCredentials().stream().filter(credential -> credential.getCredentialType() == CredentialType.USERNAME_PASSWORD).findFirst();
-        Optional<DBCredential> optCertCred = source.getCredentials().stream().filter(credential -> credential.getCredentialType() == CredentialType.CERTIFICATE).findFirst();
+
+        Optional<DBCredential> optUserPassCred = source.getUserCredentials().stream().filter(credential -> credential.getCredentialType() == CredentialType.USERNAME_PASSWORD).findFirst();
+        Optional<DBCredential> optCertCred = source.getUserCredentials().stream().filter(credential -> credential.getCredentialType() == CredentialType.CERTIFICATE).findFirst();
 
         if (StringUtils.isNotBlank(password)) {
             DBCredential credential =optUserPassCred.orElse(new DBCredential());
             if (credential.getUser()==null){
                 credential.setUser(source);
                 credential.setCredentialType(CredentialType.USERNAME_PASSWORD);
-                source.addCredentials(credential);
+                source.getUserCredentials().add(credential);
             }
             credential.setValue(password);
             credential.setChangedOn(passwordChange);
             credential.setExpireOn(passwordChange != null ? passwordChange.plusMonths(3) : null);
         } else if (optUserPassCred.isPresent()) {
-            source.removeCredentials(optUserPassCred.get());
+            source.getUserCredentials().remove(optUserPassCred.get());
         }
 
         if (certificate!=null) {
@@ -120,7 +128,7 @@ public class DBUserToUserROConverterTest {
             if (credential.getUser()==null){
                 credential.setUser(source);
                 credential.setCredentialType(CredentialType.CERTIFICATE);
-                source.addCredentials(credential);
+                source.getUserCredentials().add(credential);
             }
             credential.setCertificate(certificate);
             credential.setValue(certificate.getCertificateId());
@@ -128,10 +136,10 @@ public class DBUserToUserROConverterTest {
             credential.setExpireOn(certificate.getValidTo());
             credential.setExpireOn(certificate.getValidFrom());
         } else if (optCertCred.isPresent()) {
-            source.removeCredentials(optCertCred.get());
+            source.getUserCredentials().remove(optCertCred.get());
         }
 
-         */
+
     }
 
     private void whenConvertingTheExistingUser() {
diff --git a/smp-webapp/src/main/java/eu/europa/ec/edelivery/smp/auth/SMPAuthenticationProvider.java b/smp-webapp/src/main/java/eu/europa/ec/edelivery/smp/auth/SMPAuthenticationProvider.java
index a6f346d3d..6fc84352f 100644
--- a/smp-webapp/src/main/java/eu/europa/ec/edelivery/smp/auth/SMPAuthenticationProvider.java
+++ b/smp-webapp/src/main/java/eu/europa/ec/edelivery/smp/auth/SMPAuthenticationProvider.java
@@ -31,12 +31,10 @@ import java.util.Collections;
 @Component
 public class SMPAuthenticationProvider implements AuthenticationProvider {
 
-
     private static final SMPLogger LOG = SMPLoggerFactory.getLogger(SMPAuthenticationProvider.class);
 
     final CredentialService credentialService;
 
-
     @Autowired
     public SMPAuthenticationProvider(CredentialService credentialService) {
 
diff --git a/smp-webapp/src/test/java/eu/europa/ec/cipa/smp/server/security/SecurityConfigurationClientCertTest.java b/smp-webapp/src/test/java/eu/europa/ec/cipa/smp/server/security/SecurityConfigurationClientCertTest.java
index fb48a338f..ba7422c5b 100644
--- a/smp-webapp/src/test/java/eu/europa/ec/cipa/smp/server/security/SecurityConfigurationClientCertTest.java
+++ b/smp-webapp/src/test/java/eu/europa/ec/cipa/smp/server/security/SecurityConfigurationClientCertTest.java
@@ -61,7 +61,6 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.
 @TestPropertySource(properties = {
         "smp.automation.authentication.external.tls.clientCert.enabled=true",
 })
-@Ignore
 public class SecurityConfigurationClientCertTest {
 
     //Jul++9+23:59:00+2019+GMT"
diff --git a/smp-webapp/src/test/java/eu/europa/ec/cipa/smp/server/security/SecurityConfigurationTest.java b/smp-webapp/src/test/java/eu/europa/ec/cipa/smp/server/security/SecurityConfigurationTest.java
index 9fbf7e520..cf125f941 100644
--- a/smp-webapp/src/test/java/eu/europa/ec/cipa/smp/server/security/SecurityConfigurationTest.java
+++ b/smp-webapp/src/test/java/eu/europa/ec/cipa/smp/server/security/SecurityConfigurationTest.java
@@ -31,8 +31,8 @@ import org.springframework.test.context.jdbc.Sql;
 import org.springframework.test.context.junit4.SpringRunner;
 import org.springframework.test.context.web.WebAppConfiguration;
 import org.springframework.test.web.servlet.MockMvc;
-import org.springframework.test.web.servlet.ResultActions;
 import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
+import org.springframework.test.web.servlet.result.MockMvcResultHandlers;
 import org.springframework.web.context.WebApplicationContext;
 
 import java.io.IOException;
@@ -47,7 +47,6 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.
 /**
  * Created by gutowpa on 20/02/2017.
  */
-@Ignore
 @RunWith(SpringRunner.class)
 @WebAppConfiguration
 @ContextConfiguration(classes = {SmpTestWebAppConfig.class})
@@ -65,7 +64,7 @@ public class SecurityConfigurationTest {
     public static final String CLIENT_CERT_VALID_HEADER_UPPER_SN = "sno=BB66&subject=C=BE,O=org,CN=common name&validfrom=Dec 6 17:41:42 2016 GMT&validto=Jul 9 23:59:00 2050 GMT&issuer=C=x,O=y,CN=z";
     public static final String TEST_USERNAME_CLIENT_CERT = "CN=common name,O=org,C=BE:000000000000bb66";
     public static final String CLIENT_CERT_VALID_HEADER_DB_UPPER_SN = "sno=BB66&subject=CN=common name UPPER database SN,O=org,C=BE&validfrom=Dec 6 17:41:42 2016 GMT&validto=Jul 9 23:59:00 2050 GMT&issuer=C=x,O=y,CN=z";
-    public static final String TEST_USERNAME_CLIENT_CERT__DB_UPPER_SN = "CN=common name UPPER database SN,O=org,C=BE:000000000000bb66";
+    public static final String TEST_USERNAME_CLIENT_CERT_DB_UPPER_SN = "CN=common name UPPER database SN,O=org,C=BE:000000000000bb66";
     public static final String CLIENT_CERT_NOT_AUTHORIZED_HEADER = "sno=bb61&subject=C=BE,O=org,CN=common name not exists&validfrom=Dec 6 17:41:42 2016 GMT&validto=Jul 9 23:59:00 2050 GMT&issuer=C=x,O=y,CN=z";
 
     @Autowired
@@ -167,6 +166,7 @@ public class SecurityConfigurationTest {
     }
 
     @Test
+    @Ignore
     public void validClientCertHeaderAuthorizedBeforeValidBasicAuthTest() throws Exception {
         HttpHeaders headers = new HttpHeaders();
         headers.add("Client-Cert", CLIENT_CERT_VALID_HEADER);
@@ -179,6 +179,7 @@ public class SecurityConfigurationTest {
     }
 
     @Test
+    @Ignore
     public void validClientCertHeaderAuthorizedBeforeValidBasicAuthTestUpper() throws Exception {
         HttpHeaders headers = new HttpHeaders();
         headers.add("Client-Cert", CLIENT_CERT_VALID_HEADER_UPPER_SN);
@@ -192,6 +193,7 @@ public class SecurityConfigurationTest {
 
 
     @Test
+    @Ignore
     public void validClientCertHeaderAuthorizedBeforeValidBasicAuthTestDBUpperSN() throws Exception {
         HttpHeaders headers = new HttpHeaders();
         headers.add("Client-Cert", CLIENT_CERT_VALID_HEADER_DB_UPPER_SN);
@@ -200,10 +202,11 @@ public class SecurityConfigurationTest {
                 .with(httpBasic(TEST_USERNAME_DB_HASHED_PASS, PASSWORD))
                 .with(csrf()))
                 .andExpect(status().isOk())
-                .andExpect(content().string(containsString(TEST_USERNAME_CLIENT_CERT__DB_UPPER_SN))).toString();
+                .andExpect(content().string(containsString(TEST_USERNAME_CLIENT_CERT_DB_UPPER_SN))).toString();
     }
 
     @Test
+    @Ignore
     public void validClientCertHeaderAuthorizedBeforeValidBasicAuthTestUpperDBUpperSN() throws Exception {
         HttpHeaders headers = new HttpHeaders();
         headers.add("Client-Cert", CLIENT_CERT_VALID_HEADER_DB_UPPER_SN);
@@ -212,7 +215,7 @@ public class SecurityConfigurationTest {
                 .with(httpBasic(TEST_USERNAME_DB_HASHED_PASS, PASSWORD))
                 .with(csrf()))
                 .andExpect(status().isOk())
-                .andExpect(content().string(containsString(TEST_USERNAME_CLIENT_CERT__DB_UPPER_SN)));
+                .andExpect(content().string(containsString(TEST_USERNAME_CLIENT_CERT_DB_UPPER_SN)));
     }
 
 
diff --git a/smp-webapp/src/test/java/eu/europa/ec/cipa/smp/server/security/SignatureValidatorTest.java b/smp-webapp/src/test/java/eu/europa/ec/cipa/smp/server/security/SignatureValidatorTest.java
index 07dec759d..9d57dae59 100644
--- a/smp-webapp/src/test/java/eu/europa/ec/cipa/smp/server/security/SignatureValidatorTest.java
+++ b/smp-webapp/src/test/java/eu/europa/ec/cipa/smp/server/security/SignatureValidatorTest.java
@@ -72,7 +72,6 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.
         "classpath:/cleanup-database.sql",
         "classpath:/webapp_integration_test_data.sql"},
         executionPhase = BEFORE_TEST_METHOD)
-@Ignore
 public class SignatureValidatorTest {
 
     protected Path resourceDirectory = Paths.get("src", "test", "resources", "keystores");
@@ -142,13 +141,9 @@ public class SignatureValidatorTest {
     private void commonTest(String serviceGroupId, Principal principal, String filePathToLoad, String signedByCustomizedSignatureFilePath, String defaultSignatureFilePath) throws Throwable {
         //given
         String documentTypeId = encode("ehealth-resid-qns::urn::epsos##services:extended:epsos::107", "UTF-8");
-        //String documentTypeId = Identifiers.asString(new DocumentIdentifier(encode("ehealth-resid-qns::urn::epsos##services:extended:epsos::107", "UTF-8"), "ehealth-resid-qns"));
-
-        //ServiceMetadataInterface serviceMetadataInterface = new ServiceMetadataInterface();
         PreAuthenticatedAuthenticationToken authentication = new PreAuthenticatedAuthenticationToken(principal, "N/A");
         authentication.setDetails(principal);
         SecurityContextHolder.getContext().setAuthentication(authentication);
-        //serviceMetadataInterface.setHeaders(new DefaultHttpHeader());
 
         //Sign w/ Customized Signature
         Document docPutRequest = SignatureUtil.loadDocument(filePathToLoad);
@@ -159,7 +154,6 @@ public class SignatureValidatorTest {
 
         //When
         //Save ServiceMetadata
-        //serviceMetadataInterface.saveServiceRegistration(serviceGroupId, documentTypeId, signedByCustomizedSignature);
         mvc.perform(put(uri).header("Domain", "domain")
                 .with(ADMIN_CREDENTIALS)
                 .contentType(APPLICATION_XML_VALUE)
@@ -167,7 +161,6 @@ public class SignatureValidatorTest {
                 .andExpect(status().is2xxSuccessful());
 
         //Retrieve saved ServiceMetadata
-        //Document response = serviceMetadataInterface.getServiceRegistration(serviceGroupId, documentTypeId);
         String responseStr = mvc.perform(get(uri))
                 .andExpect(status().isOk())
                 .andReturn().getResponse().getContentAsString();
diff --git a/smp-webapp/src/test/java/eu/europa/ec/edelivery/smp/auth/SMPAuthenticationProviderTest.java b/smp-webapp/src/test/java/eu/europa/ec/edelivery/smp/auth/SMPAuthenticationProviderTest.java
index 971a819cb..95f16730e 100644
--- a/smp-webapp/src/test/java/eu/europa/ec/edelivery/smp/auth/SMPAuthenticationProviderTest.java
+++ b/smp-webapp/src/test/java/eu/europa/ec/edelivery/smp/auth/SMPAuthenticationProviderTest.java
@@ -44,7 +44,6 @@ public class SMPAuthenticationProviderTest {
 
     // response time for existing and non existing user should be "approx. equal"
     @Test
-    @Ignore
     public void authenticateByAccessTokenResponseTime() {
         /*
         UsernamePasswordAuthenticationToken userToken = new UsernamePasswordAuthenticationToken("User", "User");
diff --git a/smp-webapp/src/test/java/eu/europa/ec/edelivery/smp/controllers/ServiceGroupControllerSingleDomainTest.java b/smp-webapp/src/test/java/eu/europa/ec/edelivery/smp/controllers/ResourceControllerSingleDomainTest.java
similarity index 98%
rename from smp-webapp/src/test/java/eu/europa/ec/edelivery/smp/controllers/ServiceGroupControllerSingleDomainTest.java
rename to smp-webapp/src/test/java/eu/europa/ec/edelivery/smp/controllers/ResourceControllerSingleDomainTest.java
index af3166aea..c2385f02f 100644
--- a/smp-webapp/src/test/java/eu/europa/ec/edelivery/smp/controllers/ServiceGroupControllerSingleDomainTest.java
+++ b/smp-webapp/src/test/java/eu/europa/ec/edelivery/smp/controllers/ResourceControllerSingleDomainTest.java
@@ -16,7 +16,6 @@ package eu.europa.ec.edelivery.smp.controllers;
 import eu.europa.ec.edelivery.smp.test.SmpTestWebAppConfig;
 import eu.europa.ec.edelivery.smp.test.testutils.X509CertificateTestUtils;
 import org.junit.Before;
-import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -57,8 +56,7 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.
 @Sql(scripts = {"classpath:/cleanup-database.sql",
         "classpath:/webapp_integration_test_data.sql"},
         executionPhase = BEFORE_TEST_METHOD)
-@Ignore
-public class ServiceGroupControllerSingleDomainTest {
+public class ResourceControllerSingleDomainTest {
 
     private static final String IDENTIFIER_SCHEME = "ehealth-participantid-qns";
     private static final String PARTICIPANT_ID = "urn:poland:ncpb";
@@ -74,8 +72,7 @@ public class ServiceGroupControllerSingleDomainTest {
     private static final String HTTP_HEADER_KEY_SERVICE_GROUP_OWNER = "ServiceGroup-Owner";
 
     private static final String OTHER_OWNER_NAME = "CN=EHEALTH_SMP_TEST_BRAZIL,O=European Commission,C=BE:48b681ee8e0dcc08";
-
-    private static final RequestPostProcessor ADMIN_CREDENTIALS = httpBasic("pat_smp_admin", "test123");
+    private static final RequestPostProcessor ADMIN_CREDENTIALS = httpBasic("pat_smp_admin", "123456");
 
     @Autowired
     private WebApplicationContext webAppContext;
@@ -130,7 +127,7 @@ public class ServiceGroupControllerSingleDomainTest {
     public void existingServiceMetadataCanBeRetrievedByEverybodyNoDomain() throws Exception {
 
         String xmlSG = getSampleServiceGroupBody(IDENTIFIER_SCHEME, PARTICIPANT_ID);
-        String xmlMD = generateServiceMetadata(PARTICIPANT_ID, IDENTIFIER_SCHEME, DOCUMENT_ID, IDENTIFIER_SCHEME, "test");
+        String xmlMD = generateServiceMetadata(PARTICIPANT_ID, IDENTIFIER_SCHEME, DOCUMENT_ID, DOCUMENT_SCHEME, "test");
         // crate service group
         mvc.perform(put(URL_PATH)
                 .with(ADMIN_CREDENTIALS)
diff --git a/smp-webapp/src/test/java/eu/europa/ec/edelivery/smp/controllers/ResourceControllerTest.java b/smp-webapp/src/test/java/eu/europa/ec/edelivery/smp/controllers/ResourceControllerTest.java
index f6bd8732f..4b7cc6b01 100644
--- a/smp-webapp/src/test/java/eu/europa/ec/edelivery/smp/controllers/ResourceControllerTest.java
+++ b/smp-webapp/src/test/java/eu/europa/ec/edelivery/smp/controllers/ResourceControllerTest.java
@@ -250,7 +250,6 @@ public class ResourceControllerTest {
     }
 
     @Test
-    @Ignore
     public void getExistingServiceMetadataWithReverseProxyPort() throws Exception {
         //given
         String participantId = UUID.randomUUID().toString();
@@ -320,7 +319,6 @@ public class ResourceControllerTest {
     }
 
     @Test
-    @Ignore
     public void getExistingServiceMetadataWithReverseProxyPortInHost() throws Exception {
         //given
         String participantId = UUID.randomUUID().toString();
-- 
GitLab