mirror of https://github.com/jacekkow/keycloak-protocol-cas

Laurent Meunier
2024-06-11 b92028de86e6b25a87c12ff34ae00338a455308d
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
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());
    }
}