/*
* See LICENSE for licensing and NOTICE for copyright.
*/
package net.shibboleth.idp.cas.flow;
import net.shibboleth.idp.cas.protocol.ProxyTicketRequest;
import net.shibboleth.idp.cas.protocol.ServiceTicketRequest;
import net.shibboleth.idp.cas.protocol.TicketValidationRequest;
import net.shibboleth.idp.cas.service.ServiceContext;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.webflow.test.MockRequestContext;
import org.testng.annotations.Test;
import static org.testng.Assert.*;
public class BuildRelyingPartyContextActionTest extends AbstractProfileActionTest {
@Autowired
private BuildRelyingPartyContextAction action;
@Test
public void testExecuteFromServiceTicketRequest() {
final String serviceURL = "https://serviceA.example.org:8443/landing";
MockRequestContext requestContext = (MockRequestContext) createProfileContext();
FlowStateSupport.setServiceTicketRequest(requestContext, new ServiceTicketRequest(serviceURL));
action.execute(requestContext);
final ServiceContext sc = getProfileContext(requestContext).getSubcontext(ServiceContext.class);
assertNotNull(sc);
assertNotNull(sc.getService());
assertEquals(serviceURL, sc.getService().getName());
assertEquals("allowedToProxy", sc.getService().getGroup());
assertTrue(sc.getService().isAuthorizedToProxy());
}
@Test
public void testExecuteFromTicketValidationRequest() {
final String serviceURL = "http://serviceB.example.org/";
MockRequestContext requestContext = (MockRequestContext) createProfileContext();
FlowStateSupport.setTicketValidationRequest(requestContext, new TicketValidationRequest(serviceURL, "ST-123"));
action.execute(requestContext);
final ServiceContext sc = getProfileContext(requestContext).getSubcontext(ServiceContext.class);
assertNotNull(sc);
assertNotNull(sc.getService());
assertEquals(serviceURL, sc.getService().getName());
assertEquals("notAllowedToProxy", sc.getService().getGroup());
assertFalse(sc.getService().isAuthorizedToProxy());
}
@Test
public void testExecuteFromProxyTicketRequest() {
final String serviceURL = "http://mallory.untrusted.org/";
MockRequestContext requestContext = (MockRequestContext) createProfileContext();
FlowStateSupport.setProxyTicketRequest(requestContext, new ProxyTicketRequest("PGT-123", serviceURL));
action.execute(requestContext);
final ServiceContext sc = getProfileContext(requestContext).getSubcontext(ServiceContext.class);
assertNotNull(sc);
assertNotNull(sc.getService());
assertEquals(serviceURL, sc.getService().getName());
assertEquals(BuildRelyingPartyContextAction.UNVERIFIED_GROUP, sc.getService().getGroup());
assertFalse(sc.getService().isAuthorizedToProxy());
}
}