Skip to content
Snippets Groups Projects
Commit 3ef8ace2 authored by OZGCloud's avatar OZGCloud
Browse files

OZG-7092 adjust tests

parent a47ee1e6
No related branches found
No related tags found
1 merge request!1OZG-7092 Anpassung TokenChecker
Showing
with 7 additions and 548 deletions
...@@ -23,8 +23,9 @@ package de.ozgcloud.token; ...@@ -23,8 +23,9 @@ package de.ozgcloud.token;
import java.util.List; import java.util.List;
import java.util.UUID; import java.util.UUID;
import com.thedeanda.lorem.LoremIpsum;
import de.ozgcloud.token.TokenValidationResult.TokenValidationResultBuilder; import de.ozgcloud.token.TokenValidationResult.TokenValidationResultBuilder;
import de.ozgcloud.token.common.errorhandling.TokenVerificationExceptionTestFactory;
import lombok.AccessLevel; import lombok.AccessLevel;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
...@@ -34,7 +35,7 @@ public class CheckTokenResultTestFactory { ...@@ -34,7 +35,7 @@ public class CheckTokenResultTestFactory {
public static final String POSTFACH_ID = UUID.randomUUID().toString(); public static final String POSTFACH_ID = UUID.randomUUID().toString();
public static final String TRUST_LEVEL = "LOW"; public static final String TRUST_LEVEL = "LOW";
public static final TokenAttribute OTHER_FIELD = TokenAttributeTestFactory.create(); public static final TokenAttribute OTHER_FIELD = TokenAttributeTestFactory.create();
public static final String ERROR_MESSAGE = TokenVerificationExceptionTestFactory.MESSAGE; public static final String ERROR_MESSAGE = LoremIpsum.getInstance().getWords(4);
static TokenValidationResult createValid() { static TokenValidationResult createValid() {
return createBuilder().valid(true).build(); return createBuilder().valid(true).build();
......
package de.ozgcloud.token; package de.ozgcloud.token;
import de.ozgcloud.token.GrpcCheckError.Builder; import de.ozgcloud.token.GrpcCheckError.Builder;
import de.ozgcloud.token.common.errorhandling.TokenVerificationExceptionTestFactory;
public class GrpcCheckErrorTestFactory { public class GrpcCheckErrorTestFactory {
public static final String ERROR_MESSAGE = TokenVerificationExceptionTestFactory.MESSAGE; public static final String ERROR_MESSAGE = CheckTokenResultTestFactory.ERROR_MESSAGE;
public static GrpcCheckError create() { public static GrpcCheckError create() {
return createBuilder().build(); return createBuilder().build();
......
...@@ -60,7 +60,7 @@ class TokenCheckGrpcServiceTest { ...@@ -60,7 +60,7 @@ class TokenCheckGrpcServiceTest {
@BeforeEach @BeforeEach
void init() { void init() {
when(samlTokenService.validate(any())).thenReturn(tokenCheckResult); when(samlTokenService.validate(any())).thenReturn(tokenCheckResult);
doReturn(grpcCheckTokenResponse).when(service).buildValidCheckTokenResponse(any()); doReturn(grpcCheckTokenResponse).when(service).buildCheckResponse(any());
} }
@Test @Test
...@@ -71,10 +71,10 @@ class TokenCheckGrpcServiceTest { ...@@ -71,10 +71,10 @@ class TokenCheckGrpcServiceTest {
} }
@Test @Test
void shouldCallBuildCheckTokenResponse() { void shouldCallBuildCheckResponse() {
checkToken(); checkToken();
verify(service).buildValidCheckTokenResponse(tokenCheckResult); verify(service).buildCheckResponse(tokenCheckResult);
} }
@Test @Test
......
/*
* 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.token;
import static de.ozgcloud.token.saml.SamlTokenTestUtils.*;
import static org.assertj.core.api.Assertions.*;
import static org.mockito.ArgumentMatchers.*;
import static org.mockito.Mockito.*;
import java.util.List;
import org.jetbrains.annotations.NotNull;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Test;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.Spy;
import org.opensaml.saml.saml2.core.Issuer;
import org.opensaml.saml.saml2.core.Response;
import de.ozgcloud.common.test.TestUtils;
import de.ozgcloud.token.saml.SamlServiceRegistry;
import de.ozgcloud.token.saml.SamlTokenTestUtils;
import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
class TokenCheckServiceITCase {
private static final String POSTFACH_ID_BAYERN_ID = "pk-bayern";
private static final String POSTFACH_ID_MUK = "pk-muk";
private static final String TRUST_LEVEL = "low";
private static final String TRUST_LEVEL_NAME_BAYERN_ID = "urn:oid:1.2.40.0.10.2.1.1.261.94";
private static final String POSTFACH_ID_NAME_BAYERN_ID = "urn:oid:2.5.4.18";
@InjectMocks
@Spy
private TokenCheckService service;
@Mock
private Saml2VerificationService verificationService;
@Mock
private Saml2DecryptionService decryptionService;
@Mock
private SamlServiceRegistry samlServiceRegistry;
@Mock
private Saml2ParseService parseService;
private String token;
@Nested
class TestDecryptingAttributes {
@Nested
class TestBayernId {
@BeforeEach
void setup() throws ComponentInitializationException {
var response = initMockSamlResponse();
when(parseService.parse(anyString())).thenReturn(response);
var config = SamlTokenTestUtils.initConfig(BAYERN_ID);
when(samlServiceRegistry.getService(IDP_ENTITY_ID_BAYERN_ID)).thenReturn(
config.getService(IDP_ENTITY_ID_BAYERN_ID));
token = TestUtils.loadTextFile("SamlResponseBayernId.xml");
}
private static @NotNull Response initMockSamlResponse() {
Response response = mock(Response.class);
Issuer issuer = mock(Issuer.class);
when(issuer.getValue()).thenReturn(IDP_ENTITY_ID_BAYERN_ID);
when(response.getIssuer()).thenReturn(issuer);
return response;
}
@Test
void shouldGetPostfachHandleFromBayernIdToken() {
var attributes = List.of(new TokenAttribute(POSTFACH_ID_NAME_BAYERN_ID, POSTFACH_ID_BAYERN_ID));
when(decryptionService.decryptAttributes(any(), any(SamlSetting.class))).thenReturn(
attributes);
TokenValidationResult result = service.getCheckTokenResult(token);
assertThat(result.getPostfachId()).isEqualTo(POSTFACH_ID_BAYERN_ID);
}
@Test
void shouldGetTrustLevel() {
var attributes = List.of(new TokenAttribute(TRUST_LEVEL_NAME_BAYERN_ID, TRUST_LEVEL));
when(decryptionService.decryptAttributes(any(), any(SamlSetting.class))).thenReturn(
attributes);
TokenValidationResult result = service.getCheckTokenResult(token);
assertThat(result.getTrustLevel()).isEqualTo(TRUST_LEVEL);
}
}
@Nested
class TestMuk {
@BeforeEach
void setup() throws ComponentInitializationException {
var response = initMukSamlResponse();
when(parseService.parse(anyString())).thenReturn(response);
var config = SamlTokenTestUtils.initConfig(MUK);
when(samlServiceRegistry.getService(IDP_ENTITY_ID_MUK))
.thenReturn(config.getService(IDP_ENTITY_ID_MUK));
token = TestUtils.loadTextFile("SamlResponseMuk.xml");
}
private static @NotNull Response initMukSamlResponse() {
Response response = mock(Response.class);
Issuer issuer = mock(Issuer.class);
when(issuer.getValue()).thenReturn(IDP_ENTITY_ID_MUK);
when(response.getIssuer()).thenReturn(issuer);
when(response.getID()).thenReturn(POSTFACH_ID_MUK);
return response;
}
@Test
void shouldGetPostfachHandleFromMukToken() {
TokenValidationResult result = service.getCheckTokenResult(token);
assertThat(result.getPostfachId()).isEqualTo(POSTFACH_ID_MUK);
}
}
}
}
\ No newline at end of file
/*
* 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.token;
import java.util.HashMap;
import org.springframework.boot.context.properties.ConfigurationPropertiesScan;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
import de.ozgcloud.token.saml.SamlServiceRegistry;
import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
import net.shibboleth.utilities.java.support.xml.BasicParserPool;
import net.shibboleth.utilities.java.support.xml.ParserPool;
@ConfigurationPropertiesScan("de.ozgcloud.token")
@EnableConfigurationProperties(TokenValidationProperties.class)
public class TokenCheckTestConfiguration {
@Bean
ParserPool parserPool() throws ComponentInitializationException {
var localParserPool = new BasicParserPool();
final var features = SamlTokenUtils.createFeatureMap();
localParserPool.setBuilderFeatures(features);
localParserPool.setBuilderAttributes(new HashMap<>());
localParserPool.initialize();
return localParserPool;
}
@Bean
SamlServiceRegistry samlSettingsRegistry() {
return new SamlServiceRegistry();
}
}
/*
* 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.token;
import static org.assertj.core.api.Assertions.*;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.TestPropertySource;
@SpringBootTest(classes = { TokenCheckTestConfiguration.class })
class TokenValidationPropertiesITCase {
private static final String URL = "https=//infra-pre-id.bayernportal.de/idp";
private static final String TRUST_LEVEL_KEY = "trustLevel";
private static final String TRUST_LEVEL_VALUE = "urn=oid:1.2.3.4";
private static final String POSTFACH_ID_KEY = "postfachId";
private static final String POSTFACH_ID_VALUE = "urn=oid:2.5.4.18";
@DisplayName("Test loading token checker configuration")
@Nested
@TestPropertySource(properties = {
TokenValidationProperties.PREFIX + ".entities[0].idpEntityId=" + TokenValidationPropertiesITCase.URL,
TokenValidationProperties.PREFIX + ".entities[0].key=classpath:test2-enc.key",
TokenValidationProperties.PREFIX + ".entities[0].certificate=classpath:test2-enc.crt",
TokenValidationProperties.PREFIX + ".entities[0].metadata=classpath:metadata/bayernid-idp-infra.xml",
TokenValidationProperties.PREFIX + ".entities[0].mappings.postfachId=" + TokenValidationPropertiesITCase.POSTFACH_ID_VALUE,
TokenValidationProperties.PREFIX + ".entities[0].mappings.trustLevel=" + TokenValidationPropertiesITCase.TRUST_LEVEL_VALUE
})
class TestLoadingConfiguration {
@Autowired
private TokenValidationProperties tokenValidationProperties;
@Nested
class TestInitialization {
@Test
void shouldHaveProperties() {
assertThat(tokenValidationProperties).isNotNull();
}
@Test
void shouldHaveEntities() {
assertThat(tokenValidationProperties.getEntities()).isNotNull();
}
}
@Nested
class TestLoadedEntity {
@Test
void shouldHaveIdpEntityId() {
assertThat(tokenValidationProperties.getEntities().getFirst().getIdpEntityId()).isEqualTo(URL);
}
@Test
void shouldHaveDevEncKey() {
assertThat(tokenValidationProperties.getEntities().getFirst().getKey()).isNotNull();
}
@Test
void shouldHaveDevEncCrt() {
assertThat(tokenValidationProperties.getEntities().getFirst().getCertificate()).isNotNull();
}
@Test
void shouldHaveMetadata() {
assertThat(tokenValidationProperties.getEntities().getFirst().getMetadata()).isNotNull();
}
@Test
void shouldHavePostkorbHandleMapping() {
assertThat(tokenValidationProperties.getEntities().getFirst().getMappings()).containsEntry(POSTFACH_ID_KEY, POSTFACH_ID_VALUE);
}
@Test
void shouldNotHaveUseIdAsPostkorbHandle() {
assertThat(tokenValidationProperties.getEntities().getFirst().getUserIdAsPostfachId()).isFalse();
}
@Test
void shouldHaveConfiguredTrustLevelMapping() {
assertThat(tokenValidationProperties.getEntities().getFirst().getMappings()).containsEntry(TRUST_LEVEL_KEY, TRUST_LEVEL_VALUE);
}
}
}
@DisplayName("Test loading mapping")
@TestPropertySource(properties = {
TokenValidationProperties.PREFIX + ".entities[0].idpEntityId=" + URL,
TokenValidationProperties.PREFIX + ".entities[0].key=classpath:test2-enc.key",
TokenValidationProperties.PREFIX + ".entities[0].certificate=classpath:test2-enc.crt",
TokenValidationProperties.PREFIX + ".entities[0].metadata=classpath:metadata/bayernid-idp-infra.xml",
TokenValidationProperties.PREFIX + ".entities[0]use-id-as-postfach-id=true",
TokenValidationProperties.PREFIX + ".entities[0].mappings.test=test2",
})
@Nested
class TestLoadingMappingConfiguration {
@Autowired
private TokenValidationProperties tokenValidationProperties;
@Test
void shouldHaveUseIdAsPostfachId() {
assertThat(tokenValidationProperties.getEntities().getFirst().getUserIdAsPostfachId()).isTrue();
}
@Test
void shouldHaveConfiguredTestMapping() {
assertThat(tokenValidationProperties.getEntities().getFirst().getMappings()).containsEntry("test", "test2");
}
@Test
void shouldNotHavePostkorbHandleMapping() {
assertThat(tokenValidationProperties.getEntities().getFirst().getMappings()).doesNotContain(entry(POSTFACH_ID_KEY,
POSTFACH_ID_VALUE));
}
}
}
\ No newline at end of file
package de.ozgcloud.token.common.errorhandling;
import java.util.List;
import org.springframework.security.saml2.core.Saml2Error;
import com.thedeanda.lorem.LoremIpsum;
public class TokenVerificationExceptionTestFactory {
public static final String MESSAGE = LoremIpsum.getInstance().getWords(5);
public static final String ERROR_CODE = LoremIpsum.getInstance().getWords(1);
public static final String ERROR_DESCRIPTION = LoremIpsum.getInstance().getWords(6);
public static TokenVerificationException create() {
return new TokenVerificationException(MESSAGE, List.of(createSaml2Error()));
}
public static Saml2Error createSaml2Error() {
return new Saml2Error(ERROR_CODE, ERROR_DESCRIPTION);
}
}
/*
* 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.token.saml;
import static de.ozgcloud.token.saml.Saml2VerificationService.*;
import static org.assertj.core.api.Assertions.*;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.opensaml.core.xml.config.XMLObjectProviderRegistrySupport;
import org.opensaml.saml.saml2.core.Response;
import org.opensaml.saml.saml2.core.impl.ResponseUnmarshaller;
import org.opensaml.saml.security.impl.SAMLSignatureProfileValidator;
import de.ozgcloud.common.test.TestUtils;
import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
class Saml2VerificationServiceITCase {
private Saml2VerificationService verifier;
@BeforeEach
void setup() throws ComponentInitializationException {
var parserPool = SamlTokenTestUtils.initParserPool();
var samlSettingsRegistry = SamlTokenTestUtils.initConfig(SamlTokenTestUtils.BAYERN_ID);
var responseUnmarshaller = (ResponseUnmarshaller) XMLObjectProviderRegistrySupport.getUnmarshallerFactory()
.getUnmarshaller(Response.DEFAULT_ELEMENT_NAME);
var parser = new Saml2ParseService(parserPool, responseUnmarshaller);
verifier = new Saml2VerificationService(parser, samlSettingsRegistry, new SAMLSignatureProfileValidator());
}
@Test
void shouldGetVerificationErrorInvalidSignature() {
var samlResponse = TestUtils.loadTextFile("SamlResponseBayernId.xml");
var res = verifier.verify(samlResponse);
assertThat(res.getFirst().getErrorCode()).isEqualTo("invalid_signature");
assertThat(res.getFirst().getDescription()).startsWith(INVALID_SIGNATURE);
}
@Test
void shouldGetVerificationErrorNoSignature() {
var samlResponse = TestUtils.loadTextFile("BrokenSamlResponseNoSignature.xml");
var res = verifier.verify(samlResponse);
assertThat(res.getFirst().getErrorCode()).isEqualTo("invalid_signature");
assertThat(res.getFirst().getDescription()).isEqualTo(SIGNATURE_MISSING);
}
@Test
void shouldGetVerificationErrorNoReference() {
var samlResponse = TestUtils.loadTextFile("BrokenSamlResponseNoReference.xml");
var res = verifier.verify(samlResponse);
assertThat(res.getFirst().getErrorCode()).isEqualTo("invalid_signature");
assertThat(res.getFirst().getDescription()).startsWith(INVALID_SIGNATURE_PROFILE);
}
}
\ No newline at end of file
/*
* 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.token.saml;
import static de.ozgcloud.token.TokenCheckService.*;
import static org.mockito.Mockito.*;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.jetbrains.annotations.NotNull;
import org.springframework.core.io.InputStreamResource;
import de.ozgcloud.common.test.TestUtils;
import de.ozgcloud.token.TokenCheckerConfiguration;
import de.ozgcloud.token.TokenValidationProperties;
import lombok.AccessLevel;
import lombok.NoArgsConstructor;
import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
import net.shibboleth.utilities.java.support.xml.BasicParserPool;
import net.shibboleth.utilities.java.support.xml.ParserPool;
@NoArgsConstructor(access = AccessLevel.PRIVATE)
public class SamlTokenTestUtils {
public static final String BAYERN_ID = "bayernId";
public static final String MUK = "muk";
public static final String IDP_ENTITY_ID_BAYERN_ID = "https://infra-pre-id.bayernportal.de/idp";
public static final String IDP_ENTITY_ID_MUK = "https://e4k-portal.een.elster.de";
static ParserPool initParserPool() throws ComponentInitializationException {
var localParserPool = new BasicParserPool();
final var features = SamlTokenUtils.createFeatureMap();
localParserPool.setBuilderFeatures(features);
localParserPool.setBuilderAttributes(new HashMap<>());
localParserPool.initialize();
return localParserPool;
}
public static SamlServiceRegistry initConfig(String type) throws ComponentInitializationException {
TokenValidationProperties properties = null;
if (BAYERN_ID.equals(type)) {
properties = initProperties();
} else if (MUK.equals(type)) {
properties = initMukProperties();
}
var samlSettingsRegistry = new SamlServiceRegistry();
var config = new TokenCheckerConfiguration(properties, initParserPool(), samlSettingsRegistry);
config.initOpenSAML();
return samlSettingsRegistry;
}
static @NotNull TokenValidationProperties initProperties() {
TokenValidationProperties properties = mock(TokenValidationProperties.class);
var entity = new ConfigurationEntity();
entity.setIdpEntityId(IDP_ENTITY_ID_BAYERN_ID);
entity.setCertificate(new InputStreamResource(TestUtils.loadFile("test1-enc.crt")));
entity.setKey(new InputStreamResource(TestUtils.loadFile("test1-enc.key")));
entity.setMetadata(new InputStreamResource(TestUtils.loadFile("metadata/bayernid-idp-infra.xml")));
entity.setMappings(Map.of(POSTFACH_ID_KEY, "urn:oid:2.5.4.18", TRUST_LEVEL_KEY, "urn:oid:1.2.40.0.10.2.1.1.261.94"));
when(properties.getEntities()).thenReturn(List.of(entity));
return properties;
}
static @NotNull TokenValidationProperties initMukProperties() {
TokenValidationProperties properties = mock(TokenValidationProperties.class);
var entity = new ConfigurationEntity();
entity.setIdpEntityId(IDP_ENTITY_ID_MUK);
entity.setCertificate(new InputStreamResource(TestUtils.loadFile("test3-enc.crt")));
entity.setKey(new InputStreamResource(TestUtils.loadFile("test3-enc.key")));
entity.setMetadata(new InputStreamResource(TestUtils.loadFile("metadata/muk-idp-e4k.xml")));
entity.setMappings(Map.of(TRUST_LEVEL_KEY, "Elster"));
entity.setUseIdAsPostfachId(true);
when(properties.getEntities()).thenReturn(List.of(entity));
return properties;
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment