package org.apereo.cas.web; import org.apereo.cas.AbstractCentralAuthenticationServiceTests; import org.apereo.cas.CasProtocolConstants; import org.apereo.cas.authentication.CoreAuthenticationTestUtils; import org.apereo.cas.ticket.ProxyGrantingTicketImpl; import org.apereo.cas.ticket.proxy.ProxyGrantingTicket; import org.apereo.cas.ticket.support.NeverExpiresExpirationPolicy; import org.junit.Before; import org.junit.Test; import org.springframework.context.support.StaticApplicationContext; import org.springframework.mock.web.MockHttpServletRequest; import org.springframework.mock.web.MockHttpServletResponse; import java.util.Map; import static org.junit.Assert.*; /** * @author Scott Battaglia * @since 3.0.0 */ public class ProxyControllerTests extends AbstractCentralAuthenticationServiceTests { private ProxyController proxyController; @Before public void onSetUp() throws Exception { this.proxyController = new ProxyController(getCentralAuthenticationService(), getWebApplicationServiceFactory()); final StaticApplicationContext context = new StaticApplicationContext(); context.refresh(); this.proxyController.setApplicationContext(context); } @Test public void verifyNoParams() throws Exception { assertEquals(CasProtocolConstants.ERROR_CODE_INVALID_REQUEST_PROXY, this.proxyController .handleRequestInternal(new MockHttpServletRequest(), new MockHttpServletResponse()).getModel() .get("code")); } @Test public void verifyNonExistentPGT() throws Exception { final MockHttpServletRequest request = new MockHttpServletRequest(); request.addParameter(CasProtocolConstants.PARAMETER_PROXY_GRANTING_TICKET, "TestService"); request.addParameter("targetService", "testDefault"); assertTrue(this.proxyController.handleRequestInternal(request, new MockHttpServletResponse()).getModel().containsKey( "code")); } @Test public void verifyExistingPGT() throws Exception { final ProxyGrantingTicket ticket = new ProxyGrantingTicketImpl( "ticketGrantingTicketId", CoreAuthenticationTestUtils.getAuthentication(), new NeverExpiresExpirationPolicy()); getTicketRegistry().addTicket(ticket); final MockHttpServletRequest request = new MockHttpServletRequest(); request.addParameter(CasProtocolConstants.PARAMETER_PROXY_GRANTING_TICKET, ticket.getId()); request.addParameter("targetService", "testDefault"); assertTrue(this.proxyController.handleRequestInternal(request, new MockHttpServletResponse()).getModel().containsKey( CasProtocolConstants.PARAMETER_TICKET)); } @Test public void verifyNotAuthorizedPGT() throws Exception { final ProxyGrantingTicket ticket = new ProxyGrantingTicketImpl("ticketGrantingTicketId", CoreAuthenticationTestUtils.getAuthentication(), new NeverExpiresExpirationPolicy()); getTicketRegistry().addTicket(ticket); final MockHttpServletRequest request = new MockHttpServletRequest(); request.addParameter(CasProtocolConstants.PARAMETER_PROXY_GRANTING_TICKET, ticket.getId()); request.addParameter("targetService", "service"); final Map<String, Object> map = this.proxyController.handleRequestInternal(request, new MockHttpServletResponse()).getModel(); assertFalse(map.containsKey(CasProtocolConstants.PARAMETER_TICKET)); } }