From 5b131759720f309256cc81de3bea60234d2b4d9d Mon Sep 17 00:00:00 2001 From: Paul Latzelsperger <43503240+paullatzelsperger@users.noreply.github.com> Date: Wed, 15 Nov 2023 13:10:04 +0100 Subject: [PATCH] fix: create PresentationVerifier (no inject) (#3611) * fix: create PresentationVerifier (no inject) * fixed test --- .../core/IdentityAndTrustExtension.java | 28 ++++++++++--------- .../core/IdentityAndTrustExtensionTest.java | 8 ++++-- 2 files changed, 21 insertions(+), 15 deletions(-) diff --git a/extensions/common/iam/identity-trust/identity-trust-core/src/main/java/org/eclipse/edc/iam/identitytrust/core/IdentityAndTrustExtension.java b/extensions/common/iam/identity-trust/identity-trust-core/src/main/java/org/eclipse/edc/iam/identitytrust/core/IdentityAndTrustExtension.java index 317ae18fe19..97961edb2e1 100644 --- a/extensions/common/iam/identity-trust/identity-trust-core/src/main/java/org/eclipse/edc/iam/identitytrust/core/IdentityAndTrustExtension.java +++ b/extensions/common/iam/identity-trust/identity-trust-core/src/main/java/org/eclipse/edc/iam/identitytrust/core/IdentityAndTrustExtension.java @@ -51,7 +51,6 @@ public class IdentityAndTrustExtension implements ServiceExtension { @Inject private SecureTokenService secureTokenService; - @Inject private PresentationVerifier presentationVerifier; @Inject @@ -79,7 +78,7 @@ public class IdentityAndTrustExtension implements ServiceExtension { @Provider public IdentityService createIdentityService(ServiceExtensionContext context) { - return new IdentityAndTrustService(secureTokenService, getIssuerDid(context), context.getParticipantId(), presentationVerifier, + return new IdentityAndTrustService(secureTokenService, getIssuerDid(context), context.getParticipantId(), getPresentationVerifier(context), credentialServiceClient, getJwtValidator(), getJwtVerifier(), registry, clock); } @@ -92,17 +91,20 @@ public JwtValidator getJwtValidator() { } @Provider - public PresentationVerifier createPresentationVerifier(ServiceExtensionContext context) { - var mapper = typeManager.getMapper(JSON_LD); - - var jwtVerifier = new JwtPresentationVerifier(getJwtVerifier(), mapper); - var ldpVerifier = LdpVerifier.Builder.newInstance() - .signatureSuites(signatureSuiteRegistry) - .jsonLd(jsonLd) - .objectMapper(mapper) - .build(); - - return new MultiFormatPresentationVerifier(getOwnDid(context), jwtVerifier, ldpVerifier); + public PresentationVerifier getPresentationVerifier(ServiceExtensionContext context) { + if (presentationVerifier == null) { + var mapper = typeManager.getMapper(JSON_LD); + + var jwtVerifier = new JwtPresentationVerifier(getJwtVerifier(), mapper); + var ldpVerifier = LdpVerifier.Builder.newInstance() + .signatureSuites(signatureSuiteRegistry) + .jsonLd(jsonLd) + .objectMapper(mapper) + .build(); + + presentationVerifier = new MultiFormatPresentationVerifier(getOwnDid(context), jwtVerifier, ldpVerifier); + } + return presentationVerifier; } @Provider diff --git a/extensions/common/iam/identity-trust/identity-trust-core/src/test/java/org/eclipse/edc/iam/identitytrust/core/IdentityAndTrustExtensionTest.java b/extensions/common/iam/identity-trust/identity-trust-core/src/test/java/org/eclipse/edc/iam/identitytrust/core/IdentityAndTrustExtensionTest.java index 5debcb3a4d6..bbbd0b12d7c 100644 --- a/extensions/common/iam/identity-trust/identity-trust-core/src/test/java/org/eclipse/edc/iam/identitytrust/core/IdentityAndTrustExtensionTest.java +++ b/extensions/common/iam/identity-trust/identity-trust-core/src/test/java/org/eclipse/edc/iam/identitytrust/core/IdentityAndTrustExtensionTest.java @@ -19,11 +19,13 @@ import org.eclipse.edc.junit.extensions.DependencyInjectionExtension; import org.eclipse.edc.spi.system.ServiceExtensionContext; import org.eclipse.edc.spi.system.configuration.Config; +import org.eclipse.edc.spi.types.TypeManager; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import static org.assertj.core.api.Assertions.assertThat; +import static org.eclipse.edc.spi.CoreConstants.JSON_LD; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.spy; @@ -33,17 +35,19 @@ @ExtendWith(DependencyInjectionExtension.class) class IdentityAndTrustExtensionTest { - private IdentityAndTrustExtension extension; private ServiceExtensionContext spiedContext; @BeforeEach void setUp(ServiceExtensionContext context) { spiedContext = spy(context); spiedContext.registerService(SecureTokenService.class, mock()); + TypeManager mockedTm = mock(); + when(mockedTm.getMapper(eq(JSON_LD))).thenReturn(mock()); + spiedContext.registerService(TypeManager.class, mockedTm); } @Test - void verifyCorrectService(IdentityAndTrustExtension extension, ServiceExtensionContext context) { + void verifyCorrectService(IdentityAndTrustExtension extension) { var configMock = mock(Config.class); when(configMock.getString(eq(IdentityAndTrustExtension.ISSUER_DID_PROPERTY))).thenReturn("did:web:test"); when(spiedContext.getConfig()).thenReturn(configMock);