package org.keycloak.protocol.cas; import org.apache.http.HttpEntity; import org.apache.http.NameValuePair; import org.apache.http.client.utils.URLEncodedUtils; import org.junit.Test; import org.keycloak.protocol.cas.utils.LogoutHelper; import org.keycloak.saml.common.constants.JBossSAMLURIConstants; import org.keycloak.saml.common.util.DocumentUtil; import org.w3c.dom.Document; import org.w3c.dom.Node; import java.util.List; import java.util.stream.Collectors; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; public class LogoutHelperTest { @Test public void testLogoutRequest() throws Exception { HttpEntity requestEntity = LogoutHelper.buildSingleLogoutRequest("ST-test"); List parameters = URLEncodedUtils.parse(requestEntity).stream().filter(parameter -> "logoutRequest".equals(parameter.getName())).collect(Collectors.toList()); assertEquals(1, parameters.size()); String logoutRequest = parameters.get(0).getValue(); Document doc = DocumentUtil.getDocument(logoutRequest); assertEquals("LogoutRequest", doc.getDocumentElement().getLocalName()); assertEquals(JBossSAMLURIConstants.PROTOCOL_NSURI.get(), doc.getDocumentElement().getNamespaceURI()); assertEquals("2.0", doc.getDocumentElement().getAttribute("Version")); assertFalse(doc.getDocumentElement().getAttribute("ID").isEmpty()); assertFalse(doc.getDocumentElement().getAttribute("IssueInstant").isEmpty()); Node nameID = doc.getDocumentElement().getElementsByTagNameNS(JBossSAMLURIConstants.ASSERTION_NSURI.get(), "NameID").item(0); assertFalse(nameID.getTextContent() == null || nameID.getTextContent().isEmpty()); Node sessionIndex = doc.getDocumentElement().getElementsByTagNameNS(JBossSAMLURIConstants.PROTOCOL_NSURI.get(), "SessionIndex").item(0); assertEquals("ST-test", sessionIndex.getTextContent()); } }