Code development platform for open source projects from the European Union institutions

Skip to content
Snippets Groups Projects
Commit d3d49f74 authored by Joze RIHTARSIC's avatar Joze RIHTARSIC
Browse files

Add Unit tests

parent 5672953d
No related branches found
No related tags found
No related merge requests found
Showing
with 281 additions and 496 deletions
......@@ -97,6 +97,12 @@ public class CredentialsAlertService {
alertCredentialExpiration(userCredential, alert, credentialType, credentialId, expiredOn);
}
/**
* Method generates "expired" alert for credentials
*
* @param userCredential
*/
public void alertCredentialExpired(DBCredential userCredential) {
DBUser user = userCredential.getUser();
LOG.info("Alert access token [{}:{}] for user [{}] expired on [{}]",
......@@ -132,8 +138,6 @@ public class CredentialsAlertService {
AlertTypeEnum alertType = AlertTypeEnum.CREDENTIAL_EXPIRED;
DBAlert alert = createAlert(user.getUsername(), mailSubject, mailTo, alertLevel, alertType);
alertCredentialExpiration(userCredential, alert, credentialType, credentialId, expiredOn);
}
public void alertCredentialVerificationFailed(DBCredential credential) {
......
......@@ -192,7 +192,7 @@ public class UIUserService extends UIServiceBase<DBUser, UserRO> {
}
Optional<DBCredential> dbCredential = credentialDao.findUsernamePasswordCredentialForUserIdAndUI(authorizedUserId);
DBCredential dbAuthorizedCredentials = dbCredential.orElseThrow(() ->
new SMPRuntimeException(ErrorCode.INVALID_REQUEST, "UserId", "Can not find user id!"));
new SMPRuntimeException(ErrorCode.INVALID_REQUEST, "UserId", "Can not find user id"));
DBUser authorizedUser = dbAuthorizedCredentials.getUser();
......@@ -202,7 +202,7 @@ public class UIUserService extends UIServiceBase<DBUser, UserRO> {
}
boolean adminUpdate = userToUpdateId != null
&& authorizedUserId != userToUpdateId;
&& !Objects.equals(authorizedUserId, userToUpdateId);
// check if authorized user has the permission to change other user credentials
if (adminUpdate && authorizedUser.getApplicationRole() != ApplicationRoleType.SYSTEM_ADMIN) {
......
......@@ -76,6 +76,7 @@ public class SmlIntegrationConfiguration {
@Bean("MockIManageParticipantIdentifierWS")
@Scope(SCOPE_PROTOTYPE)
@Primary
public IManageParticipantIdentifierWS smpParticipantClient() throws UnauthorizedFault, NotFoundFault, InternalErrorFault, BadRequestFault {
......
......@@ -11,18 +11,20 @@ import org.junit.runner.RunWith;
import java.io.File;
import java.io.IOException;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
@Ignore
@RunWith(JUnitParamsRunner.class)
public class SMPSchemaGeneratorTest {
private static final String DIALECT_ORACLE="org.hibernate.dialect.Oracle10gDialect";
private static final String DIALECT_MYSQL_INNO5="org.hibernate.dialect.MySQL5InnoDBDialect";
private static final String ENTITY_PACKAGE= "eu.europa.ec.edelivery.smp.data.model";
protected static String ENTITY_PACKAGES= "eu.europa.ec.edelivery.smp.data.model,eu.europa.ec.edelivery.smp.data.model.user,eu.europa.ec.edelivery.smp.data.model.doc,eu.europa.ec.edelivery.smp.data.model.ext";
private static final Object[] dialectTestCases() {
......@@ -48,7 +50,7 @@ public class SMPSchemaGeneratorTest {
String folder = "target";
String dialect = DIALECT_ORACLE;
String version = "4.1.0-SNAPSHOT";
List<String> lstPackages = Collections.singletonList(ENTITY_PACKAGE);
List<String> lstPackages = Arrays.asList(ENTITY_PACKAGES.split(","));
File f = new File("target/oracle10g.ddl");
File fDrop = new File("target/oracle10g-drop.ddl");
f.delete(); // delete if exists
......@@ -124,8 +126,8 @@ public class SMPSchemaGeneratorTest {
public void getAllEntityClasses() throws ClassNotFoundException {
// given when
List<Class> result = testInstance.getAllEntityClasses(ENTITY_PACKAGE);
List<Class> result = testInstance.getAllEntityClasses("eu.europa.ec.edelivery.smp.data.model");
assertEquals(18, result.size());
assertEquals(10, result.size());
}
}
......@@ -3,14 +3,14 @@ package eu.europa.ec.edelivery.smp.services;
import eu.europa.ec.edelivery.smp.config.ConversionTestConfig;
import eu.europa.ec.edelivery.smp.config.ServicesBeansConfiguration;
import eu.europa.ec.edelivery.smp.config.enums.SMPPropertyEnum;
import eu.europa.ec.edelivery.smp.conversion.IdentifierService;
import eu.europa.ec.edelivery.smp.cron.CronTriggerConfig;
import eu.europa.ec.edelivery.smp.data.dao.*;
import eu.europa.ec.edelivery.smp.data.model.*;
import eu.europa.ec.edelivery.smp.data.model.DBDomain;
import eu.europa.ec.edelivery.smp.data.model.doc.DBResource;
import eu.europa.ec.edelivery.smp.data.model.doc.DBSubresource;
import eu.europa.ec.edelivery.smp.data.model.user.DBUser;
import eu.europa.ec.edelivery.smp.config.enums.SMPPropertyEnum;
import eu.europa.ec.edelivery.smp.services.mail.MailService;
import eu.europa.ec.edelivery.smp.services.spi.SmpXmlSignatureService;
import eu.europa.ec.edelivery.smp.services.ui.UIKeystoreService;
......@@ -41,9 +41,9 @@ import static eu.europa.ec.edelivery.smp.testutil.TestConstants.*;
*/
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = {IdentifierService.class,SmlConnector.class, SmpXmlSignatureService.class, MailService.class,
@ContextConfiguration(classes = {IdentifierService.class, SmlConnector.class, SmpXmlSignatureService.class, MailService.class,
DomainService.class,
ResourceDao.class, SubresourceDao.class, DomainDao.class, UserDao.class,DBAssertion.class, ConfigurationDao.class, AlertDao.class,
ResourceDao.class, SubresourceDao.class, DomainDao.class, UserDao.class, DBAssertion.class, ConfigurationDao.class, AlertDao.class,
UITruststoreService.class, UIKeystoreService.class, ConversionTestConfig.class, SMLIntegrationService.class,
CRLVerifierService.class,
ConfigurationService.class,
......@@ -53,11 +53,11 @@ import static eu.europa.ec.edelivery.smp.testutil.TestConstants.*;
@Sql(scripts = {"classpath:cleanup-database.sql",
"classpath:basic_conf_data-h2.sql"
}, executionPhase = Sql.ExecutionPhase.BEFORE_TEST_METHOD)
public abstract class AbstractServiceIntegrationTest {
public abstract class AbstractServiceIntegrationTest extends AbstractBaseDao {
protected Path resourceDirectory = Paths.get("src", "test", "resources", "keystores");
protected Path targetDirectory = Paths.get("target","keystores");
protected Path resourceDirectory = Paths.get("src", "test", "resources", "keystores");
protected Path targetDirectory = Paths.get("target", "keystores");
@Autowired
protected ResourceDao serviceGroupDao;
......@@ -74,6 +74,9 @@ public abstract class AbstractServiceIntegrationTest {
@Autowired
protected UserDao userDao;
@Autowired
protected CredentialDao credentialDao;
@Autowired
protected AlertDao alertDao;
......@@ -89,22 +92,23 @@ public abstract class AbstractServiceIntegrationTest {
* Domain: TEST_DOMAIN_CODE_1
* Users: USERNAME_1, USER_CERT_2
* ServiceGroup1: TEST_SG_ID_1, TEST_SG_SCHEMA_1
* - Domain: TEST_DOMAIN_CODE_1
* - Owners: USERNAME_1, USER_CERT_2
* - Metadata:
* - TEST_DOC_ID_1, TEST_DOC_SCHEMA_1
*
*
* - Domain: TEST_DOMAIN_CODE_1
* - Owners: USERNAME_1, USER_CERT_2
* - Metadata:
* - TEST_DOC_ID_1, TEST_DOC_SCHEMA_1
* <p>
* <p>
* ServiceGroup2: TEST_SG_ID_2, TEST_SG_SCHEMA_2
* - Domain: TEST_DOMAIN_CODE_1
* - Owners: USERNAME_1
* - Metadata: /
* - Domain: TEST_DOMAIN_CODE_1
* - Owners: USERNAME_1
* - Metadata: /
*/
public void prepareDatabaseForSingleDomainEnv() {
prepareDatabaseForSingleDomainEnv(true);
}
public void prepareDatabaseForSingleDomainEnv(boolean domainSMLRegister) {
DBDomain testDomain01 =TestDBUtils.createDBDomain(TestConstants.TEST_DOMAIN_CODE_1);
DBDomain testDomain01 = TestDBUtils.createDBDomain(TestConstants.TEST_DOMAIN_CODE_1);
testDomain01.setSmlRegistered(domainSMLRegister);
domainDao.persistFlushDetach(testDomain01);
......@@ -118,7 +122,9 @@ public abstract class AbstractServiceIntegrationTest {
DBResource sg1d1 = TestDBUtils.createDBResource(TEST_SG_ID_1, TEST_SG_SCHEMA_1);
DBSubresource sg1md1 = TestDBUtils.createDBSubresource(TEST_SG_ID_1, TEST_SG_SCHEMA_1,
TEST_DOC_ID_1, TEST_DOC_SCHEMA_1);
/*
sg1d1.addDomain(testDomain01);
sg1d1.getResourceDomains().get(0).addServiceMetadata(sg1md1);
sg1d1.getMembers().add(new DBResourceMember(sg1d1, u1));
......@@ -147,21 +153,20 @@ public abstract class AbstractServiceIntegrationTest {
* Domain: TEST_DOMAIN_CODE_1,TEST_DOMAIN_CODE_2
* Users: USERNAME_1, USER_CERT_2
* ServiceGroup1: TEST_SG_ID_1, TEST_SG_SCHEMA_1
* - Domain: TEST_DOMAIN_CODE_1
* - Owners: USERNAME_1, USER_CERT_2
* - Metadata: TEST_DOC_ID_1, TEST_DOC_SCHEMA_1
*
*
* - Domain: TEST_DOMAIN_CODE_1
* - Owners: USERNAME_1, USER_CERT_2
* - Metadata: TEST_DOC_ID_1, TEST_DOC_SCHEMA_1
* <p>
* <p>
* ServiceGroup2: TEST_SG_ID_1, TEST_SG_SCHEMA_2
* - Owners: USERNAME_1
* - Domain: TEST_DOMAIN_CODE_1
* - Metadata: /
*
* - Owners: USERNAME_1
* - Domain: TEST_DOMAIN_CODE_1
* - Metadata: /
* <p>
* ServiceGroup3: TEST_SG_ID_3, TEST_SG_SCHEMA_3
* - Owners: USERNAME_1
* - Domain: TEST_DOMAIN_CODE_2
* - Metadata: /
*
* - Owners: USERNAME_1
* - Domain: TEST_DOMAIN_CODE_2
* - Metadata: /
*/
public void prepareDatabaseForMultipeDomainEnv() {
......@@ -172,13 +177,13 @@ public abstract class AbstractServiceIntegrationTest {
DBUser u1 = userDao.findUserByUsername(USERNAME_1).get();
DBResource sg2d2 = TestDBUtils.createDBResource(TEST_SG_ID_3, TEST_SG_SCHEMA_1);
// sg2d2.getUsers().add(u1);
// sg2d2.getUsers().add(u1);
serviceGroupDao.update(sg2d2);
}
public void setDatabaseProperty(SMPPropertyEnum prop, String value){
configurationDao.setPropertyToDatabase(prop,value,"Test property");
public void setDatabaseProperty(SMPPropertyEnum prop, String value) {
configurationDao.setPropertyToDatabase(prop, value, "Test property");
configurationDao.reloadPropertiesFromDatabase();
}
......@@ -186,27 +191,26 @@ public abstract class AbstractServiceIntegrationTest {
* Domain: TEST_DOMAIN_CODE_1,TEST_DOMAIN_CODE_2
* Users: USERNAME_1, USER_CERT_2
* ServiceGroup1: TEST_SG_ID_1, TEST_SG_SCHEMA_1
* - Owners: USERNAME_1, USER_CERT_2
* - Domain: TEST_DOMAIN_CODE_1
* - Metadata:
* - TEST_DOC_ID_1, TEST_DOC_SCHEMA_1
* - TEST_DOC_ID_2, TEST_DOC_SCHEMA_2
*
*
* - Owners: USERNAME_1, USER_CERT_2
* - Domain: TEST_DOMAIN_CODE_1
* - Metadata:
* - TEST_DOC_ID_1, TEST_DOC_SCHEMA_1
* - TEST_DOC_ID_2, TEST_DOC_SCHEMA_2
* <p>
* <p>
* ServiceGroup2: TEST_SG_ID_1, TEST_SG_SCHEMA_2
* - Domain: TEST_DOMAIN_CODE_1
* - Owners: USERNAME_1
* - Metadata: /
*
* - Domain: TEST_DOMAIN_CODE_1
* - Owners: USERNAME_1
* - Metadata: /
* <p>
* ServiceGroup3: TEST_SG_ID_3, TEST_SG_SCHEMA_3
* - Owners: USERNAME_1
* - Domain: TEST_DOMAIN_CODE_2
* - Metadata:
* - TEST_DOC_ID_1, TEST_DOC_SCHEMA_1
* - Domain: TEST_DOMAIN_CODE_2
* - Metadata:
* - TEST_DOC_ID_2, TEST_DOC_SCHEMA_2
*
* - Owners: USERNAME_1
* - Domain: TEST_DOMAIN_CODE_2
* - Metadata:
* - TEST_DOC_ID_1, TEST_DOC_SCHEMA_1
* - Domain: TEST_DOMAIN_CODE_2
* - Metadata:
* - TEST_DOC_ID_2, TEST_DOC_SCHEMA_2
*/
public void prepareDatabaseForMultipeDomainWithMetadataEnv() {
......
......@@ -4,18 +4,33 @@ import eu.europa.ec.edelivery.smp.cron.SMPDynamicCronTrigger;
import eu.europa.ec.edelivery.smp.data.dao.AlertDao;
import eu.europa.ec.edelivery.smp.data.dao.CredentialDao;
import eu.europa.ec.edelivery.smp.data.dao.UserDao;
import eu.europa.ec.edelivery.smp.data.enums.CredentialType;
import eu.europa.ec.edelivery.smp.data.model.DBAlert;
import eu.europa.ec.edelivery.smp.data.model.user.DBCredential;
import eu.europa.ec.edelivery.smp.data.model.user.DBUser;
import eu.europa.ec.edelivery.smp.data.ui.enums.AlertLevelEnum;
import eu.europa.ec.edelivery.smp.data.ui.enums.AlertStatusEnum;
import eu.europa.ec.edelivery.smp.data.ui.enums.AlertTypeEnum;
import eu.europa.ec.edelivery.smp.services.mail.MailModel;
import eu.europa.ec.edelivery.smp.services.mail.MailService;
import eu.europa.ec.edelivery.smp.services.mail.prop.CredentialSuspendedProperties;
import eu.europa.ec.edelivery.smp.services.mail.prop.CredentialVerificationFailedProperties;
import eu.europa.ec.edelivery.smp.services.mail.prop.CredentialsExpirationProperties;
import eu.europa.ec.edelivery.smp.testutil.TestDBUtils;
import org.junit.Ignore;
import org.junit.Test;
import org.mockito.ArgumentCaptor;
import org.mockito.Mockito;
import java.time.OffsetDateTime;
import java.util.Arrays;
import java.util.List;
import java.util.Properties;
import java.util.stream.Collectors;
import static org.junit.Assert.*;
import static org.mockito.Mockito.*;
@Ignore
public class AlertServiceTest {
AlertDao alertDao = Mockito.mock(AlertDao.class);
......@@ -49,7 +64,7 @@ public class AlertServiceTest {
assertNotNull(alert.getReportingTime());
}
/*
@Test
public void testSubmitAlertMailNoMail() {
......@@ -64,10 +79,11 @@ public class AlertServiceTest {
public void alertBeforeUsernamePasswordExpire() {
// given
DBUser user = TestDBUtils.createDBUser("alertBeforeUsernamePasswordExpire");
DBCredential credential = TestDBUtils.createDBCredentialForUser(user, null, OffsetDateTime.now().plusDays(1), null);
String mailSubject = "mail subject";
String mailFrom = "mail.from@test.eu";
AlertLevelEnum alertLevel = AlertLevelEnum.MEDIUM;
user.setPasswordExpireOn(OffsetDateTime.now().plusDays(1));
doReturn(mailSubject).when(configurationService).getAlertBeforeExpirePasswordMailSubject();
doReturn(alertLevel).when(configurationService).getAlertBeforeExpirePasswordLevel();
doReturn(mailFrom).when(configurationService).getAlertEmailFrom();
......@@ -76,7 +92,7 @@ public class AlertServiceTest {
List<String> expectedTemplateProperties = Arrays.asList(CredentialsExpirationProperties.values()).stream()
.map(CredentialsExpirationProperties::name).collect(Collectors.toList());
// when
testInstance.alertBeforeUsernamePasswordExpire(user);
testInstance.alertBeforeCredentialExpire(credential);
// then
assertAlertSend(alertType, user.getEmailAddress(), mailFrom, mailSubject,
expectedTemplateProperties);
......@@ -93,7 +109,9 @@ public class AlertServiceTest {
String mailSubject = "mail subject";
String mailFrom = "mail.from@test.eu";
AlertLevelEnum alertLevel = AlertLevelEnum.MEDIUM;
user.setPasswordExpireOn(OffsetDateTime.now().plusDays(1));
DBCredential credential = TestDBUtils.createDBCredentialForUser(user, null, OffsetDateTime.now().plusDays(-1), null);
doReturn(mailSubject).when(configurationService).getAlertExpiredPasswordMailSubject();
doReturn(alertLevel).when(configurationService).getAlertExpiredPasswordLevel();
doReturn(mailFrom).when(configurationService).getAlertEmailFrom();
......@@ -101,7 +119,7 @@ public class AlertServiceTest {
List<String> expectedTemplateProperties = Arrays.asList(CredentialsExpirationProperties.values()).stream()
.map(CredentialsExpirationProperties::name).collect(Collectors.toList());
// when
testInstance.alertUsernamePasswordExpired(user);
testInstance.alertCredentialExpired(credential);
// then
assertAlertSend(alertType, user.getEmailAddress(), mailFrom, mailSubject,
expectedTemplateProperties);
......@@ -115,10 +133,11 @@ public class AlertServiceTest {
public void alertBeforeAccessTokenExpire() {
// given
DBUser user = TestDBUtils.createDBUser("alertBeforeAccessTokenExpire");
DBCredential credential = TestDBUtils.createDBCredentialForUserAccessToken(user, null, OffsetDateTime.now().plusDays(1), null);
String mailSubject = "mail subject";
String mailFrom = "mail.from@test.eu";
AlertLevelEnum alertLevel = AlertLevelEnum.MEDIUM;
user.setAccessTokenExpireOn(OffsetDateTime.now().plusDays(1));
doReturn(mailSubject).when(configurationService).getAlertBeforeExpireAccessTokenMailSubject();
doReturn(alertLevel).when(configurationService).getAlertBeforeExpireAccessTokenLevel();
doReturn(mailFrom).when(configurationService).getAlertEmailFrom();
......@@ -127,7 +146,7 @@ public class AlertServiceTest {
List<String> expectedTemplateProperties = Arrays.asList(CredentialsExpirationProperties.values()).stream()
.map(CredentialsExpirationProperties::name).collect(Collectors.toList());
// when
testInstance.alertBeforeAccessTokenExpire(user);
testInstance.alertBeforeCredentialExpire(credential);
// then
assertAlertSend(alertType, user.getEmailAddress(), mailFrom, mailSubject,
expectedTemplateProperties);
......@@ -137,14 +156,15 @@ public class AlertServiceTest {
verify(configurationService, times(1)).getAlertEmailFrom();
}
@Test
public void alertAccessTokenExpired() {
// given
DBUser user = TestDBUtils.createDBUser("alertAccessTokenExpired");
DBCredential credential = TestDBUtils.createDBCredentialForUserAccessToken(user, null, OffsetDateTime.now().plusDays(-1), null);
String mailSubject = "mail subject";
String mailFrom = "mail.from@test.eu";
AlertLevelEnum alertLevel = AlertLevelEnum.MEDIUM;
user.setAccessTokenExpireOn(OffsetDateTime.now().plusDays(1));
doReturn(mailSubject).when(configurationService).getAlertExpiredAccessTokenMailSubject();
doReturn(alertLevel).when(configurationService).getAlertExpiredAccessTokenLevel();
doReturn(mailFrom).when(configurationService).getAlertEmailFrom();
......@@ -152,7 +172,7 @@ public class AlertServiceTest {
List<String> expectedTemplateProperties = Arrays.asList(CredentialsExpirationProperties.values()).stream()
.map(CredentialsExpirationProperties::name).collect(Collectors.toList());
// when
testInstance.alertAccessTokenExpired(user);
testInstance.alertCredentialExpired(credential);
// then
assertAlertSend(alertType, user.getEmailAddress(), mailFrom, mailSubject,
expectedTemplateProperties);
......@@ -166,6 +186,7 @@ public class AlertServiceTest {
public void alertBeforeCertificateExpire() {
// given
DBUser user = TestDBUtils.createDBUser("user", "alertBeforeCertificateExpire");
DBCredential credential = TestDBUtils.createDBCredentialForUserCertificate(user, null, OffsetDateTime.now().plusDays(1), null);
String mailSubject = "mail subject";
String mailFrom = "mail.from@test.eu";
AlertLevelEnum alertLevel = AlertLevelEnum.MEDIUM;
......@@ -176,7 +197,7 @@ public class AlertServiceTest {
List<String> expectedTemplateProperties = Arrays.asList(CredentialsExpirationProperties.values()).stream()
.map(CredentialsExpirationProperties::name).collect(Collectors.toList());
// when
testInstance.alertBeforeCertificateExpire(user);
testInstance.alertBeforeCredentialExpire(credential);
// then
assertAlertSend(alertType, user.getEmailAddress(), mailFrom, mailSubject,
expectedTemplateProperties);
......@@ -190,6 +211,7 @@ public class AlertServiceTest {
public void alertCertificateExpired() {
// given
DBUser user = TestDBUtils.createDBUser("user", "alertCertificateExpired");
DBCredential credential = TestDBUtils.createDBCredentialForUserCertificate(user, null, OffsetDateTime.now().plusDays(1), null);
String mailSubject = "mail subject";
String mailFrom = "mail.from@test.eu";
AlertLevelEnum alertLevel = AlertLevelEnum.MEDIUM;
......@@ -201,7 +223,7 @@ public class AlertServiceTest {
.map(CredentialsExpirationProperties::name).collect(Collectors.toList());
// when
testInstance.alertCertificateExpired(user);
testInstance.alertCredentialExpired(credential);
// then
assertAlertSend(alertType, user.getEmailAddress(), mailFrom, mailSubject,
expectedTemplateProperties);
......@@ -244,10 +266,13 @@ public class AlertServiceTest {
@Test
public void alertUsernameCredentialVerificationFailed() {
DBUser user = TestDBUtils.createDBUser("user");
DBCredential credential = TestDBUtils.createDBCredentialForUser(user, null, OffsetDateTime.now().plusDays(1), null);
credential.setSequentialLoginFailureCount(5);
credential.setLastFailedLoginAttempt(OffsetDateTime.now());
String mailSubject = "mail subject";
String mailFrom = "mail.from@test.eu";
user.setSequentialLoginFailureCount(5);
user.setLastFailedLoginAttempt(OffsetDateTime.now());
AlertLevelEnum alertLevel = AlertLevelEnum.MEDIUM;
doReturn(true).when(configurationService).getAlertUserLoginFailureEnabled();
......@@ -260,7 +285,7 @@ public class AlertServiceTest {
.map(CredentialVerificationFailedProperties::name).collect(Collectors.toList());
// when
testInstance.alertCredentialVerificationFailed(user, CredentialTypeEnum.USERNAME_PASSWORD);
testInstance.alertCredentialVerificationFailed(credential);
// then
assertAlertSend(alertType, user.getEmailAddress(), mailFrom, mailSubject,
expectedTemplateProperties);
......@@ -274,10 +299,12 @@ public class AlertServiceTest {
@Test
public void alertTokenCredentialVerificationFailed() {
DBUser user = TestDBUtils.createDBUser("user", "alertCertificateExpired");
DBCredential credential = TestDBUtils.createDBCredentialForUserAccessToken(user, null, OffsetDateTime.now().plusDays(1), null);
credential.setSequentialLoginFailureCount(5);
credential.setLastFailedLoginAttempt(OffsetDateTime.now());
String mailSubject = "mail subject";
String mailFrom = "mail.from@test.eu";
user.setSequentialTokenLoginFailureCount(5);
user.setLastTokenFailedLoginAttempt(OffsetDateTime.now());
AlertLevelEnum alertLevel = AlertLevelEnum.MEDIUM;
doReturn(true).when(configurationService).getAlertUserLoginFailureEnabled();
......@@ -290,7 +317,7 @@ public class AlertServiceTest {
.map(CredentialVerificationFailedProperties::name).collect(Collectors.toList());
// when
testInstance.alertCredentialVerificationFailed(user, CredentialTypeEnum.ACCESS_TOKEN);
testInstance.alertCredentialVerificationFailed(credential);
// then
assertAlertSend(alertType, user.getEmailAddress(), mailFrom, mailSubject,
expectedTemplateProperties);
......@@ -303,11 +330,13 @@ public class AlertServiceTest {
@Test
public void alertUsernameCredentialsSuspended() {
DBUser user = TestDBUtils.createDBUser("user", "alertCertificateExpired");
DBUser user = TestDBUtils.createDBUser("user", "alertUsernameCredentialsSuspended");
DBCredential credential = TestDBUtils.createDBCredentialForUser(user, null, OffsetDateTime.now().plusDays(1), null);
credential.setSequentialLoginFailureCount(5);
credential.setLastFailedLoginAttempt(OffsetDateTime.now());
String mailSubject = "mail subject";
String mailFrom = "mail.from@test.eu";
user.setSequentialLoginFailureCount(5);
user.setLastFailedLoginAttempt(OffsetDateTime.now());
AlertLevelEnum alertLevel = AlertLevelEnum.MEDIUM;
doReturn(true).when(configurationService).getAlertUserSuspendedEnabled();
......@@ -320,7 +349,7 @@ public class AlertServiceTest {
.map(CredentialSuspendedProperties::name).collect(Collectors.toList());
// when
testInstance.alertCredentialsSuspended(user, CredentialTypeEnum.USERNAME_PASSWORD);
testInstance.alertCredentialsSuspended(credential);
// then
assertAlertSend(alertType, user.getEmailAddress(), mailFrom, mailSubject,
expectedTemplateProperties);
......@@ -334,10 +363,13 @@ public class AlertServiceTest {
@Test
public void alertTokenCredentialsSuspended() {
DBUser user = TestDBUtils.createDBUser("user", "alertCertificateExpired");
DBCredential credential = TestDBUtils.createDBCredentialForUserAccessToken(user, null, OffsetDateTime.now().plusDays(1), null);
credential.setSequentialLoginFailureCount(5);
credential.setLastFailedLoginAttempt(OffsetDateTime.now());
String mailSubject = "mail subject";
String mailFrom = "mail.from@test.eu";
user.setSequentialTokenLoginFailureCount(5);
user.setLastTokenFailedLoginAttempt(OffsetDateTime.now());
AlertLevelEnum alertLevel = AlertLevelEnum.MEDIUM;
doReturn(true).when(configurationService).getAlertUserSuspendedEnabled();
......@@ -350,7 +382,7 @@ public class AlertServiceTest {
.map(CredentialSuspendedProperties::name).collect(Collectors.toList());
// when
testInstance.alertCredentialsSuspended(user, CredentialTypeEnum.ACCESS_TOKEN);
testInstance.alertCredentialsSuspended(credential);
// then
assertAlertSend(alertType, user.getEmailAddress(), mailFrom, mailSubject,
expectedTemplateProperties);
......@@ -361,7 +393,6 @@ public class AlertServiceTest {
verify(configurationService, times(1)).getAlertEmailFrom();
}
public void assertAlertSend(AlertTypeEnum alertType, String mailTo, String mailFrom, String mailSubject,
List<String> templateProperties) {
......@@ -394,5 +425,5 @@ public class AlertServiceTest {
assertEquals(templateProperties.size(), model.getModel().size());
}
*/
}
......@@ -18,7 +18,6 @@ import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertThrows;
@Ignore
public class CRLVerifierServiceTest extends AbstractServiceIntegrationTest {
@Rule
......@@ -41,7 +40,7 @@ public class CRLVerifierServiceTest extends AbstractServiceIntegrationTest {
crlVerifierServiceInstance = Mockito.spy(crlVerifierServiceInstance);
configurationService = Mockito.spy(configurationService);
ReflectionTestUtils.setField(crlVerifierServiceInstance, "configurationService", configurationService);
// force veifiction
// force verification
Mockito.doReturn(true).when(configurationService).forceCRLValidation();
}
......
package eu.europa.ec.edelivery.smp.services;
import org.junit.Test;
import static org.junit.Assert.*;
public class CredentialServiceTest {
@Test
public void authenticateByUsernamePassword() {
}
@Test
public void authenticateByAuthenticationToken() {
}
@Test
public void isNotValidCredential() {
}
@Test
public void authenticateByCertificateToken() {
}
@Test
public void validateCertificatePolicyMatchLegacy() {
}
@Test
public void delayResponse() {
}
@Test
public void loginAttemptFailedAndThrowError() {
}
@Test
public void validateIfCredentialIsSuspended() {
}
@Test
public void getLoginMaxAttempts() {
}
@Test
public void getLoginSuspensionTimeInSeconds() {
}
@Test
public void getAlertBeforeUserSuspendedAlertMoment() {
}
@Test
public void getLoginFailDelayInMilliSeconds() {
}
}
......@@ -56,7 +56,6 @@ import static org.mockito.Mockito.verify;
* @author Joze Rihtarsic
* @since 4.1
*/
@Ignore
@RunWith(SpringRunner.class)
@ContextConfiguration(classes = {SmlIntegrationConfiguration.class,
SmlConnector.class, DomainService.class})
......@@ -186,7 +185,7 @@ public class DomainServiceSMLTest extends AbstractServiceIntegrationTest {
verify(integrationMock.getParticipantManagmentClientMocks().get(2)).create(any());
Mockito.verifyNoMoreInteractions(integrationMock.getParticipantManagmentClientMocks().toArray());
*/
}
@Test
......
......@@ -82,8 +82,10 @@ public class SMLIntegrationServiceNoSMLIntegrationTest extends AbstractServiceIn
expectedException.expect(SMPRuntimeException.class);
expectedException.expectMessage("Configuration error: SML integration is not enabled!");
DBDomain testDomain01 = domainDao.getDomainByCode(TEST_DOMAIN_CODE_1).get();
domainDao.gety
// when
testInstance.registerParticipant(TEST_SG_ID_1, TEST_SG_SCHEMA_1, TEST_DOMAIN_CODE_1);
testInstance.registerParticipant(TEST_SG_ID_1, TEST_SG_SCHEMA_1, testDomain01);
}
*/
......
......@@ -49,7 +49,6 @@ import static org.mockito.Mockito.verify;
* @author Joze Rihtarsic
* @since 4.1
*/
@Ignore
@RunWith(SpringRunner.class)
@ContextConfiguration(classes = {SmlIntegrationConfiguration.class,
SMLIntegrationService.class})
......
/*
* Copyright 2018 European Commission | CEF eDelivery
*
* Licensed under the EUPL, Version 1.2 or - as soon they will be approved by the European Commission - subsequent versions of the EUPL (the "Licence");
* You may not use this work except in compliance with the Licence.
*
* You may obtain a copy of the Licence attached in file: LICENCE-EUPL-v1.2.pdf
*
* Unless required by applicable law or agreed to in writing, software distributed under the Licence is distributed on an "AS IS" basis,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the Licence for the specific language governing permissions and limitations under the Licence.
*/
package eu.europa.ec.edelivery.smp.services;
import eu.europa.ec.edelivery.smp.services.spi.SmpXmlSignatureService;
import eu.europa.ec.edelivery.smp.services.ui.UIKeystoreService;
import eu.europa.ec.edelivery.smp.testutil.SignatureUtil;
import org.junit.Before;
import org.junit.Ignore;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mockito;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.test.util.ReflectionTestUtils;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import java.io.File;
import java.nio.file.Path;
import java.nio.file.Paths;
import static org.junit.Assert.assertEquals;
import static org.apache.xml.security.signature.XMLSignature.ALGO_ID_SIGNATURE_RSA_SHA256;
import static javax.xml.crypto.dsig.DigestMethod.SHA256;
/**
* Created by gutowpa on 24/01/2018.
*/
@Ignore
@RunWith(SpringRunner.class)
@ContextConfiguration(classes = {SmpXmlSignatureService.class})
public class ServiceMetadataSignerMultipleDomainsIntegrationTest extends AbstractServiceIntegrationTest {
Path resourceDirectory = Paths.get("src", "test", "resources", "keystores");
ConfigurationService configurationService = Mockito.mock(ConfigurationService.class);
@Autowired
UIKeystoreService uiKeystoreService;
@Autowired
private SmpXmlSignatureService signer;
@Before
public void setup(){
configurationService = Mockito.spy(configurationService);
ReflectionTestUtils.setField(uiKeystoreService,"configurationService",configurationService);
ReflectionTestUtils.setField(signer,"uiKeystoreService",uiKeystoreService);
// set keystore properties
File keystoreFile = new File(resourceDirectory.toFile(), "smp-keystore_multiple_domains.jks");
Mockito.doReturn( keystoreFile).when(configurationService).getKeystoreFile();
Mockito.doReturn( resourceDirectory.toFile()).when(configurationService).getSecurityFolder();
Mockito.doReturn("test123").when(configurationService).getKeystoreCredentialToken();
uiKeystoreService.refreshData();
}
}
......@@ -14,7 +14,6 @@ import org.springframework.test.context.ContextConfiguration;
import javax.mail.internet.MimeMessage;
@Ignore
@ContextConfiguration(classes = {MockAlertBeans.class, MailService.class})
public class MailServiceTest extends AbstractServiceIntegrationTest {
......
......@@ -18,6 +18,7 @@ import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.util.ReflectionTestUtils;
import javax.net.ssl.KeyManager;
import javax.security.auth.x500.X500Principal;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
......@@ -29,9 +30,6 @@ import java.util.List;
import static org.junit.Assert.*;
;
@Ignore
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = {UIKeystoreService.class, ConversionTestConfig.class,
ConfigurationService.class})
......@@ -39,6 +37,9 @@ public class UIKeystoreServiceTest extends AbstractServiceIntegrationTest {
public static final String S_ALIAS = "single_domain_key";
public static final X500Principal CERT_SUBJECT_X500PRINCIPAL = new X500Principal("CN=SMP Mock Services, OU=DIGIT, O=European Commision, C=BE");
@Rule
public ExpectedException expectedEx = ExpectedException.none();
......@@ -88,7 +89,7 @@ public class UIKeystoreServiceTest extends AbstractServiceIntegrationTest {
X509Certificate certificate = testInstance.getCert(S_ALIAS);
// then
assertNotNull(certificate);
assertEquals("C=BE,O=European Commision,OU=DIGIT,CN=SMP Mock Services", certificate.getSubjectDN().getName());
assertEquals(CERT_SUBJECT_X500PRINCIPAL, certificate.getSubjectX500Principal());
}
@Test
......@@ -108,7 +109,8 @@ public class UIKeystoreServiceTest extends AbstractServiceIntegrationTest {
X509Certificate certificate = testInstance.getCert(null);
// then
assertNotNull(certificate);
assertEquals("C=BE,O=European Commision,OU=DIGIT,CN=SMP Mock Services", certificate.getSubjectDN().getName());
assertEquals(CERT_SUBJECT_X500PRINCIPAL, certificate.getSubjectX500Principal());
}
@Test
......@@ -130,7 +132,7 @@ public class UIKeystoreServiceTest extends AbstractServiceIntegrationTest {
X509Certificate certificate = testInstance.getCert(S_ALIAS);
// then
assertNotNull(certificate);
assertEquals("C=BE,O=European Commision,OU=DIGIT,CN=SMP Mock Services", certificate.getSubjectDN().getName());
assertEquals(CERT_SUBJECT_X500PRINCIPAL, certificate.getSubjectX500Principal());
}
@Test
......
......@@ -17,8 +17,8 @@ import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
@Ignore
@ContextConfiguration(classes = {UIServiceGroupSearchService.class, UIServiceMetadataService.class})
@Ignore
public class UIServiceGroupSearchServiceTest extends AbstractServiceIntegrationTest {
@Autowired
......
......@@ -35,7 +35,6 @@ import java.util.*;
import static org.hamcrest.CoreMatchers.containsString;
import static org.junit.Assert.*;
@Ignore
@RunWith(SpringJUnit4ClassRunner.class)
public class UITruststoreServiceIntegrationTest extends AbstractServiceIntegrationTest {
......@@ -300,10 +299,9 @@ public class UITruststoreServiceIntegrationTest extends AbstractServiceIntegrati
OffsetDateTime.now().plusDays(1),
Collections.emptyList());
// when
CertificateNotYetValidException result = assertThrows(CertificateNotYetValidException.class, () ->
assertThrows(CertificateNotYetValidException.class, () ->
testInstance.checkFullCertificateValidity(certificate));
//then
MatcherAssert.assertThat(result.getMessage(), CoreMatchers.containsString("certificate not valid till"));
}
@Test
......@@ -318,10 +316,9 @@ public class UITruststoreServiceIntegrationTest extends AbstractServiceIntegrati
Collections.emptyList());
// when
CertificateExpiredException result = assertThrows(CertificateExpiredException.class, () ->
assertThrows(CertificateExpiredException.class, () ->
testInstance.checkFullCertificateValidity(certificate));
//then
MatcherAssert.assertThat(result.getMessage(), CoreMatchers.containsString("certificate expired"));
}
@Test
......@@ -454,7 +451,7 @@ public class UITruststoreServiceIntegrationTest extends AbstractServiceIntegrati
String alias = testInstance.createAliasFromCert(certificate, null);
// then
assertEquals("SMP Test", alias);
assertEquals("smp test", alias);
}
......@@ -467,7 +464,7 @@ public class UITruststoreServiceIntegrationTest extends AbstractServiceIntegrati
String alias = testInstance.createAliasFromCert(certificate, null);
// then
assertEquals("SMP Test", alias);
assertEquals("smp test", alias);
}
@Test
......
......@@ -3,13 +3,32 @@ package eu.europa.ec.edelivery.smp.services.ui;
import eu.europa.ec.edelivery.smp.config.ConversionTestConfig;
import eu.europa.ec.edelivery.smp.data.dao.ResourceDao;
import eu.europa.ec.edelivery.smp.data.enums.ApplicationRoleType;
import eu.europa.ec.edelivery.smp.data.model.user.DBCredential;
import eu.europa.ec.edelivery.smp.data.model.user.DBUser;
import eu.europa.ec.edelivery.smp.data.ui.ServiceResult;
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.TestDBUtils;
import org.hamcrest.CoreMatchers;
import org.hamcrest.MatcherAssert;
import org.junit.Assert;
import org.junit.Ignore;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.authentication.BadCredentialsException;
import org.springframework.security.crypto.bcrypt.BCrypt;
import org.springframework.test.context.ContextConfiguration;
import java.util.Optional;
import java.util.UUID;
import static org.junit.Assert.*;
/**
* Purpose of class is to test ServiceGroupService base methods
......@@ -18,7 +37,6 @@ import org.springframework.test.context.ContextConfiguration;
* @since 4.1
*/
@ContextConfiguration(classes = {UIUserService.class, ConversionTestConfig.class})
@Ignore
public class UIUserServiceIntegrationTest extends AbstractServiceIntegrationTest {
@Rule
public ExpectedException expectedExeption = ExpectedException.none();
......@@ -26,12 +44,10 @@ public class UIUserServiceIntegrationTest extends AbstractServiceIntegrationTest
protected UIUserService testInstance;
@Autowired
protected ResourceDao serviceGroupDao;
/*
protected void insertDataObjects(int size) {
for (int i = 0; i < size; i++) {
DBUser d = TestDBUtils.createDBUserByUsername("user" + i);
d.setPassword(BCrypt.hashpw(d.getPassword(), BCrypt.gensalt()));
userDao.persistFlushDetach(d);
}
}
......@@ -73,171 +89,35 @@ public class UIUserServiceIntegrationTest extends AbstractServiceIntegrationTest
assertNotNull(res.getServiceEntities().get(0).getUserId());
assertNotNull(res.getServiceEntities().get(0).getUsername());
assertNotNull(res.getServiceEntities().get(0).getEmailAddress());
assertNull(res.getServiceEntities().get(0).getPassword()); // Service list must not return passwords
assertNotNull(res.getServiceEntities().get(0).getRole());
}
@Test
public void testAddUserWithoutCertificate() {
public void testAddUser() {
// given
insertDataObjects(15);
long iCnt = userDao.getDataListCount(null);
UserRO user = new UserRO();
user.setPassword(UUID.randomUUID().toString());
user.setUsername(UUID.randomUUID().toString());
user.setEmailAddress(UUID.randomUUID().toString());
user.setRole("ROLE");
user.setRole(ApplicationRoleType.USER);
user.setStatus(EntityROStatus.NEW.getStatusNumber());
//when
testInstance.updateUserList(Collections.singletonList(user), null);
testInstance.adminCreateUserData(user);
// then
long iCntNew = userDao.getDataListCount(null);
assertEquals(iCnt + 1, iCntNew);
Optional<DBUser> oUsr = userDao.findUserByUsername(user.getUsername());
assertTrue(oUsr.isPresent());
assertTrue(BCrypt.checkpw(user.getPassword(), oUsr.get().getPassword())); // password must be encrypted
assertEquals(user.getUsername(), oUsr.get().getUsername());
assertEquals(user.getRole(), oUsr.get().getRole());
assertEquals(user.getRole(), oUsr.get().getApplicationRole());
assertEquals(user.getEmailAddress(), oUsr.get().getEmailAddress());
assertNull(oUsr.get().getCertificate());
}
@Test
public void testAddUserWithCertificate() {
// given
insertDataObjects(15);
long iCnt = userDao.getDataListCount(null);
Calendar calTo = Calendar.getInstance();
calTo.add(Calendar.YEAR, 1);
Date now = Calendar.getInstance().getTime();
Date future = calTo.getTime();
UserRO user = new UserRO();
user.setPassword(UUID.randomUUID().toString());
user.setUsername(UUID.randomUUID().toString());
user.setEmailAddress(UUID.randomUUID().toString());
user.setRole("ROLE");
CertificateRO cert = new CertificateRO();
cert.setSubject(UUID.randomUUID().toString());
cert.setIssuer(UUID.randomUUID().toString());
cert.setSerialNumber(UUID.randomUUID().toString());
cert.setCertificateId(UUID.randomUUID().toString());
cert.setValidFrom(now);
cert.setValidTo(future);
user.setCertificate(cert);
user.setStatus(EntityROStatus.NEW.getStatusNumber());
//when
testInstance.updateUserList(Collections.singletonList(user), null);
// then
long iCntNew = userDao.getDataListCount(null);
assertEquals(iCnt + 1, iCntNew);
Optional<DBUser> oUsr = userDao.findUserByUsername(user.getUsername());
assertTrue(oUsr.isPresent());
assertTrue(BCrypt.checkpw(user.getPassword(), oUsr.get().getPassword())); // password must be encrypted
assertEquals(user.getUsername(), oUsr.get().getUsername());
assertEquals(user.getRole(), oUsr.get().getRole());
assertEquals(user.getEmailAddress(), oUsr.get().getEmailAddress());
assertNotNull(oUsr.get().getCertificate());
assertEquals(cert.getCertificateId(), cert.getCertificateId());
assertEquals(cert.getSubject(), cert.getSubject());
assertEquals(cert.getIssuer(), cert.getIssuer());
assertEquals(cert.getSerialNumber(), cert.getSerialNumber());
assertEquals(now, cert.getValidFrom());
assertEquals(future, cert.getValidTo());
}
@Test
public void testAddUserWithOnlyCertificate() {
// given
insertDataObjects(15);
long iCnt = userDao.getDataListCount(null);
Calendar calTo = Calendar.getInstance();
calTo.add(Calendar.YEAR, 1);
Date now = Calendar.getInstance().getTime();
Date future = calTo.getTime();
UserRO user = new UserRO();
user.setRole("ROLE");
CertificateRO cert = new CertificateRO();
cert.setSubject(UUID.randomUUID().toString());
cert.setIssuer(UUID.randomUUID().toString());
cert.setSerialNumber(UUID.randomUUID().toString());
cert.setCertificateId(UUID.randomUUID().toString());
cert.setValidFrom(now);
cert.setValidTo(future);
user.setCertificate(cert);
user.setStatus(EntityROStatus.NEW.getStatusNumber());
//when
testInstance.updateUserList(Collections.singletonList(user), null);
// then
long iCntNew = userDao.getDataListCount(null);
assertEquals(iCnt + 1, iCntNew);
Optional<DBUser> oUsr = userDao.findUserByIdentifier(user.getCertificate().getCertificateId());
assertTrue(oUsr.isPresent());
assertEquals(user.getRole(), oUsr.get().getRole());
assertEquals(user.getEmailAddress(), oUsr.get().getEmailAddress());
assertNotNull(oUsr.get().getCertificate());
assertEquals(cert.getCertificateId(), cert.getCertificateId());
assertEquals(cert.getSubject(), cert.getSubject());
assertEquals(cert.getIssuer(), cert.getIssuer());
assertEquals(cert.getSerialNumber(), cert.getSerialNumber());
assertEquals(now, cert.getValidFrom());
assertEquals(future, cert.getValidTo());
}
@Test
public void testUserRemoveCertificate() {
// given
OffsetDateTime now = OffsetDateTime.now().truncatedTo(ChronoUnit.MINUTES);
OffsetDateTime future = now.plusYears(1);
DBUser user = new DBUser();
user.setPassword(UUID.randomUUID().toString());
user.setUsername(UUID.randomUUID().toString());
user.setEmailAddress(UUID.randomUUID().toString());
user.setRole("ROLE");
DBCertificate cert = new DBCertificate();
cert.setSubject(UUID.randomUUID().toString());
cert.setIssuer(UUID.randomUUID().toString());
cert.setSerialNumber(UUID.randomUUID().toString());
cert.setCertificateId(UUID.randomUUID().toString());
cert.setValidFrom(now);
cert.setValidTo(future);
user.setCertificate(cert);
userDao.persistFlushDetach(user);
ServiceResult<UserRO> urTest = testInstance.getTableList(-1, -1, null, null, null);
assertEquals(1, urTest.getServiceEntities().size());
UserRO userRO = urTest.getServiceEntities().get(0);
assertNotNull(userRO.getCertificate());
//when
userRO.setCertificate(null);
userRO.setStatus(EntityROStatus.UPDATED.getStatusNumber());
testInstance.updateUserList(Collections.singletonList(userRO), null);
// then
ServiceResult<UserRO> res = testInstance.getTableList(-1, -1, null, null, null);
assertEquals(1, urTest.getServiceEntities().size());
UserRO userResRO = urTest.getServiceEntities().get(0);
assertNull(userResRO.getCertificate());
}
@Test
public void testDeleteUser() {
......@@ -247,42 +127,17 @@ public class UIUserServiceIntegrationTest extends AbstractServiceIntegrationTest
assertEquals(15, urTest.getServiceEntities().size());
UserRO user = urTest.getServiceEntities().get(0);
user.setStatus(EntityROStatus.REMOVE.getStatusNumber());
Optional<DBUser> rmUsr = userDao.findUserByUsername(user.getUsername());
//when
testInstance.updateUserList(Collections.singletonList(user), null);
testInstance.adminDeleteUserData(rmUsr.get().getId());
// then
long iCntNew = userDao.getDataListCount(null);
Optional<DBUser> rmUsr = userDao.findUserByUsername(user.getUsername());
Optional<DBUser> rmUsr2 = userDao.findUserByUsername(user.getUsername());
assertEquals(urTest.getServiceEntities().size() - 1, iCntNew);
assertFalse(rmUsr.isPresent());
}
@Test
@Transactional
public void testGenerateAccessTokenForUser() {
String userPassword = UUID.randomUUID().toString();
DBUser user = new DBUser();
user.setPassword(BCrypt.hashpw(userPassword, BCrypt.gensalt()));
user.setUsername(UUID.randomUUID().toString());
user.setEmailAddress(UUID.randomUUID().toString());
user.setRole("ROLE");
userDao.persistFlushDetach(user);
AccessTokenRO token = testInstance.generateAccessTokenForUser(user.getId(), user.getId(), userPassword);
Optional<DBUser> optResult = userDao.findUserByAuthenticationToken(token.getIdentifier());
assertTrue(optResult.isPresent());
assertNotNull(token);
DBUser result = optResult.get();
assertEquals(user.getUsername(), result.getUsername());
assertEquals(result.getAccessTokenIdentifier(), token.getIdentifier());
assertTrue(BCrypt.checkpw(token.getValue(), result.getAccessToken()));
assertNotNull(result.getAccessTokenExpireOn());
assertNotNull(result.getAccessTokenGeneratedOn());
assertFalse(rmUsr2.isPresent());
}
@Test
......@@ -314,152 +169,60 @@ public class UIUserServiceIntegrationTest extends AbstractServiceIntegrationTest
@Test
public void testUpdateUserPasswordUserNotAuthorized() {
String userPassword = UUID.randomUUID().toString();
DBUser user = new DBUser();
user.setPassword(BCrypt.hashpw(userPassword, BCrypt.gensalt()));
user.setUsername(UUID.randomUUID().toString());
user.setEmailAddress(UUID.randomUUID().toString());
user.setRole("ROLE");
DBUser user = TestDBUtils.createDBUserByUsername(UUID.randomUUID().toString());
DBCredential credential = TestDBUtils.createDBCredentialForUser(user, null, null, null);
credential.setValue(BCrypt.hashpw("userPassword", BCrypt.gensalt()));
userDao.persistFlushDetach(user);
credentialDao.persistFlushDetach(credential);
long authorizedUserId = user.getId();
long userToUpdateId = 1L;
String authorizedPassword = "oldPass";
String newPassword = "TTTTtttt1111$$$$$";
BadCredentialsException result = assertThrows(BadCredentialsException.class,
() -> testInstance.updateUserPassword(authorizedUserId, userToUpdateId, authorizedPassword, newPassword));
() -> testInstance.updateUserPassword(authorizedUserId, authorizedUserId, authorizedPassword, newPassword));
MatcherAssert.assertThat(result.getMessage(), CoreMatchers.containsString("Password change failed; Invalid current password!"));
MatcherAssert.assertThat(result.getMessage(), CoreMatchers.containsString("Password change failed; Invalid authorization password!"));
}
@Test
public void testUpdateUserPasswordOK() {
String userPassword = UUID.randomUUID().toString();
DBUser user = new DBUser();
user.setPassword(BCrypt.hashpw(userPassword, BCrypt.gensalt()));
user.setUsername(UUID.randomUUID().toString());
user.setEmailAddress(UUID.randomUUID().toString());
user.setRole("ROLE");
DBUser user = TestDBUtils.createDBUserByUsername(UUID.randomUUID().toString());
DBCredential credential = TestDBUtils.createDBCredentialForUser(user, null, null, null);
credential.setValue(BCrypt.hashpw("userPassword", BCrypt.gensalt()));
userDao.persistFlushDetach(user);
credentialDao.persistFlushDetach(credential);
long authorizedUserId = user.getId();
long userToUpdateId = user.getId();
String authorizedPassword = userPassword;
String authorizedPassword = "userPassword";
String newPassword = "TTTTtttt1111$$$$$";
testInstance.updateUserPassword(authorizedUserId, userToUpdateId, authorizedPassword, newPassword);
}
@Test
public void testUpdateUserdataOK() {
String userPassword = UUID.randomUUID().toString();
DBUser user = new DBUser();
user.setPassword(BCrypt.hashpw(userPassword, BCrypt.gensalt()));
user.setUsername(UUID.randomUUID().toString());
user.setEmailAddress(UUID.randomUUID().toString());
user.setRole("ROLE");
public void testAdminUpdateUserdataOK() {
DBUser user = TestDBUtils.createDBUserByUsername(UUID.randomUUID().toString());
userDao.persistFlushDetach(user);
UserRO userRO = new UserRO();
userRO.setEmailAddress(UUID.randomUUID().toString());
userRO.setUsername(UUID.randomUUID().toString());
userRO.setAccessTokenId(UUID.randomUUID().toString());
userRO.setRole(UUID.randomUUID().toString());
userRO.setFullName(UUID.randomUUID().toString());
userRO.setRole(ApplicationRoleType.SYSTEM_ADMIN);
testInstance.updateUserdata(user.getId(), userRO);
testInstance.adminUpdateUserData(user.getId(), userRO);
DBUser changedUser = userDao.findUser(user.getId()).get();
// fields must not change
assertEquals(user.getUsername(), changedUser.getUsername());
assertEquals(user.getAccessToken(), changedUser.getAccessToken());
assertEquals(user.getRole(), changedUser.getRole());
assertEquals(userRO.getRole(), changedUser.getApplicationRole());
assertEquals(userRO.getEmailAddress(), changedUser.getEmailAddress());
assertEquals(userRO.getFullName(), changedUser.getFullName());
// changed
assertEquals(userRO.getEmailAddress(), changedUser.getEmailAddress());
}
@Test
public void testUpdateUserdataCertificateOK() throws Exception {
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()));
user.setUsername(UUID.randomUUID().toString());
user.setEmailAddress(UUID.randomUUID().toString());
user.setRole("ROLE");
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());
}
@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());
}
@Test
public void testValidateDeleteRequest() throws Exception {
String username1 = "test-user-delete-01";
String username2 = "test-user-delete-02";
DBUser user1 = TestDBUtils.createDBUser(username1);
DBUser user2 = TestDBUtils.createDBUser(username2);
userDao.persistFlushDetach(user1);
userDao.persistFlushDetach(user2);
DBDomain d = new DBDomain();
d.setDomainCode(TEST_DOMAIN_CODE_1);
d.setSmlSubdomain(TEST_SML_SUBDOMAIN_CODE_1);
domainDao.persistFlushDetach(d);
DBResource sg = TestDBUtils.createDBServiceGroup(TEST_SG_ID_1, TEST_SG_SCHEMA_1);
sg.getMembers().add(new DBResourceMember(sg, user2));
sg.addDomain(d);
serviceGroupDao.persistFlushDetach(sg);
DeleteEntityValidation validation = new DeleteEntityValidation();
validation.getListIds().add(user1.getId()+"");
validation.getListIds().add(user2.getId()+"");
DeleteEntityValidation result = testInstance.validateDeleteRequest(validation);
assertEquals(1, result.getListDeleteNotPermitedIds().size());
assertEquals(user2.getId()+"", result.getListDeleteNotPermitedIds().get(0));
assertEquals(2, result.getListIds().size());
}
*/
}
......@@ -21,11 +21,10 @@ import eu.europa.ec.edelivery.smp.config.SmlIntegrationConfiguration;
import eu.europa.ec.edelivery.smp.exceptions.SMPRuntimeException;
import eu.europa.ec.edelivery.smp.services.AbstractServiceIntegrationTest;
import eu.europa.ec.edelivery.smp.services.ConfigurationService;
import org.hamcrest.CoreMatchers;
import org.hamcrest.MatcherAssert;
import org.junit.Before;
import org.junit.Ignore;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;
import org.junit.runner.RunWith;
import org.mockito.Mockito;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -42,13 +41,10 @@ import static org.mockito.Mockito.verify;
* Created by JRC
* since 4.1.
*/
@Ignore
@RunWith(SpringRunner.class)
@ContextConfiguration(classes = {SmlConnector.class, SmlIntegrationConfiguration.class})
public class SmlConnectorParticipantTest extends AbstractServiceIntegrationTest {
@Rule
public ExpectedException expectedException = ExpectedException.none();
@Autowired
protected ConfigurationService configurationService;
......@@ -67,7 +63,7 @@ public class SmlConnectorParticipantTest extends AbstractServiceIntegrationTest
configurationService = Mockito.spy(configurationService);
ReflectionTestUtils.setField(testInstance,"configurationService",configurationService);
ReflectionTestUtils.setField(testInstance, "configurationService", configurationService);
Mockito.doReturn(true).when(configurationService).isSMLIntegrationEnabled();
DEFAULT_DOMAIN.setSmlRegistered(true);
mockSml.reset();
......@@ -100,22 +96,21 @@ public class SmlConnectorParticipantTest extends AbstractServiceIntegrationTest
}
@Test
public void testRegisterInDnsUnknownException() throws UnauthorizedFault, NotFoundFault, InternalErrorFault, BadRequestFault {
public void testRegisterInDnsUnknownException() {
//when
String message = "something unexpected";
Exception ex = new Exception(message);
mockSml.setThrowException(ex);
expectedException.expectMessage(message);
expectedException.expect(SMPRuntimeException.class);
testInstance.registerInDns(PARTICIPANT_ID, DEFAULT_DOMAIN, null);
SMPRuntimeException result = assertThrows(SMPRuntimeException.class, () -> testInstance.registerInDns(PARTICIPANT_ID, DEFAULT_DOMAIN, null));
MatcherAssert.assertThat(result.getMessage(), CoreMatchers.containsString(message));
}
@Test
public void testRegisterInDnsNewClientIsAlwaysCreated() throws UnauthorizedFault, NotFoundFault, InternalErrorFault, BadRequestFault {
//when
testInstance.registerInDns(PARTICIPANT_ID, DEFAULT_DOMAIN , null );
testInstance.registerInDns(PARTICIPANT_ID, DEFAULT_DOMAIN , null);
testInstance.registerInDns(PARTICIPANT_ID, DEFAULT_DOMAIN, null);
testInstance.registerInDns(PARTICIPANT_ID, DEFAULT_DOMAIN, null);
//then
assertEquals(2, mockSml.getParticipantManagmentClientMocks().size());
......@@ -154,10 +149,10 @@ public class SmlConnectorParticipantTest extends AbstractServiceIntegrationTest
//when
BadRequestFault ex = new BadRequestFault(ERROR_UNEXPECTED_MESSAGE);
mockSml.setThrowException(ex);
expectedException.expectMessage(ERROR_UNEXPECTED_MESSAGE);
expectedException.expect(SMPRuntimeException.class);
testInstance.unregisterFromDns(PARTICIPANT_ID, DEFAULT_DOMAIN);
SMPRuntimeException result = assertThrows(SMPRuntimeException.class, () -> testInstance.unregisterFromDns(PARTICIPANT_ID, DEFAULT_DOMAIN));
MatcherAssert.assertThat(result.getMessage(), CoreMatchers.containsString(ERROR_UNEXPECTED_MESSAGE));
}
@Test
......@@ -166,10 +161,9 @@ public class SmlConnectorParticipantTest extends AbstractServiceIntegrationTest
String message = "something unexpected";
Exception ex = new Exception(message);
mockSml.setThrowException(ex);
expectedException.expectMessage(message);
expectedException.expect(SMPRuntimeException.class);
testInstance.unregisterFromDns(PARTICIPANT_ID, DEFAULT_DOMAIN);
SMPRuntimeException result = assertThrows(SMPRuntimeException.class, () -> testInstance.unregisterFromDns(PARTICIPANT_ID, DEFAULT_DOMAIN));
MatcherAssert.assertThat(result.getMessage(), CoreMatchers.containsString(message));
}
@Test
......@@ -218,22 +212,22 @@ public class SmlConnectorParticipantTest extends AbstractServiceIntegrationTest
@Test
public void testProcessSMLErrorMessageBadRequestFaultFailed() {
expectedException.expectMessage(ERROR_UNEXPECTED_MESSAGE);
expectedException.expect(SMPRuntimeException.class);
BadRequestFault ex = new BadRequestFault(ERROR_UNEXPECTED_MESSAGE);
testInstance.processSMLErrorMessage(ex, PARTICIPANT_ID);
SMPRuntimeException result = assertThrows(SMPRuntimeException.class, () -> testInstance.processSMLErrorMessage(ex, PARTICIPANT_ID));
MatcherAssert.assertThat(result.getMessage(), CoreMatchers.containsString(ERROR_UNEXPECTED_MESSAGE));
}
@Test
public void testProcessSMLErrorMessageNoFoundFaultFailed() {
expectedException.expectMessage(ERROR_UNEXPECTED_MESSAGE);
expectedException.expect(SMPRuntimeException.class);
NotFoundFault ex = new NotFoundFault(ERROR_UNEXPECTED_MESSAGE);
testInstance.processSMLErrorMessage(ex, PARTICIPANT_ID);
SMPRuntimeException result = assertThrows(SMPRuntimeException.class, () -> testInstance.processSMLErrorMessage(ex, PARTICIPANT_ID));
MatcherAssert.assertThat(result.getMessage(), CoreMatchers.containsString(ERROR_UNEXPECTED_MESSAGE));
}
@Test
......
......@@ -6,8 +6,8 @@ import eu.europa.ec.edelivery.smp.identifiers.Identifier;
public class SmlConnectorTestConstants {
//protected static final Identifier PARTICIPANT_ID = new Identifier("sample:value", "sample:scheme");
protected static final Identifier PARTICIPANT_ID = null;
protected static final Identifier PARTICIPANT_ID = new Identifier("sample:value", "sample:scheme");
protected static final DBDomain DEFAULT_DOMAIN;
static {
......
package eu.europa.ec.edelivery.smp.testutil;
import eu.europa.ec.edelivery.smp.data.enums.ApplicationRoleType;
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.enums.VisibilityType;
......@@ -265,6 +266,7 @@ public class TestDBUtils {
dbuser.setUsername(userName);
dbuser.setEmailAddress(userName + "@test.eu");
dbuser.setActive(true);
dbuser.setApplicationRole(ApplicationRoleType.USER);
return dbuser;
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment