package org.apereo.cas.web.view; import org.apereo.cas.CasProtocolConstants; import org.apereo.cas.CasViewConstants; import org.apereo.cas.web.AbstractServiceValidateControllerTests; import org.junit.Before; import org.junit.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.mock.web.MockHttpServletRequest; import org.springframework.mock.web.MockHttpServletResponse; import org.springframework.mock.web.MockServletContext; import org.springframework.web.context.support.GenericWebApplicationContext; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.View; import org.springframework.web.servlet.support.RequestContext; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.util.Map; import static org.junit.Assert.*; /** * Unit tests for {@link Cas20ResponseView}. * * @author Misagh Moayyed * @since 4.0.0 */ public class Cas20ResponseViewTests extends AbstractServiceValidateControllerTests { @Autowired @Qualifier("cas3ServiceJsonView") private View cas3ServiceJsonView; @Autowired @Qualifier("cas2SuccessView") private View cas2SuccessView; @Autowired @Qualifier("cas2ServiceFailureView") private View cas2ServiceFailureView; @Before public void setUp() { this.serviceValidateController.setFailureView(cas2ServiceFailureView); this.serviceValidateController.setSuccessView(cas2SuccessView); this.serviceValidateController.setJsonView(cas3ServiceJsonView); } @Test public void verifyView() throws Exception { final ModelAndView modelAndView = this.getModelAndViewUponServiceValidationWithSecurePgtUrl(); final MockHttpServletRequest req = new MockHttpServletRequest(new MockServletContext()); req.setAttribute(RequestContext.WEB_APPLICATION_CONTEXT_ATTRIBUTE, new GenericWebApplicationContext(req.getServletContext())); final MockHttpServletResponse resp = new MockHttpServletResponse(); final View delegatedView = new View() { @Override public String getContentType() { return "text/html"; } @Override public void render(final Map<String, ?> map, final HttpServletRequest request, final HttpServletResponse response) throws Exception { map.forEach(request::setAttribute); } }; final Cas20ResponseView view = new Cas20ResponseView(true, null, null, "attribute", delegatedView); view.render(modelAndView.getModel(), req, resp); assertNotNull(req.getAttribute(CasViewConstants.MODEL_ATTRIBUTE_NAME_CHAINED_AUTHENTICATIONS)); assertNotNull(req.getAttribute(CasViewConstants.MODEL_ATTRIBUTE_NAME_PRIMARY_AUTHENTICATION)); assertNotNull(req.getAttribute(CasViewConstants.MODEL_ATTRIBUTE_NAME_PRINCIPAL)); assertNotNull(req.getAttribute(CasProtocolConstants.VALIDATION_CAS_MODEL_PROXY_GRANTING_TICKET_IOU)); } }