From f026e4eeeb38ea01c31a58d0e53a301a73a6f89c Mon Sep 17 00:00:00 2001 From: OZGCloud <ozgcloud@mgm-tp.com> Date: Fri, 8 Mar 2024 08:33:24 +0100 Subject: [PATCH] OZG-4383 Tests verbessert --- .../AntragsraumGrpcService.java | 2 +- .../BayernIdSamlConfiguration.java | 43 +------- .../NachrichtMapper.java | 2 +- .../Saml2Decrypter.java | 5 +- .../nachrichten/antragraum/Saml2Parser.java | 103 ++++++++++++++++++ .../Saml2Verifier.java | 3 +- .../nachrichten/antragsraum/Saml2Parser.java | 60 ---------- .../AntragsraumGrpcServiceTest.java | 2 +- .../BayernIdSamlConfigurationITCase.java | 2 +- .../GrpcFindRueckfrageRequestTestFactory.java | 2 +- .../NachrichtMapperTest.java | 2 +- .../Saml2DecrypterITCase.java | 2 +- .../Saml2ParserTest.java | 25 ++++- .../Saml2VerifierITCase.java | 2 +- 14 files changed, 140 insertions(+), 115 deletions(-) rename src/main/java/de/ozgcloud/nachrichten/{antragsraum => antragraum}/AntragsraumGrpcService.java (98%) rename src/main/java/de/ozgcloud/nachrichten/{antragsraum => antragraum}/BayernIdSamlConfiguration.java (85%) rename src/main/java/de/ozgcloud/nachrichten/{antragsraum => antragraum}/NachrichtMapper.java (98%) rename src/main/java/de/ozgcloud/nachrichten/{antragsraum => antragraum}/Saml2Decrypter.java (94%) create mode 100644 src/main/java/de/ozgcloud/nachrichten/antragraum/Saml2Parser.java rename src/main/java/de/ozgcloud/nachrichten/{antragsraum => antragraum}/Saml2Verifier.java (98%) delete mode 100644 src/main/java/de/ozgcloud/nachrichten/antragsraum/Saml2Parser.java rename src/test/java/de/ozgcloud/nachrichten/{antragsraum => antragraum}/AntragsraumGrpcServiceTest.java (98%) rename src/test/java/de/ozgcloud/nachrichten/{antragsraum => antragraum}/BayernIdSamlConfigurationITCase.java (97%) rename src/test/java/de/ozgcloud/nachrichten/{antragsraum => antragraum}/GrpcFindRueckfrageRequestTestFactory.java (96%) rename src/test/java/de/ozgcloud/nachrichten/{antragsraum => antragraum}/NachrichtMapperTest.java (98%) rename src/test/java/de/ozgcloud/nachrichten/{antragsraum => antragraum}/Saml2DecrypterITCase.java (98%) rename src/test/java/de/ozgcloud/nachrichten/{antragsraum => antragraum}/Saml2ParserTest.java (74%) rename src/test/java/de/ozgcloud/nachrichten/{antragsraum => antragraum}/Saml2VerifierITCase.java (97%) diff --git a/src/main/java/de/ozgcloud/nachrichten/antragsraum/AntragsraumGrpcService.java b/src/main/java/de/ozgcloud/nachrichten/antragraum/AntragsraumGrpcService.java similarity index 98% rename from src/main/java/de/ozgcloud/nachrichten/antragsraum/AntragsraumGrpcService.java rename to src/main/java/de/ozgcloud/nachrichten/antragraum/AntragsraumGrpcService.java index e07d5fc..bc623a5 100644 --- a/src/main/java/de/ozgcloud/nachrichten/antragsraum/AntragsraumGrpcService.java +++ b/src/main/java/de/ozgcloud/nachrichten/antragraum/AntragsraumGrpcService.java @@ -18,7 +18,7 @@ * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.ozgcloud.nachrichten.antragsraum; +package de.ozgcloud.nachrichten.antragraum; import de.ozgcloud.nachrichten.postfach.PersistPostfachNachrichtService; import de.ozgcloud.nachrichten.postfach.antragraum.*; diff --git a/src/main/java/de/ozgcloud/nachrichten/antragsraum/BayernIdSamlConfiguration.java b/src/main/java/de/ozgcloud/nachrichten/antragraum/BayernIdSamlConfiguration.java similarity index 85% rename from src/main/java/de/ozgcloud/nachrichten/antragsraum/BayernIdSamlConfiguration.java rename to src/main/java/de/ozgcloud/nachrichten/antragraum/BayernIdSamlConfiguration.java index 429b962..db27510 100644 --- a/src/main/java/de/ozgcloud/nachrichten/antragsraum/BayernIdSamlConfiguration.java +++ b/src/main/java/de/ozgcloud/nachrichten/antragraum/BayernIdSamlConfiguration.java @@ -18,14 +18,12 @@ * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.ozgcloud.nachrichten.antragsraum; +package de.ozgcloud.nachrichten.antragraum; import jakarta.annotation.PostConstruct; import lombok.extern.log4j.Log4j2; import net.shibboleth.utilities.java.support.component.ComponentInitializationException; import net.shibboleth.utilities.java.support.resolver.CriteriaSet; -import net.shibboleth.utilities.java.support.xml.BasicParserPool; -import net.shibboleth.utilities.java.support.xml.ParserPool; import net.shibboleth.utilities.java.support.xml.XMLParserException; import org.opensaml.core.config.ConfigurationService; import org.opensaml.core.config.InitializationService; @@ -71,6 +69,8 @@ import java.security.cert.X509Certificate; import java.security.interfaces.RSAPrivateKey; import java.util.*; +import static de.ozgcloud.nachrichten.antragraum.Saml2Parser.*; + @Configuration @Log4j2 public class BayernIdSamlConfiguration { @@ -104,42 +104,7 @@ public class BayernIdSamlConfiguration { @Bean Saml2Parser parser() { - try { - return new Saml2Parser(getParserPool()); - } catch (Exception e) { - throw new RuntimeException(e); - } - } - - static ParserPool getParserPool() throws ComponentInitializationException { - BasicParserPool parserPool = new BasicParserPool(); - parserPool.setMaxPoolSize(100); - parserPool.setCoalescing(true); - parserPool.setIgnoreComments(true); - parserPool.setIgnoreElementContentWhitespace(true); - parserPool.setNamespaceAware(true); - parserPool.setExpandEntityReferences(false); - parserPool.setXincludeAware(false); - - final Map<String, Boolean> features = createFeatureMap(); - - parserPool.setBuilderFeatures(features); - - parserPool.setBuilderAttributes(new HashMap<>()); - - parserPool.initialize(); - - return parserPool; - } - - private static Map<String, Boolean> createFeatureMap() { - final Map<String, Boolean> features = new HashMap<>(); - features.put("http://xml.org/sax/features/external-general-entities", Boolean.FALSE); - features.put("http://xml.org/sax/features/external-parameter-entities", Boolean.FALSE); - features.put("http://apache.org/xml/features/disallow-doctype-decl", Boolean.TRUE); - features.put("http://apache.org/xml/features/validation/schema/normalized-value", Boolean.FALSE); - features.put("http://javax.xml.XMLConstants/feature/secure-processing", Boolean.TRUE); - return features; + return new Saml2Parser(); } @Bean diff --git a/src/main/java/de/ozgcloud/nachrichten/antragsraum/NachrichtMapper.java b/src/main/java/de/ozgcloud/nachrichten/antragraum/NachrichtMapper.java similarity index 98% rename from src/main/java/de/ozgcloud/nachrichten/antragsraum/NachrichtMapper.java rename to src/main/java/de/ozgcloud/nachrichten/antragraum/NachrichtMapper.java index c7411a3..f704b43 100644 --- a/src/main/java/de/ozgcloud/nachrichten/antragsraum/NachrichtMapper.java +++ b/src/main/java/de/ozgcloud/nachrichten/antragraum/NachrichtMapper.java @@ -18,7 +18,7 @@ * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.ozgcloud.nachrichten.antragsraum; +package de.ozgcloud.nachrichten.antragraum; import de.ozgcloud.nachrichten.postfach.PostfachNachricht; import de.ozgcloud.nachrichten.postfach.antragraum.GrpcRueckfrage; diff --git a/src/main/java/de/ozgcloud/nachrichten/antragsraum/Saml2Decrypter.java b/src/main/java/de/ozgcloud/nachrichten/antragraum/Saml2Decrypter.java similarity index 94% rename from src/main/java/de/ozgcloud/nachrichten/antragsraum/Saml2Decrypter.java rename to src/main/java/de/ozgcloud/nachrichten/antragraum/Saml2Decrypter.java index 4b96afe..62e6b58 100644 --- a/src/main/java/de/ozgcloud/nachrichten/antragsraum/Saml2Decrypter.java +++ b/src/main/java/de/ozgcloud/nachrichten/antragraum/Saml2Decrypter.java @@ -18,7 +18,7 @@ * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.ozgcloud.nachrichten.antragsraum; +package de.ozgcloud.nachrichten.antragraum; import org.opensaml.core.xml.XMLObject; import org.opensaml.core.xml.schema.XSString; @@ -45,6 +45,7 @@ import java.util.Collection; import java.util.List; class Saml2Decrypter { + public static final String LEGACY_POSTKORB_HANDLE_KEY = "legacyPostkorbHandle"; private final Decrypter decrypter; private static final EncryptedKeyResolver encryptedKeyResolver = new ChainingEncryptedKeyResolver( Arrays.asList(new InlineEncryptedKeyResolver(), new EncryptedElementTypeEncryptedKeyResolver(), @@ -80,7 +81,7 @@ class Saml2Decrypter { var samlAssertion = response.getAssertions().get(0); var statements = (AttributeStatement) samlAssertion.getStatements().get(1); var attributes = statements.getAttributes(); - var postfachIdOptional = attributes.stream().filter(attribute -> "legacyPostkorbHandle".equals(attribute.getFriendlyName())).findFirst(); + var postfachIdOptional = attributes.stream().filter(attribute -> LEGACY_POSTKORB_HANDLE_KEY.equals(attribute.getFriendlyName())).findFirst(); return postfachIdOptional.map(postfachIdAttribute -> { List<XMLObject> values = postfachIdAttribute.getAttributeValues(); diff --git a/src/main/java/de/ozgcloud/nachrichten/antragraum/Saml2Parser.java b/src/main/java/de/ozgcloud/nachrichten/antragraum/Saml2Parser.java new file mode 100644 index 0000000..21ebf47 --- /dev/null +++ b/src/main/java/de/ozgcloud/nachrichten/antragraum/Saml2Parser.java @@ -0,0 +1,103 @@ +/* + * Copyright (c) 2024. + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ + +package de.ozgcloud.nachrichten.antragraum; + +import net.shibboleth.utilities.java.support.component.ComponentInitializationException; +import net.shibboleth.utilities.java.support.xml.BasicParserPool; +import net.shibboleth.utilities.java.support.xml.ParserPool; +import net.shibboleth.utilities.java.support.xml.XMLParserException; +import org.opensaml.core.xml.XMLObject; +import org.opensaml.core.xml.config.XMLObjectProviderRegistrySupport; +import org.opensaml.core.xml.io.UnmarshallingException; +import org.opensaml.saml.saml2.core.Response; +import org.opensaml.saml.saml2.core.impl.ResponseUnmarshaller; +import org.springframework.security.saml2.Saml2Exception; +import org.w3c.dom.Document; +import org.w3c.dom.Element; + +import java.io.ByteArrayInputStream; +import java.io.InputStream; +import java.nio.charset.StandardCharsets; +import java.util.HashMap; +import java.util.Map; + +class Saml2Parser { + private ParserPool parserPool; + private ResponseUnmarshaller unmarshaller; + + Saml2Parser() { + init(); + } + + void init() { + try { + this.parserPool = getParserPool(); + unmarshaller = (ResponseUnmarshaller) XMLObjectProviderRegistrySupport.getUnmarshallerFactory().getUnmarshaller(Response.DEFAULT_ELEMENT_NAME); + } catch (Exception e) { + throw new RuntimeException(e); + } + } + + static ParserPool getParserPool() throws ComponentInitializationException { + BasicParserPool parserPool = new BasicParserPool(); + parserPool.setMaxPoolSize(100); + parserPool.setCoalescing(true); + parserPool.setIgnoreComments(true); + parserPool.setIgnoreElementContentWhitespace(true); + parserPool.setNamespaceAware(true); + parserPool.setExpandEntityReferences(false); + parserPool.setXincludeAware(false); + + final Map<String, Boolean> features = createFeatureMap(); + + parserPool.setBuilderFeatures(features); + + parserPool.setBuilderAttributes(new HashMap<>()); + + parserPool.initialize(); + + return parserPool; + } + + private static Map<String, Boolean> createFeatureMap() { + final Map<String, Boolean> features = new HashMap<>(); + features.put("http://xml.org/sax/features/external-general-entities", Boolean.FALSE); + features.put("http://xml.org/sax/features/external-parameter-entities", Boolean.FALSE); + features.put("http://apache.org/xml/features/disallow-doctype-decl", Boolean.TRUE); + features.put("http://apache.org/xml/features/validation/schema/normalized-value", Boolean.FALSE); + features.put("http://javax.xml.XMLConstants/feature/secure-processing", Boolean.TRUE); + return features; + } + + Response parse(String request) { + return (Response) xmlObject(new ByteArrayInputStream(request.getBytes(StandardCharsets.UTF_8))); + } + + XMLObject xmlObject(InputStream inputStream) throws Saml2Exception { + try { + Document document = parserPool.parse(inputStream); + Element element = document.getDocumentElement(); + return unmarshaller.unmarshall(element); + } catch (XMLParserException | UnmarshallingException e) { + throw new Saml2Exception("Failed to deserialize LogoutRequest", e); + } + } +} diff --git a/src/main/java/de/ozgcloud/nachrichten/antragsraum/Saml2Verifier.java b/src/main/java/de/ozgcloud/nachrichten/antragraum/Saml2Verifier.java similarity index 98% rename from src/main/java/de/ozgcloud/nachrichten/antragsraum/Saml2Verifier.java rename to src/main/java/de/ozgcloud/nachrichten/antragraum/Saml2Verifier.java index 5ec95ae..4377d65 100644 --- a/src/main/java/de/ozgcloud/nachrichten/antragsraum/Saml2Verifier.java +++ b/src/main/java/de/ozgcloud/nachrichten/antragraum/Saml2Verifier.java @@ -18,7 +18,7 @@ * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.ozgcloud.nachrichten.antragsraum; +package de.ozgcloud.nachrichten.antragraum; import lombok.RequiredArgsConstructor; import lombok.extern.log4j.Log4j2; @@ -42,7 +42,6 @@ class Saml2Verifier { private final SignatureTrustEngine trustEngine; private final CriteriaSet verificationCriteria; - List<Saml2Error> verify(String samlToken) { var response = parser.parse(samlToken); diff --git a/src/main/java/de/ozgcloud/nachrichten/antragsraum/Saml2Parser.java b/src/main/java/de/ozgcloud/nachrichten/antragsraum/Saml2Parser.java deleted file mode 100644 index 872ebf7..0000000 --- a/src/main/java/de/ozgcloud/nachrichten/antragsraum/Saml2Parser.java +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Copyright (c) 2024. - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ - -package de.ozgcloud.nachrichten.antragsraum; - -import net.shibboleth.utilities.java.support.xml.ParserPool; -import org.opensaml.core.xml.config.XMLObjectProviderRegistrySupport; -import org.opensaml.saml.saml2.core.Response; -import org.opensaml.saml.saml2.core.impl.ResponseUnmarshaller; -import org.springframework.security.saml2.Saml2Exception; -import org.w3c.dom.Document; -import org.w3c.dom.Element; - -import java.io.ByteArrayInputStream; -import java.nio.charset.StandardCharsets; - -class Saml2Parser { - private final ParserPool parserPool; - private ResponseUnmarshaller unmarshaller; - - Saml2Parser(ParserPool parserPool) { - this.parserPool = parserPool; - init(); - } - - void init() { - try { - unmarshaller = (ResponseUnmarshaller) XMLObjectProviderRegistrySupport.getUnmarshallerFactory().getUnmarshaller(Response.DEFAULT_ELEMENT_NAME); - } catch (Exception e) { - throw new RuntimeException(e); - } - } - - Response parse(String request) throws Saml2Exception { - try { - Document document = parserPool.parse(new ByteArrayInputStream(request.getBytes(StandardCharsets.UTF_8))); - Element element = document.getDocumentElement(); - return (Response) unmarshaller.unmarshall(element); - } catch (Exception e) { - throw new Saml2Exception("Failed to deserialize LogoutRequest", e); - } - } -} diff --git a/src/test/java/de/ozgcloud/nachrichten/antragsraum/AntragsraumGrpcServiceTest.java b/src/test/java/de/ozgcloud/nachrichten/antragraum/AntragsraumGrpcServiceTest.java similarity index 98% rename from src/test/java/de/ozgcloud/nachrichten/antragsraum/AntragsraumGrpcServiceTest.java rename to src/test/java/de/ozgcloud/nachrichten/antragraum/AntragsraumGrpcServiceTest.java index e9d257f..1022102 100644 --- a/src/test/java/de/ozgcloud/nachrichten/antragsraum/AntragsraumGrpcServiceTest.java +++ b/src/test/java/de/ozgcloud/nachrichten/antragraum/AntragsraumGrpcServiceTest.java @@ -18,7 +18,7 @@ * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.ozgcloud.nachrichten.antragsraum; +package de.ozgcloud.nachrichten.antragraum; import de.ozgcloud.nachrichten.postfach.PersistPostfachNachrichtService; import de.ozgcloud.nachrichten.postfach.PostfachNachricht; diff --git a/src/test/java/de/ozgcloud/nachrichten/antragsraum/BayernIdSamlConfigurationITCase.java b/src/test/java/de/ozgcloud/nachrichten/antragraum/BayernIdSamlConfigurationITCase.java similarity index 97% rename from src/test/java/de/ozgcloud/nachrichten/antragsraum/BayernIdSamlConfigurationITCase.java rename to src/test/java/de/ozgcloud/nachrichten/antragraum/BayernIdSamlConfigurationITCase.java index f2ab926..7110129 100644 --- a/src/test/java/de/ozgcloud/nachrichten/antragsraum/BayernIdSamlConfigurationITCase.java +++ b/src/test/java/de/ozgcloud/nachrichten/antragraum/BayernIdSamlConfigurationITCase.java @@ -18,7 +18,7 @@ * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.ozgcloud.nachrichten.antragsraum; +package de.ozgcloud.nachrichten.antragraum; import de.ozgcloud.common.test.ITCase; import org.junit.jupiter.api.Test; diff --git a/src/test/java/de/ozgcloud/nachrichten/antragsraum/GrpcFindRueckfrageRequestTestFactory.java b/src/test/java/de/ozgcloud/nachrichten/antragraum/GrpcFindRueckfrageRequestTestFactory.java similarity index 96% rename from src/test/java/de/ozgcloud/nachrichten/antragsraum/GrpcFindRueckfrageRequestTestFactory.java rename to src/test/java/de/ozgcloud/nachrichten/antragraum/GrpcFindRueckfrageRequestTestFactory.java index 3e60f8a..1238f4f 100644 --- a/src/test/java/de/ozgcloud/nachrichten/antragsraum/GrpcFindRueckfrageRequestTestFactory.java +++ b/src/test/java/de/ozgcloud/nachrichten/antragraum/GrpcFindRueckfrageRequestTestFactory.java @@ -18,7 +18,7 @@ * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.ozgcloud.nachrichten.antragsraum; +package de.ozgcloud.nachrichten.antragraum; import de.ozgcloud.common.test.TestUtils; import de.ozgcloud.nachrichten.postfach.antragraum.GrpcFindRueckfragenRequest; diff --git a/src/test/java/de/ozgcloud/nachrichten/antragsraum/NachrichtMapperTest.java b/src/test/java/de/ozgcloud/nachrichten/antragraum/NachrichtMapperTest.java similarity index 98% rename from src/test/java/de/ozgcloud/nachrichten/antragsraum/NachrichtMapperTest.java rename to src/test/java/de/ozgcloud/nachrichten/antragraum/NachrichtMapperTest.java index bd8f93a..d90fa11 100644 --- a/src/test/java/de/ozgcloud/nachrichten/antragsraum/NachrichtMapperTest.java +++ b/src/test/java/de/ozgcloud/nachrichten/antragraum/NachrichtMapperTest.java @@ -18,7 +18,7 @@ * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.ozgcloud.nachrichten.antragsraum; +package de.ozgcloud.nachrichten.antragraum; import de.ozgcloud.nachrichten.postfach.PostfachNachrichtTestFactory; import de.ozgcloud.nachrichten.postfach.antragraum.GrpcRueckfrage; diff --git a/src/test/java/de/ozgcloud/nachrichten/antragsraum/Saml2DecrypterITCase.java b/src/test/java/de/ozgcloud/nachrichten/antragraum/Saml2DecrypterITCase.java similarity index 98% rename from src/test/java/de/ozgcloud/nachrichten/antragsraum/Saml2DecrypterITCase.java rename to src/test/java/de/ozgcloud/nachrichten/antragraum/Saml2DecrypterITCase.java index b6a66c4..bd4861d 100644 --- a/src/test/java/de/ozgcloud/nachrichten/antragsraum/Saml2DecrypterITCase.java +++ b/src/test/java/de/ozgcloud/nachrichten/antragraum/Saml2DecrypterITCase.java @@ -18,7 +18,7 @@ * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.ozgcloud.nachrichten.antragsraum; +package de.ozgcloud.nachrichten.antragraum; import de.ozgcloud.common.test.ITCase; import de.ozgcloud.common.test.TestUtils; diff --git a/src/test/java/de/ozgcloud/nachrichten/antragsraum/Saml2ParserTest.java b/src/test/java/de/ozgcloud/nachrichten/antragraum/Saml2ParserTest.java similarity index 74% rename from src/test/java/de/ozgcloud/nachrichten/antragsraum/Saml2ParserTest.java rename to src/test/java/de/ozgcloud/nachrichten/antragraum/Saml2ParserTest.java index 4b2240c..bd64e2a 100644 --- a/src/test/java/de/ozgcloud/nachrichten/antragsraum/Saml2ParserTest.java +++ b/src/test/java/de/ozgcloud/nachrichten/antragraum/Saml2ParserTest.java @@ -18,18 +18,26 @@ * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.ozgcloud.nachrichten.antragsraum; +package de.ozgcloud.nachrichten.antragraum; import de.ozgcloud.common.test.TestUtils; +import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.opensaml.saml.saml2.core.Response; +import java.io.InputStream; + import static org.assertj.core.api.Assertions.*; class Saml2ParserTest { + @BeforeEach + void setup() { + new BayernIdSamlConfiguration().initOpenSAML(); + } + @Test - void shouldInit() throws Exception { - Saml2Parser parser = new Saml2Parser(BayernIdSamlConfiguration.getParserPool()); + void shouldInit() { + Saml2Parser parser = new Saml2Parser(); assertThat(parser).isNotNull(); } @@ -57,9 +65,18 @@ class Saml2ParserTest { assertThat(response.getIssuer().getValue()).isEqualTo("https://infra-pre-id.bayernportal.de/idp"); } + @Test + void shouldGetXMLObject() throws Exception { + Saml2Parser parser = new Saml2Parser(); + + try (InputStream tokenStream = TestUtils.loadFile("SamlResponse.xml")) { + assertThat(parser.xmlObject(tokenStream)).isNotNull(); + } + } + private static Response getResponse() throws Exception { var token = TestUtils.loadTextFile("SamlResponse.xml"); - Saml2Parser parser = new Saml2Parser(BayernIdSamlConfiguration.getParserPool()); + Saml2Parser parser = new Saml2Parser(); //BayernIdSamlConfiguration.getParserPool() return parser.parse(token); } diff --git a/src/test/java/de/ozgcloud/nachrichten/antragsraum/Saml2VerifierITCase.java b/src/test/java/de/ozgcloud/nachrichten/antragraum/Saml2VerifierITCase.java similarity index 97% rename from src/test/java/de/ozgcloud/nachrichten/antragsraum/Saml2VerifierITCase.java rename to src/test/java/de/ozgcloud/nachrichten/antragraum/Saml2VerifierITCase.java index cccbd0f..f342a89 100644 --- a/src/test/java/de/ozgcloud/nachrichten/antragsraum/Saml2VerifierITCase.java +++ b/src/test/java/de/ozgcloud/nachrichten/antragraum/Saml2VerifierITCase.java @@ -18,7 +18,7 @@ * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.ozgcloud.nachrichten.antragsraum; +package de.ozgcloud.nachrichten.antragraum; import de.ozgcloud.common.test.ITCase; import de.ozgcloud.common.test.TestUtils; -- GitLab