From 1612bd7b93bcbea00a0810a9acc85c938fdd528d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20LELEU?= <jerome.leleu@teamdlab.com> Date: Thu, 2 Apr 2020 09:48:19 +0200 Subject: [PATCH] change password is triggered when the user is already authenticated using the doChangePassword parameter --- .../fr/gouv/vitamui/cas/config/AppConfig.java | 17 +++++--- .../vitamui/cas/config/WebflowConfig.java | 18 +++++--- .../cas/pm/ResetPasswordController.java | 40 +---------------- .../java/fr/gouv/vitamui/cas/util/Utils.java | 39 +++++++++++++++++ ...8NSendPasswordResetInstructionsAction.java | 43 +------------------ .../actions/TriggerChangePasswordAction.java | 9 ++-- .../RestPasswordManagementConfiguration.java | 14 +----- ...urrogateRestAuthenticationServiceTest.java | 8 ++-- .../UserAuthenticationHandlerTest.java | 10 ++--- .../UserPrincipalResolverTest.java | 20 ++++----- .../IamRestPasswordManagementServiceTest.java | 2 +- .../cas/provider/ProvidersServiceTest.java | 2 +- .../webflow/actions/DispatcherActionTest.java | 2 +- 13 files changed, 88 insertions(+), 136 deletions(-) diff --git a/cas/cas-server/src/main/java/fr/gouv/vitamui/cas/config/AppConfig.java b/cas/cas-server/src/main/java/fr/gouv/vitamui/cas/config/AppConfig.java index bbc58298..a4635ed6 100644 --- a/cas/cas-server/src/main/java/fr/gouv/vitamui/cas/config/AppConfig.java +++ b/cas/cas-server/src/main/java/fr/gouv/vitamui/cas/config/AppConfig.java @@ -78,6 +78,7 @@ import fr.gouv.vitamui.iam.common.utils.Saml2ClientBuilder; import fr.gouv.vitamui.iam.external.client.CasExternalRestClient; import fr.gouv.vitamui.iam.external.client.IamExternalRestClientFactory; import fr.gouv.vitamui.iam.external.client.IdentityProviderExternalRestClient; +import org.springframework.mail.javamail.JavaMailSender; /** * Configure all beans to customize the CAS server. @@ -151,6 +152,13 @@ public class AppConfig extends BaseTicketCatalogConfigurer { @Qualifier("accessTokenExpirationPolicy") private ExpirationPolicyBuilder accessTokenExpirationPolicy; + @Autowired + private JavaMailSender mailSender; + + @Autowired + @Qualifier("delegatedClientDistributedSessionStore") + private SessionStore delegatedClientDistributedSessionStore; + @Value("${token.api.cas}") private String tokenApiCas; @@ -166,10 +174,6 @@ public class AppConfig extends BaseTicketCatalogConfigurer { @Value("${vitamui.cas.identity}") private String casIdentity; - @Autowired - @Qualifier("delegatedClientDistributedSessionStore") - private SessionStore delegatedClientDistributedSessionStore; - @Bean public UserAuthenticationHandler userAuthenticationHandler() { return new UserAuthenticationHandler(servicesManager, principalFactory, casRestClient(), utils(), ipHeaderName); @@ -233,7 +237,7 @@ public class AppConfig extends BaseTicketCatalogConfigurer { @Bean public Utils utils() { - return new Utils(casRestClient(), tokenApiCas, casTenantIdentifier, casIdentity); + return new Utils(casRestClient(), tokenApiCas, casTenantIdentifier, casIdentity, mailSender); } @Bean @@ -246,8 +250,7 @@ public class AppConfig extends BaseTicketCatalogConfigurer { @RefreshScope public OAuth20AccessTokenFactory defaultAccessTokenFactory() { return new CustomOAuth20DefaultAccessTokenFactory(accessTokenExpirationPolicy, - accessTokenJwtBuilder, - servicesManager); + accessTokenJwtBuilder, servicesManager); } @Override diff --git a/cas/cas-server/src/main/java/fr/gouv/vitamui/cas/config/WebflowConfig.java b/cas/cas-server/src/main/java/fr/gouv/vitamui/cas/config/WebflowConfig.java index 5b5607c5..36d298cf 100644 --- a/cas/cas-server/src/main/java/fr/gouv/vitamui/cas/config/WebflowConfig.java +++ b/cas/cas-server/src/main/java/fr/gouv/vitamui/cas/config/WebflowConfig.java @@ -53,6 +53,7 @@ import org.apereo.cas.pm.PasswordManagementService; import org.apereo.cas.services.ServicesManager; import org.apereo.cas.ticket.TicketFactory; import org.apereo.cas.ticket.registry.TicketRegistry; +import org.apereo.cas.ticket.registry.TicketRegistrySupport; import org.apereo.cas.util.CollectionUtils; import org.apereo.cas.util.io.CommunicationsManager; import org.apereo.cas.web.DelegatedClientWebflowManager; @@ -184,18 +185,21 @@ public class WebflowConfig { @Qualifier("delegatedClientDistributedSessionStore") private ObjectProvider<SessionStore> delegatedClientDistributedSessionStore; - @Value("${vitamui.portal.url}") - private String vitamuiPortalUrl; - - @Value("${cas.authn.surrogate.separator}") - private String surrogationSeparator; - @Autowired private Utils utils; @Autowired private DelegatedClientWebflowManager delegatedClientWebflowManager; + @Autowired + private TicketRegistrySupport ticketRegistrySupport; + + @Value("${vitamui.portal.url}") + private String vitamuiPortalUrl; + + @Value("${cas.authn.surrogate.separator}") + private String surrogationSeparator; + @Bean public DispatcherAction dispatcherAction() { return new DispatcherAction(providersService, identityProviderHelper, casRestClient, @@ -216,7 +220,7 @@ public class WebflowConfig { @Bean public TriggerChangePasswordAction triggerChangePasswordAction() { - return new TriggerChangePasswordAction(); + return new TriggerChangePasswordAction(ticketRegistrySupport, utils); } @Bean diff --git a/cas/cas-server/src/main/java/fr/gouv/vitamui/cas/pm/ResetPasswordController.java b/cas/cas-server/src/main/java/fr/gouv/vitamui/cas/pm/ResetPasswordController.java index 01cda714..ab6e3872 100644 --- a/cas/cas-server/src/main/java/fr/gouv/vitamui/cas/pm/ResetPasswordController.java +++ b/cas/cas-server/src/main/java/fr/gouv/vitamui/cas/pm/ResetPasswordController.java @@ -40,8 +40,6 @@ import static org.apereo.cas.web.flow.CasWebflowConfigurer.FLOW_ID_LOGIN; import java.util.Locale; -import javax.mail.internet.MimeMessage; - import org.apache.commons.lang3.StringUtils; import org.apereo.cas.configuration.CasConfigurationProperties; import org.apereo.cas.pm.PasswordManagementService; @@ -51,8 +49,6 @@ import org.apereo.cas.util.io.CommunicationsManager; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.context.HierarchicalMessageSource; -import org.springframework.mail.javamail.JavaMailSender; -import org.springframework.mail.javamail.MimeMessageHelper; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; @@ -95,9 +91,6 @@ public class ResetPasswordController { @Autowired private Utils utils; - @Autowired - private JavaMailSender mailSender; - @GetMapping("/resetPassword") public boolean resetPassword(@RequestParam(value = "username", defaultValue = "") final String username, @RequestParam(value = "firstname", defaultValue = "") final String firstname, @@ -154,37 +147,6 @@ public class ResetPasswordController { } protected boolean sendPasswordResetEmailToAccount(final String to, final String subject, final String msg) { - return htmlEmail(msg, casProperties.getAuthn().getPm().getReset().getMail().getFrom(), subject, to, null, null); - } - - private boolean htmlEmail(final String text, final String from, final String subject, final String to, final String cc, final String bcc) { - try { - if (mailSender == null || StringUtils.isBlank(text) || StringUtils.isBlank(from) || StringUtils.isBlank(subject) || StringUtils.isBlank(to)) { - LOGGER.warn("Could not send email to [{}] because either no address/subject/text is found or email settings are not configured.", to); - return false; - } - - final MimeMessage message = mailSender.createMimeMessage(); - final MimeMessageHelper helper = new MimeMessageHelper(message); - helper.setTo(to); - message.setContent(text, "text/html; charset=UTF-8"); - helper.setSubject(subject); - helper.setFrom(from); - helper.setPriority(1); - - if (StringUtils.isNotBlank(cc)) { - helper.setCc(cc); - } - - if (StringUtils.isNotBlank(bcc)) { - helper.setBcc(bcc); - } - mailSender.send(message); - return true; - } - catch (final Exception ex) { - LOGGER.error(ex.getMessage(), ex); - } - return false; + return utils.htmlEmail(msg, casProperties.getAuthn().getPm().getReset().getMail().getFrom(), subject, to, null, null); } } diff --git a/cas/cas-server/src/main/java/fr/gouv/vitamui/cas/util/Utils.java b/cas/cas-server/src/main/java/fr/gouv/vitamui/cas/util/Utils.java index 02551461..b3928976 100644 --- a/cas/cas-server/src/main/java/fr/gouv/vitamui/cas/util/Utils.java +++ b/cas/cas-server/src/main/java/fr/gouv/vitamui/cas/util/Utils.java @@ -41,6 +41,7 @@ import java.util.List; import java.util.Map; import java.util.Optional; +import javax.mail.internet.MimeMessage; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServletResponse; @@ -56,6 +57,8 @@ import org.apereo.cas.web.support.WebUtils; import org.pac4j.core.util.CommonHelper; import org.pac4j.core.context.Pac4jConstants; import org.pac4j.saml.client.SAML2Client; +import org.springframework.mail.javamail.JavaMailSender; +import org.springframework.mail.javamail.MimeMessageHelper; import org.springframework.webflow.context.ExternalContext; import org.springframework.webflow.execution.Action; import org.springframework.webflow.execution.Event; @@ -90,6 +93,8 @@ public class Utils { private final String casIdentity; + private final JavaMailSender mailSender; + public ExternalHttpContext buildContext(final String username) { return new ExternalHttpContext(casTenantIdentifier, casToken, "cas+" + username, casIdentity); } @@ -157,4 +162,38 @@ public class Utils { return "\"passwordResetURL\"..."; } } + + public boolean htmlEmail(final String text, final String from, final String subject, final String to, final String cc, final String bcc) { + try { + if (mailSender == null || org.apache.commons.lang3.StringUtils.isBlank(text) || org.apache.commons.lang3.StringUtils.isBlank(from) + || org.apache.commons.lang3.StringUtils.isBlank(subject) || org.apache.commons.lang3.StringUtils.isBlank(to)) { + LOGGER.warn( + "Could not send email to [{}] because either no address/subject/text is found or email settings are not configured.", + to); + return false; + } + + final MimeMessage message = mailSender.createMimeMessage(); + final MimeMessageHelper helper = new MimeMessageHelper(message); + helper.setTo(to); + message.setContent(text, "text/html; charset=UTF-8"); + helper.setSubject(subject); + helper.setFrom(from); + helper.setPriority(1); + + if (org.apache.commons.lang3.StringUtils.isNotBlank(cc)) { + helper.setCc(cc); + } + + if (org.apache.commons.lang3.StringUtils.isNotBlank(bcc)) { + helper.setBcc(bcc); + } + mailSender.send(message); + return true; + } + catch (final Exception ex) { + LOGGER.error(ex.getMessage(), ex); + } + return false; + } } diff --git a/cas/cas-server/src/main/java/fr/gouv/vitamui/cas/webflow/actions/I18NSendPasswordResetInstructionsAction.java b/cas/cas-server/src/main/java/fr/gouv/vitamui/cas/webflow/actions/I18NSendPasswordResetInstructionsAction.java index 6792accc..e40a4c64 100644 --- a/cas/cas-server/src/main/java/fr/gouv/vitamui/cas/webflow/actions/I18NSendPasswordResetInstructionsAction.java +++ b/cas/cas-server/src/main/java/fr/gouv/vitamui/cas/webflow/actions/I18NSendPasswordResetInstructionsAction.java @@ -57,13 +57,10 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.context.HierarchicalMessageSource; import org.springframework.context.i18n.LocaleContextHolder; -import org.springframework.mail.javamail.JavaMailSender; -import org.springframework.mail.javamail.MimeMessageHelper; import org.springframework.webflow.core.collection.MutableAttributeMap; import org.springframework.webflow.execution.Event; import org.springframework.webflow.execution.RequestContext; -import javax.mail.internet.MimeMessage; import javax.servlet.http.HttpServletRequest; /** @@ -93,9 +90,6 @@ public class I18NSendPasswordResetInstructionsAction extends SendPasswordResetIn private final CommunicationsManager communicationsManager; - @Autowired - private JavaMailSender mailSender; - private final PasswordManagementService passwordManagementService; public I18NSendPasswordResetInstructionsAction(final CasConfigurationProperties casProperties, @@ -162,42 +156,7 @@ public class I18NSendPasswordResetInstructionsAction extends SendPasswordResetIn protected boolean sendPasswordResetEmailToAccount(final String to, final String url) { final PmMessageToSend messageToSend = PmMessageToSend.buildMessage(messageSource, "", "", "10", url, LocaleContextHolder.getLocale()); - return htmlEmail(messageToSend.getText(), casProperties.getAuthn().getPm().getReset().getMail().getFrom(), + return utils.htmlEmail(messageToSend.getText(), casProperties.getAuthn().getPm().getReset().getMail().getFrom(), messageToSend.getSubject(), to, null, null); } - - private boolean htmlEmail(final String text, final String from, final String subject, final String to, - final String cc, final String bcc) { - try { - if (this.mailSender == null || StringUtils.isBlank(text) || StringUtils.isBlank(from) - || StringUtils.isBlank(subject) || StringUtils.isBlank(to)) { - LOGGER.warn( - "Could not send email to [{}] because either no address/subject/text is found or email settings are not configured.", - to); - return false; - } - - final MimeMessage message = this.mailSender.createMimeMessage(); - final MimeMessageHelper helper = new MimeMessageHelper(message); - helper.setTo(to); - message.setContent(text, "text/html; charset=UTF-8"); - helper.setSubject(subject); - helper.setFrom(from); - helper.setPriority(1); - - if (StringUtils.isNotBlank(cc)) { - helper.setCc(cc); - } - - if (StringUtils.isNotBlank(bcc)) { - helper.setBcc(bcc); - } - this.mailSender.send(message); - return true; - } - catch (final Exception ex) { - LOGGER.error(ex.getMessage(), ex); - } - return false; - } } diff --git a/cas/cas-server/src/main/java/fr/gouv/vitamui/cas/webflow/actions/TriggerChangePasswordAction.java b/cas/cas-server/src/main/java/fr/gouv/vitamui/cas/webflow/actions/TriggerChangePasswordAction.java index 0bcba810..42635891 100644 --- a/cas/cas-server/src/main/java/fr/gouv/vitamui/cas/webflow/actions/TriggerChangePasswordAction.java +++ b/cas/cas-server/src/main/java/fr/gouv/vitamui/cas/webflow/actions/TriggerChangePasswordAction.java @@ -40,12 +40,12 @@ import fr.gouv.vitamui.cas.util.Utils; import fr.gouv.vitamui.commons.api.CommonConstants; import fr.gouv.vitamui.commons.api.logger.VitamUILogger; import fr.gouv.vitamui.commons.api.logger.VitamUILoggerFactory; +import lombok.RequiredArgsConstructor; import org.apereo.cas.authentication.credential.UsernamePasswordCredential; import org.apereo.cas.authentication.principal.Principal; import org.apereo.cas.pm.web.flow.PasswordManagementWebflowConfigurer; import org.apereo.cas.ticket.registry.TicketRegistrySupport; import org.apereo.cas.web.support.WebUtils; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.webflow.action.AbstractAction; import org.springframework.webflow.execution.Event; import org.springframework.webflow.execution.RequestContext; @@ -56,6 +56,7 @@ import org.springframework.webflow.execution.RequestContextHolder; * * */ +@RequiredArgsConstructor public class TriggerChangePasswordAction extends AbstractAction { private static final VitamUILogger LOGGER = VitamUILoggerFactory.getInstance(TriggerChangePasswordAction.class); @@ -63,11 +64,9 @@ public class TriggerChangePasswordAction extends AbstractAction { public static final String EVENT_ID_CHANGE_PASSWORD = "changePassword"; public static final String EVENT_ID_CONTINUE = "continue"; - @Autowired - private TicketRegistrySupport ticketRegistrySupport; + private final TicketRegistrySupport ticketRegistrySupport; - @Autowired - private Utils utils; + private final Utils utils; protected Event doExecute(final RequestContext context) { diff --git a/cas/cas-server/src/main/java/org/apereo/cas/config/pm/RestPasswordManagementConfiguration.java b/cas/cas-server/src/main/java/org/apereo/cas/config/pm/RestPasswordManagementConfiguration.java index fd739b75..1cdfea9d 100644 --- a/cas/cas-server/src/main/java/org/apereo/cas/config/pm/RestPasswordManagementConfiguration.java +++ b/cas/cas-server/src/main/java/org/apereo/cas/config/pm/RestPasswordManagementConfiguration.java @@ -5,13 +5,9 @@ import fr.gouv.vitamui.cas.provider.ProvidersService; import fr.gouv.vitamui.iam.common.utils.IdentityProviderHelper; import fr.gouv.vitamui.iam.external.client.CasExternalRestClient; import org.apereo.cas.configuration.CasConfigurationProperties; -import org.apereo.cas.pm.PasswordHistoryService; import org.apereo.cas.pm.PasswordManagementService; -import org.apereo.cas.util.crypto.CipherExecutor; -import org.springframework.beans.factory.ObjectProvider; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.cloud.context.config.annotation.RefreshScope; import org.springframework.context.annotation.Bean; @@ -28,15 +24,7 @@ public class RestPasswordManagementConfiguration { @Autowired private CasConfigurationProperties casProperties; - @Autowired - @Qualifier("passwordManagementCipherExecutor") - private ObjectProvider<CipherExecutor> passwordManagementCipherExecutor; - - @Autowired - @Qualifier("passwordHistoryService") - private ObjectProvider<PasswordHistoryService> passwordHistoryService; - - // customisation JLE: + // customisation: @Autowired private CasExternalRestClient casExternalRestClient; diff --git a/cas/cas-server/src/test/java/fr/gouv/vitamui/cas/authentication/IamSurrogateRestAuthenticationServiceTest.java b/cas/cas-server/src/test/java/fr/gouv/vitamui/cas/authentication/IamSurrogateRestAuthenticationServiceTest.java index 35b08641..3407b165 100644 --- a/cas/cas-server/src/test/java/fr/gouv/vitamui/cas/authentication/IamSurrogateRestAuthenticationServiceTest.java +++ b/cas/cas-server/src/test/java/fr/gouv/vitamui/cas/authentication/IamSurrogateRestAuthenticationServiceTest.java @@ -47,7 +47,7 @@ public final class IamSurrogateRestAuthenticationServiceTest { public void setUp() { casExternalRestClient = mock(CasExternalRestClient.class); - final Utils utils = new Utils(casExternalRestClient, null, 0, null); + val utils = new Utils(casExternalRestClient, null, 0, null, null); service = new IamSurrogateRestAuthenticationService(casExternalRestClient, mock(ServicesManager.class), utils); } @@ -60,7 +60,7 @@ public final class IamSurrogateRestAuthenticationServiceTest { @Test public void testCanAuthenticateCannotSurrogate() { - final SubrogationDto subrogation = surrogation(); + val subrogation = surrogation(); subrogation.setSurrogate("anotherUser"); when(casExternalRestClient.getSubrogationsBySuperUserId(any(ExternalHttpContext.class), eq(SU_ID))) .thenReturn(Arrays.asList(subrogation)); @@ -70,7 +70,7 @@ public final class IamSurrogateRestAuthenticationServiceTest { @Test public void testCanAuthenticateNotAccepted() { - final SubrogationDto subrogation = surrogation(); + val subrogation = surrogation(); subrogation.setStatus(SubrogationStatusEnum.CREATED); when(casExternalRestClient.getSubrogationsBySuperUserId(any(ExternalHttpContext.class), eq(SU_ID))) .thenReturn(Arrays.asList(subrogation)); @@ -95,7 +95,7 @@ public final class IamSurrogateRestAuthenticationServiceTest { } private SubrogationDto surrogation() { - final SubrogationDto subrogation = new SubrogationDto(); + val subrogation = new SubrogationDto(); subrogation.setSurrogate(SURROGATE); subrogation.setSuperUser(SU_EMAIL); subrogation.setStatus(SubrogationStatusEnum.ACCEPTED); diff --git a/cas/cas-server/src/test/java/fr/gouv/vitamui/cas/authentication/UserAuthenticationHandlerTest.java b/cas/cas-server/src/test/java/fr/gouv/vitamui/cas/authentication/UserAuthenticationHandlerTest.java index 853db4ea..eb1b350b 100644 --- a/cas/cas-server/src/test/java/fr/gouv/vitamui/cas/authentication/UserAuthenticationHandlerTest.java +++ b/cas/cas-server/src/test/java/fr/gouv/vitamui/cas/authentication/UserAuthenticationHandlerTest.java @@ -18,7 +18,7 @@ import fr.gouv.vitamui.cas.util.Utils; import fr.gouv.vitamui.commons.api.identity.ServerIdentityAutoConfiguration; import fr.gouv.vitamui.commons.api.enums.UserTypeEnum; import fr.gouv.vitamui.iam.external.client.CasExternalRestClient; -import org.apereo.cas.authentication.AuthenticationHandlerExecutionResult; +import lombok.val; import org.apereo.cas.authentication.Credential; import org.apereo.cas.authentication.PreventedException; import org.apereo.cas.authentication.credential.UsernamePasswordCredential; @@ -61,7 +61,7 @@ public final class UserAuthenticationHandlerTest { @Before public void setUp() { casExternalRestClient = mock(CasExternalRestClient.class); - final Utils utils = new Utils(casExternalRestClient, null, 0, null); + val utils = new Utils(casExternalRestClient, null, 0, null, null); handler = new UserAuthenticationHandler(null, new DefaultPrincipalFactory(), casExternalRestClient, utils, null); credential = new UsernamePasswordCredential(USERNAME, PASSWORD); } @@ -71,7 +71,7 @@ public final class UserAuthenticationHandlerTest { when(casExternalRestClient.login(any(ExternalHttpContext.class), eq(USERNAME), eq(PASSWORD), eq(null), eq(null))) .thenReturn(basicUser(UserStatusEnum.ENABLED)); - final AuthenticationHandlerExecutionResult result = handler.authenticate(credential); + val result = handler.authenticate(credential); assertEquals(USERNAME, result.getPrincipal().getId()); } @@ -100,7 +100,7 @@ public final class UserAuthenticationHandlerTest { @Test(expected = AccountPasswordMustChangeException.class) public void testExpiredPassword() throws GeneralSecurityException, PreventedException { - final UserDto user = basicUser(UserStatusEnum.ENABLED); + val user = basicUser(UserStatusEnum.ENABLED); user.setPasswordExpirationDate(OffsetDateTime.now().minusDays(1)); when(casExternalRestClient.login(any(ExternalHttpContext.class), eq(USERNAME), eq(PASSWORD), eq(null), eq(null))) .thenReturn(user); @@ -133,7 +133,7 @@ public final class UserAuthenticationHandlerTest { } private UserDto basicUser(final UserStatusEnum status) { - final UserDto user = new UserDto(); + val user = new UserDto(); user.setStatus(status); user.setType(UserTypeEnum.NOMINATIVE); user.setPasswordExpirationDate(OffsetDateTime.now().plusDays(1)); diff --git a/cas/cas-server/src/test/java/fr/gouv/vitamui/cas/authentication/UserPrincipalResolverTest.java b/cas/cas-server/src/test/java/fr/gouv/vitamui/cas/authentication/UserPrincipalResolverTest.java index a8029130..d006f8e8 100644 --- a/cas/cas-server/src/test/java/fr/gouv/vitamui/cas/authentication/UserPrincipalResolverTest.java +++ b/cas/cas-server/src/test/java/fr/gouv/vitamui/cas/authentication/UserPrincipalResolverTest.java @@ -19,7 +19,6 @@ import org.apereo.cas.authentication.SurrogateUsernamePasswordCredential; import org.apereo.cas.authentication.credential.UsernamePasswordCredential; import org.apereo.cas.authentication.principal.ClientCredential; import org.apereo.cas.authentication.principal.DefaultPrincipalFactory; -import org.apereo.cas.authentication.principal.Principal; import org.apereo.cas.authentication.principal.PrincipalFactory; import org.junit.Before; import org.junit.Test; @@ -76,7 +75,7 @@ public final class UserPrincipalResolverTest extends BaseWebflowActionTest { super.setUp(); casExternalRestClient = mock(CasExternalRestClient.class); - final Utils utils = new Utils(casExternalRestClient, null, 0, null); + val utils = new Utils(casExternalRestClient, null, 0, null, null); principalFactory = new DefaultPrincipalFactory(); sessionStore = mock(SessionStore.class); resolver = new UserPrincipalResolver(principalFactory, casExternalRestClient, utils, sessionStore); @@ -87,7 +86,7 @@ public final class UserPrincipalResolverTest extends BaseWebflowActionTest { when(casExternalRestClient.getUserByEmail(any(ExternalHttpContext.class), eq(USERNAME), eq(Optional.of(CommonConstants.AUTH_TOKEN_PARAMETER)))).thenReturn(userProfile(UserStatusEnum.ENABLED)); - final Principal principal = resolver.resolve(new UsernamePasswordCredential(USERNAME, PWD), + val principal = resolver.resolve(new UsernamePasswordCredential(USERNAME, PWD), Optional.of(principalFactory.createPrincipal(USERNAME)), Optional.empty()); assertEquals(USERNAME_ID, principal.getId()); @@ -103,7 +102,7 @@ public final class UserPrincipalResolverTest extends BaseWebflowActionTest { eq(Optional.of(CommonConstants.AUTH_TOKEN_PARAMETER)))).thenReturn(userProfile(UserStatusEnum.ENABLED)); when(sessionStore.get(any(JEEContext.class), eq(Constants.SURROGATE))).thenReturn(Optional.empty()); - final Principal principal = resolver.resolve(new ClientCredential(), + val principal = resolver.resolve(new ClientCredential(), Optional.of(principalFactory.createPrincipal(USERNAME)), Optional.empty()); assertEquals(USERNAME_ID, principal.getId()); @@ -124,7 +123,7 @@ public final class UserPrincipalResolverTest extends BaseWebflowActionTest { val credential = new SurrogateUsernamePasswordCredential(); credential.setUsername(ADMIN); credential.setSurrogateUsername(USERNAME); - final Principal principal = resolver.resolve(credential, Optional.of(principalFactory.createPrincipal(ADMIN)), Optional.empty()); + val principal = resolver.resolve(credential, Optional.of(principalFactory.createPrincipal(ADMIN)), Optional.empty()); assertEquals(USERNAME_ID, principal.getId()); final Map<String, List<Object>> attributes = principal.getAttributes(); @@ -142,8 +141,7 @@ public final class UserPrincipalResolverTest extends BaseWebflowActionTest { eq(Optional.empty()))).thenReturn(adminProfile()); when(sessionStore.get(any(JEEContext.class), eq(Constants.SURROGATE))).thenReturn(Optional.of(USERNAME)); - final Principal principal = resolver.resolve(new ClientCredential(), - Optional.of(principalFactory.createPrincipal(ADMIN)), Optional.empty()); + val principal = resolver.resolve(new ClientCredential(), Optional.of(principalFactory.createPrincipal(ADMIN)), Optional.empty()); assertEquals(USERNAME_ID, principal.getId()); final Map<String, List<Object>> attributes = principal.getAttributes(); @@ -158,7 +156,7 @@ public final class UserPrincipalResolverTest extends BaseWebflowActionTest { when(casExternalRestClient.getUserByEmail(any(ExternalHttpContext.class), eq(USERNAME), eq(Optional.of(CommonConstants.AUTH_TOKEN_PARAMETER)))) .thenReturn(authUserDto); - final Principal principal = resolver.resolve(new UsernamePasswordCredential(USERNAME, PWD), + val principal = resolver.resolve(new UsernamePasswordCredential(USERNAME, PWD), Optional.of(principalFactory.createPrincipal(USERNAME)), Optional.empty()); assertEquals(USERNAME_ID, principal.getId()); @@ -204,7 +202,7 @@ public final class UserPrincipalResolverTest extends BaseWebflowActionTest { } private AuthUserDto profile(final UserStatusEnum status, final String id) { - final AuthUserDto user = new AuthUserDto(); + val user = new AuthUserDto(); user.setId(id); user.setStatus(status); user.setType(UserTypeEnum.NOMINATIVE); @@ -214,9 +212,9 @@ public final class UserPrincipalResolverTest extends BaseWebflowActionTest { address.setCity("Paris"); address.setCountry("France"); user.setAddress(address); - final ProfileDto profile = new ProfileDto(); + val profile = new ProfileDto(); profile.setRoles(Arrays.asList(new Role(ROLE_NAME))); - final GroupDto group = new GroupDto(); + val group = new GroupDto(); group.setProfiles(Arrays.asList(profile)); user.setProfileGroup(group); user.setCustomerId("customerId"); diff --git a/cas/cas-server/src/test/java/fr/gouv/vitamui/cas/pm/IamRestPasswordManagementServiceTest.java b/cas/cas-server/src/test/java/fr/gouv/vitamui/cas/pm/IamRestPasswordManagementServiceTest.java index 8e73e8ea..f609c624 100644 --- a/cas/cas-server/src/test/java/fr/gouv/vitamui/cas/pm/IamRestPasswordManagementServiceTest.java +++ b/cas/cas-server/src/test/java/fr/gouv/vitamui/cas/pm/IamRestPasswordManagementServiceTest.java @@ -76,7 +76,7 @@ public final class IamRestPasswordManagementServiceTest { identityProviderDto.setInternal(true); when(identityProviderHelper.findByUserIdentifier(any(List.class), eq(EMAIL))).thenReturn(Optional.of(identityProviderDto)); service = new IamRestPasswordManagementService(casExternalRestClient, null, providersService, identityProviderHelper); - final Utils utils = new Utils(casExternalRestClient, null, 0, null); + final Utils utils = new Utils(casExternalRestClient, null, 0, null, null); service.setUtils(utils); final RequestContext context = mock(RequestContext.class); RequestContextHolder.setRequestContext(context); diff --git a/cas/cas-server/src/test/java/fr/gouv/vitamui/cas/provider/ProvidersServiceTest.java b/cas/cas-server/src/test/java/fr/gouv/vitamui/cas/provider/ProvidersServiceTest.java index c57b6467..c9762528 100644 --- a/cas/cas-server/src/test/java/fr/gouv/vitamui/cas/provider/ProvidersServiceTest.java +++ b/cas/cas-server/src/test/java/fr/gouv/vitamui/cas/provider/ProvidersServiceTest.java @@ -57,7 +57,7 @@ public final class ProvidersServiceTest { restClient = mock(IdentityProviderExternalRestClient.class); service.setIdentityProviderExternalRestClient(restClient); final CasExternalRestClient casExternalRestClient = mock(CasExternalRestClient.class); - final Utils utils = new Utils(casExternalRestClient, null, 0, null); + final Utils utils = new Utils(casExternalRestClient, null, 0, null, null); service.setUtils(utils); provider = new IdentityProviderDto(); diff --git a/cas/cas-server/src/test/java/fr/gouv/vitamui/cas/webflow/actions/DispatcherActionTest.java b/cas/cas-server/src/test/java/fr/gouv/vitamui/cas/webflow/actions/DispatcherActionTest.java index d7745918..fa96aedb 100644 --- a/cas/cas-server/src/test/java/fr/gouv/vitamui/cas/webflow/actions/DispatcherActionTest.java +++ b/cas/cas-server/src/test/java/fr/gouv/vitamui/cas/webflow/actions/DispatcherActionTest.java @@ -65,7 +65,7 @@ public final class DispatcherActionTest extends BaseWebflowActionTest { identityProviderHelper = mock(IdentityProviderHelper.class); casExternalRestClient = mock(CasExternalRestClient.class); - final Utils utils = new Utils(casExternalRestClient, null, 0, null); + final Utils utils = new Utils(casExternalRestClient, null, 0, null, null); action = new DispatcherAction(providersService, identityProviderHelper, casExternalRestClient, ",", utils, mock(SessionStore.class)); final SAML2Client client = new SAML2Client(); -- GitLab