package org.apereo.cas.support.saml.authentication;
import org.apereo.cas.util.EncodingUtils;
import org.apereo.cas.support.saml.AbstractOpenSamlTests;
import org.apereo.cas.util.CompressionUtils;
import org.junit.Test;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.util.zip.DeflaterOutputStream;
import static org.junit.Assert.*;
/**
* Utility class to ensure authentication requests are properly encoded and decoded.
* @author Misagh Moayyed
* @since 4.1
*/
public class SamlAuthenticationRequestTests extends AbstractOpenSamlTests {
@Test
public void ensureDeflation() throws Exception {
final String deflator = CompressionUtils.deflate(SAML_REQUEST);
final String deflatorStream = deflateViaStream(SAML_REQUEST);
assertEquals(deflatorStream, deflator);
}
private static String deflateViaStream(final String samlRequest) throws IOException {
final byte[] xmlBytes = samlRequest.getBytes(StandardCharsets.UTF_8);
final ByteArrayOutputStream byteOutputStream = new ByteArrayOutputStream();
final DeflaterOutputStream deflaterOutputStream = new DeflaterOutputStream(
byteOutputStream);
deflaterOutputStream.write(xmlBytes, 0, xmlBytes.length);
deflaterOutputStream.close();
return EncodingUtils.encodeBase64(byteOutputStream.toByteArray());
}
}