package org.keycloak.protocol.cas; 
 | 
  
 | 
import jakarta.ws.rs.core.Response; 
 | 
import org.junit.Test; 
 | 
import org.keycloak.dom.saml.v1.protocol.SAML11ResponseType; 
 | 
import org.keycloak.protocol.cas.representations.CASErrorCode; 
 | 
import org.keycloak.protocol.cas.representations.SamlResponseHelper; 
 | 
import org.keycloak.protocol.cas.utils.CASValidationException; 
 | 
import org.w3c.dom.Document; 
 | 
  
 | 
import java.util.Collections; 
 | 
  
 | 
import static org.junit.Assert.assertNotNull; 
 | 
import static org.junit.Assert.assertTrue; 
 | 
  
 | 
public class SamlResponseTest { 
 | 
    @Test 
 | 
    public void successResponseIsWrappedInSOAP() { 
 | 
        SAML11ResponseType response = SamlResponseHelper.successResponse("keycloak", "test@example.com", Collections.emptyMap()); 
 | 
        String soapResult = SamlResponseHelper.soap(response); 
 | 
        assertTrue(soapResult.contains("samlp:Success")); 
 | 
        assertTrue(soapResult.contains("test@example.com")); 
 | 
        assertTrue(soapResult.contains("keycloak")); 
 | 
    } 
 | 
  
 | 
    @Test 
 | 
    public void failureResponseIsWrappedInSOAP() { 
 | 
        SAML11ResponseType response = SamlResponseHelper.errorResponse(new CASValidationException(CASErrorCode.INVALID_TICKET, "Nope", Response.Status.BAD_REQUEST)); 
 | 
        String nope = SamlResponseHelper.soap(response); 
 | 
        assertTrue(nope.contains("Nope")); 
 | 
    } 
 | 
  
 | 
    @Test 
 | 
    public void validateSchemaResponseFailure() throws Exception { 
 | 
        SAML11ResponseType response = SamlResponseHelper.errorResponse(new CASValidationException(CASErrorCode.INVALID_TICKET, "Nope", Response.Status.BAD_REQUEST)); 
 | 
        String output = SamlResponseHelper.toString(SamlResponseHelper.toDOM(response)); 
 | 
        Document doc = XMLValidator.parseAndValidate(output, XMLValidator.schemaFromClassPath("oasis-sstc-saml-schema-protocol-1.1.xsd")); 
 | 
        assertNotNull(doc); 
 | 
    } 
 | 
  
 | 
    @Test 
 | 
    public void validateSchemaResponseSuccess() throws Exception { 
 | 
        SAML11ResponseType response = SamlResponseHelper.successResponse("keycloak", "test@example.com", Collections.emptyMap()); 
 | 
        String output = SamlResponseHelper.toString(SamlResponseHelper.toDOM(response)); 
 | 
        Document doc = XMLValidator.parseAndValidate(output, XMLValidator.schemaFromClassPath("oasis-sstc-saml-schema-protocol-1.1.xsd")); 
 | 
        assertNotNull(doc); 
 | 
    } 
 | 
} 
 |