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<NameValuePair> 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()); 
 | 
    } 
 | 
} 
 |