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