use of org.springframework.webflow.test.MockFlowSession in project cas by apereo.
the class DelegatedClientAuthenticationActionTests method assertStartAuthentication.
@SneakyThrows
private void assertStartAuthentication(final Service service) {
val request = new MockHttpServletRequest();
val response = new MockHttpServletResponse();
val flow = new Flow("mockFlow");
flow.addVariable(new FlowVariable("credential", new BeanFactoryVariableValueFactory(UsernamePasswordCredential.class, applicationContext.getAutowireCapableBeanFactory())));
val locale = Locale.ENGLISH.getLanguage();
request.setParameter(ThemeChangeInterceptor.DEFAULT_PARAM_NAME, "theme");
LOGGER.debug("Setting locale [{}] for request parameter as [{}]", locale, request.getParameterMap());
request.setParameter(LocaleChangeInterceptor.DEFAULT_PARAM_NAME, locale);
request.setParameter(CasProtocolConstants.PARAMETER_METHOD, HttpMethod.POST.name());
LOGGER.debug("Set request parameters as [{}]", request.getParameterMap());
val requestContext = new MockRequestContext();
requestContext.setExternalContext(new ServletExternalContext(new MockServletContext(), request, response));
RequestContextHolder.setRequestContext(requestContext);
ExternalContextHolder.setExternalContext(requestContext.getExternalContext());
val mockExecutionContext = new MockFlowExecutionContext(new MockFlowSession(flow));
requestContext.setFlowExecutionContext(mockExecutionContext);
if (service != null) {
WebUtils.putServiceIntoFlowScope(requestContext, service);
}
val client = builtClients.findClient("SAML2Client").get();
val webContext = new JEEContext(request, response);
val ticket = delegatedClientAuthenticationWebflowManager.store(webContext, client);
request.addParameter(DefaultDelegatedClientAuthenticationWebflowManager.PARAMETER_CLIENT_ID, ticket.getId());
LOGGER.debug("Initializing action with request parameters [{}]", webContext.getRequestParameters());
val event = delegatedAuthenticationAction.execute(requestContext);
assertEquals(CasWebflowConstants.TRANSITION_ID_ERROR, event.getId());
delegatedClientAuthenticationWebflowManager.retrieve(requestContext, webContext, client);
assertEquals("theme", request.getAttribute(ThemeChangeInterceptor.DEFAULT_PARAM_NAME));
assertEquals(locale, request.getAttribute(LocaleChangeInterceptor.DEFAULT_PARAM_NAME));
assertEquals(HttpMethod.POST.name(), request.getAttribute(CasProtocolConstants.PARAMETER_METHOD));
val urls = (Set<DelegatedClientIdentityProviderConfiguration>) WebUtils.getDelegatedAuthenticationProviderConfigurations(requestContext);
assertFalse(urls.isEmpty());
assertSame(4, urls.size());
urls.stream().map(url -> {
LOGGER.debug("Redirect URL [{}]", url.getRedirectUrl());
return UriComponentsBuilder.fromUriString(url.getRedirectUrl()).build();
}).forEach(uriComponents -> {
assertEquals(DelegatedClientIdentityProviderConfigurationFactory.ENDPOINT_URL_REDIRECT, uriComponents.getPath());
val clientName = uriComponents.getQueryParams().get(Pac4jConstants.DEFAULT_CLIENT_NAME_PARAMETER);
assertEquals(1, clientName.size());
val serviceName = uriComponents.getQueryParams().get(CasProtocolConstants.PARAMETER_SERVICE);
if (service != null) {
assertEquals(1, serviceName.size());
assertTrue(serviceName.contains(EncodingUtils.urlEncode(RegisteredServiceTestUtils.CONST_TEST_URL)));
} else {
assertNull(serviceName);
}
val method = uriComponents.getQueryParams().get(CasProtocolConstants.PARAMETER_METHOD);
assertEquals(1, method.size());
assertTrue(method.contains(HttpMethod.POST.toString()));
val theme = uriComponents.getQueryParams().get(ThemeChangeInterceptor.DEFAULT_PARAM_NAME);
assertEquals(1, theme.size());
assertTrue(theme.contains("theme"));
val testLocale = uriComponents.getQueryParams().get(LocaleChangeInterceptor.DEFAULT_PARAM_NAME);
assertEquals(1, testLocale.size());
assertTrue(testLocale.contains(locale));
});
}
use of org.springframework.webflow.test.MockFlowSession in project cas by apereo.
the class PrepareForPasswordlessAuthenticationActionTests method verifyAction.
@Test
public void verifyAction() throws Exception {
val exec = new MockFlowExecutionContext(new MockFlowSession(new Flow(CasWebflowConfigurer.FLOW_ID_LOGIN)));
val context = new MockRequestContext(exec);
val request = new MockHttpServletRequest();
context.setExternalContext(new ServletExternalContext(new MockServletContext(), request, new MockHttpServletResponse()));
assertEquals(CasWebflowConstants.TRANSITION_ID_PASSWORDLESS_GET_USERID, initializeLoginAction.execute(context).getId());
val account = PasswordlessUserAccount.builder().email("email").phone("phone").username("casuser").name("casuser").build();
WebUtils.putPasswordlessAuthenticationAccount(context, account);
assertEquals(CasWebflowConstants.TRANSITION_ID_SUCCESS, initializeLoginAction.execute(context).getId());
}
use of org.springframework.webflow.test.MockFlowSession in project cas by apereo.
the class VerifyPasswordlessAccountAuthenticationActionTests method getRequestContext.
private static RequestContext getRequestContext(final String username) {
val request = new MockHttpServletRequest();
val exec = new MockFlowExecutionContext(new MockFlowSession(new Flow(CasWebflowConfigurer.FLOW_ID_LOGIN)));
val context = mock(RequestContext.class);
when(context.getRequestParameters()).thenReturn(new MockParameterMap().put("username", username));
when(context.getMessageContext()).thenReturn(mock(MessageContext.class));
when(context.getFlowScope()).thenReturn(new LocalAttributeMap<>());
when(context.getConversationScope()).thenReturn(new LocalAttributeMap<>());
when(context.getFlowExecutionContext()).thenReturn(exec);
when(context.getExternalContext()).thenReturn(new ServletExternalContext(new MockServletContext(), request, new MockHttpServletResponse()));
return context;
}
use of org.springframework.webflow.test.MockFlowSession in project cas by apereo.
the class AcceptPasswordlessAuthenticationActionTests method verifyAction.
@Test
public void verifyAction() throws Exception {
val exec = new MockFlowExecutionContext(new MockFlowSession(new Flow(CasWebflowConfigurer.FLOW_ID_LOGIN)));
val context = new MockRequestContext(exec);
val account = PasswordlessUserAccount.builder().email("email").phone("phone").username("casuser").name("casuser").build();
WebUtils.putPasswordlessAuthenticationAccount(context, account);
val token = passwordlessTokenRepository.createToken("casuser");
val request = new MockHttpServletRequest();
request.addParameter("token", token);
context.setExternalContext(new ServletExternalContext(new MockServletContext(), request, new MockHttpServletResponse()));
assertEquals(CasWebflowConstants.TRANSITION_ID_AUTHENTICATION_FAILURE, acceptPasswordlessAuthenticationAction.execute(context).getId());
passwordlessTokenRepository.saveToken("casuser", token);
assertEquals(CasWebflowConstants.TRANSITION_ID_SUCCESS, acceptPasswordlessAuthenticationAction.execute(context).getId());
assertTrue(passwordlessTokenRepository.findToken("casuser").isEmpty());
}
Aggregations