/* * See LICENSE for licensing and NOTICE for copyright. */ package net.shibboleth.idp.cas.flow; import net.shibboleth.idp.cas.protocol.TicketValidationRequest; import net.shibboleth.idp.cas.protocol.TicketValidationResponse; import net.shibboleth.idp.cas.ticket.ProxyGrantingTicket; import net.shibboleth.idp.cas.ticket.ProxyTicket; import net.shibboleth.idp.cas.ticket.ServiceTicket; import net.shibboleth.idp.cas.ticket.TicketService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.webflow.execution.RequestContext; import org.testng.annotations.Test; import static org.testng.Assert.*; /** * Unit test for {@link BuildProxyChainAction}. * * @author Marvin S. Addison */ public class BuildProxyChainActionTest extends AbstractProfileActionTest { @Autowired private BuildProxyChainAction action; @Autowired private TicketService ticketService; @Test public void testBuildChainLength2() throws Exception { final ServiceTicket st = ticketService.createServiceTicket(TEST_SESSION_ID, "proxyA", true); final ProxyGrantingTicket pgtA = ticketService.createProxyGrantingTicket(st, "PGT-a1b2c3d4e5f6"); final ProxyTicket ptA = ticketService.createProxyTicket(pgtA, "proxiedByA"); final ProxyGrantingTicket pgtB = ticketService.createProxyGrantingTicket(ptA, "PGT-z9y8x7w6v5u4"); final ProxyTicket ptB = ticketService.createProxyTicket(pgtB, "proxiedByB"); final RequestContext context = createTicketContext(ptB); final TicketValidationRequest request = new TicketValidationRequest("proxiedByB", ptB.getId()); final TicketValidationResponse response = new TicketValidationResponse(); FlowStateSupport.setTicketValidationRequest(context, request); FlowStateSupport.setTicketValidationResponse(context, response); assertEquals(action.execute(context).getId(), Events.Proceed.id()); assertEquals(response.getProxies().size(), 2); assertEquals(response.getProxies().get(0), "proxiedByA"); assertEquals(response.getProxies().get(1), "proxyA"); } }