Search in sources :

Example 1 with Result

use of org.eclipse.dataspaceconnector.spi.result.Result in project DataSpaceConnector by eclipse-dataspaceconnector.

the class ConsumerContractNegotiationManagerImplTest method initiate_should_save_a_new_negotiation_in_initial_state.

@Test
void initiate_should_save_a_new_negotiation_in_initial_state() {
    var contractOffer = contractOffer();
    ContractOfferRequest request = ContractOfferRequest.Builder.newInstance().connectorId("connectorId").connectorAddress("connectorAddress").protocol("protocol").contractOffer(contractOffer).build();
    var result = negotiationManager.initiate(request);
    assertThat(result.succeeded()).isTrue();
    verify(store).save(argThat(negotiation -> negotiation.getState() == INITIAL.code() && negotiation.getCounterPartyId().equals(request.getConnectorId()) && negotiation.getCounterPartyAddress().equals(request.getConnectorAddress()) && negotiation.getProtocol().equals(request.getProtocol()) && negotiation.getCorrelationId() == null && negotiation.getContractOffers().size() == 1 && negotiation.getLastContractOffer().equals(contractOffer)));
}
Also used : ArgumentMatchers.any(org.mockito.ArgumentMatchers.any) BeforeEach(org.junit.jupiter.api.BeforeEach) ContractAgreement(org.eclipse.dataspaceconnector.spi.types.domain.contract.agreement.ContractAgreement) ContractNegotiationStore(org.eclipse.dataspaceconnector.spi.contract.negotiation.store.ContractNegotiationStore) ArgumentMatchers.argThat(org.mockito.ArgumentMatchers.argThat) ArgumentMatchers.eq(org.mockito.ArgumentMatchers.eq) Assertions.assertThat(org.assertj.core.api.Assertions.assertThat) Result(org.eclipse.dataspaceconnector.spi.result.Result) CommandRunner(org.eclipse.dataspaceconnector.spi.command.CommandRunner) ContractValidationService(org.eclipse.dataspaceconnector.spi.contract.validation.ContractValidationService) ClaimToken(org.eclipse.dataspaceconnector.spi.iam.ClaimToken) INITIAL(org.eclipse.dataspaceconnector.spi.types.domain.contract.negotiation.ContractNegotiationStates.INITIAL) ArrayList(java.util.ArrayList) ContractOfferRequest(org.eclipse.dataspaceconnector.spi.types.domain.contract.negotiation.ContractOfferRequest) ContractNegotiation(org.eclipse.dataspaceconnector.spi.types.domain.contract.negotiation.ContractNegotiation) ArgumentMatchers.anyInt(org.mockito.ArgumentMatchers.anyInt) ContractOffer(org.eclipse.dataspaceconnector.spi.types.domain.contract.offer.ContractOffer) Policy(org.eclipse.dataspaceconnector.policy.model.Policy) NegotiationResult(org.eclipse.dataspaceconnector.spi.contract.negotiation.response.NegotiationResult) DECLINING(org.eclipse.dataspaceconnector.spi.types.domain.contract.negotiation.ContractNegotiationStates.DECLINING) CONFIRMED(org.eclipse.dataspaceconnector.spi.types.domain.contract.negotiation.ContractNegotiationStates.CONFIRMED) CONSUMER_OFFERED(org.eclipse.dataspaceconnector.spi.types.domain.contract.negotiation.ContractNegotiationStates.CONSUMER_OFFERED) DECLINED(org.eclipse.dataspaceconnector.spi.types.domain.contract.negotiation.ContractNegotiationStates.DECLINED) UUID(java.util.UUID) Mockito.when(org.mockito.Mockito.when) Instant(java.time.Instant) Mockito.verify(org.mockito.Mockito.verify) Test(org.junit.jupiter.api.Test) CONSUMER_APPROVING(org.eclipse.dataspaceconnector.spi.types.domain.contract.negotiation.ContractNegotiationStates.CONSUMER_APPROVING) ContractNegotiationCommand(org.eclipse.dataspaceconnector.spi.types.domain.contract.negotiation.command.ContractNegotiationCommand) RemoteMessageDispatcherRegistry(org.eclipse.dataspaceconnector.spi.message.RemoteMessageDispatcherRegistry) CommandQueue(org.eclipse.dataspaceconnector.spi.command.CommandQueue) REQUESTED(org.eclipse.dataspaceconnector.spi.types.domain.contract.negotiation.ContractNegotiationStates.REQUESTED) Monitor(org.eclipse.dataspaceconnector.spi.monitor.Monitor) ContractNegotiationObservable(org.eclipse.dataspaceconnector.spi.contract.negotiation.observe.ContractNegotiationObservable) Mockito.mock(org.mockito.Mockito.mock) ContractOfferRequest(org.eclipse.dataspaceconnector.spi.types.domain.contract.negotiation.ContractOfferRequest) Test(org.junit.jupiter.api.Test)

Example 2 with Result

use of org.eclipse.dataspaceconnector.spi.result.Result in project DataSpaceConnector by eclipse-dataspaceconnector.

the class CrawlerJob method execute.

@Override
public void execute(JobExecutionContext context) {
    JobDataMap jobDataMap = context.getJobDetail().getJobDataMap();
    var cc = (CrawlerContext) jobDataMap.get(CrawlerContext.KEY);
    ionApiUrl = Objects.requireNonNull(cc.getIonHost(), "ION Node URL cannot be null!");
    var monitor = cc.getMonitor();
    monitor.info("CrawlerJob: browsing ION to obtain GaiaX DIDs");
    var start = Instant.now();
    var newDidFutures = getDidDocumentsFromBlockchainAsync(cc);
    List<DidDocument> newDids = newDidFutures.parallelStream().map(CompletableFuture::join).filter(Objects::nonNull).filter(Result::succeeded).map(Result::getContent).collect(Collectors.toList());
    monitor.info("CrawlerJob: Found " + newDids.size() + " new DIDs on ION, took " + (Duration.between(start, Instant.now()).toString().substring(2).replaceAll("(\\d[HMS])(?!$)", "$1 ").toLowerCase()));
    if (newDids.size() > 0) {
        cc.getPublisher().discoveryFinished(newDids.size());
    }
    cc.getDidStore().saveAll(newDids);
}
Also used : JobDataMap(org.quartz.JobDataMap) CompletableFuture(java.util.concurrent.CompletableFuture) DidDocument(org.eclipse.dataspaceconnector.iam.did.spi.document.DidDocument) Result(org.eclipse.dataspaceconnector.spi.result.Result)

Example 3 with Result

use of org.eclipse.dataspaceconnector.spi.result.Result in project DataSpaceConnector by eclipse-dataspaceconnector.

the class ProviderContractNegotiationManagerImplTest method testRequestedConfirmOffer.

@Test
void testRequestedConfirmOffer() {
    var token = ClaimToken.Builder.newInstance().build();
    var contractOffer = contractOffer();
    when(validationService.validate(token, contractOffer)).thenReturn(Result.success(contractOffer));
    ContractOfferRequest request = ContractOfferRequest.Builder.newInstance().connectorId("connectorId").connectorAddress("connectorAddress").protocol("protocol").contractOffer(contractOffer).correlationId("correlationId").build();
    var result = negotiationManager.requested(token, request);
    assertThat(result.succeeded()).isTrue();
    verify(store, atLeastOnce()).save(argThat(n -> n.getState() == ContractNegotiationStates.CONFIRMING.code() && n.getCounterPartyId().equals(request.getConnectorId()) && n.getCounterPartyAddress().equals(request.getConnectorAddress()) && n.getProtocol().equals(request.getProtocol()) && n.getCorrelationId().equals(request.getCorrelationId()) && n.getContractOffers().size() == 1 && n.getLastContractOffer().equals(contractOffer)));
    verify(validationService).validate(token, contractOffer);
}
Also used : BeforeEach(org.junit.jupiter.api.BeforeEach) ContractAgreement(org.eclipse.dataspaceconnector.spi.types.domain.contract.agreement.ContractAgreement) ContractNegotiationStore(org.eclipse.dataspaceconnector.spi.contract.negotiation.store.ContractNegotiationStore) ArgumentMatchers.argThat(org.mockito.ArgumentMatchers.argThat) ArgumentMatchers.eq(org.mockito.ArgumentMatchers.eq) CompletableFuture.completedFuture(java.util.concurrent.CompletableFuture.completedFuture) Assertions.assertThat(org.assertj.core.api.Assertions.assertThat) ContractValidationService(org.eclipse.dataspaceconnector.spi.contract.validation.ContractValidationService) Disabled(org.junit.jupiter.api.Disabled) Mockito.doAnswer(org.mockito.Mockito.doAnswer) Asset(org.eclipse.dataspaceconnector.spi.types.domain.asset.Asset) Mockito.only(org.mockito.Mockito.only) Collections.emptyList(java.util.Collections.emptyList) Mockito.atLeastOnce(org.mockito.Mockito.atLeastOnce) DECLINED(org.eclipse.dataspaceconnector.spi.types.domain.contract.negotiation.ContractNegotiationStates.DECLINED) EdcException(org.eclipse.dataspaceconnector.spi.EdcException) UUID(java.util.UUID) Instant(java.time.Instant) PolicyStore(org.eclipse.dataspaceconnector.spi.policy.store.PolicyStore) Test(org.junit.jupiter.api.Test) CountDownLatch(java.util.concurrent.CountDownLatch) CompletableFuture.failedFuture(java.util.concurrent.CompletableFuture.failedFuture) List(java.util.List) PROVIDER_OFFERED(org.eclipse.dataspaceconnector.spi.types.domain.contract.negotiation.ContractNegotiationStates.PROVIDER_OFFERED) ContractId(org.eclipse.dataspaceconnector.contract.common.ContractId) CommandQueue(org.eclipse.dataspaceconnector.spi.command.CommandQueue) NotNull(org.jetbrains.annotations.NotNull) Mockito.mock(org.mockito.Mockito.mock) ArgumentMatchers.any(org.mockito.ArgumentMatchers.any) Result(org.eclipse.dataspaceconnector.spi.result.Result) CommandRunner(org.eclipse.dataspaceconnector.spi.command.CommandRunner) ClaimToken(org.eclipse.dataspaceconnector.spi.iam.ClaimToken) ArrayList(java.util.ArrayList) PROVIDER_OFFERING(org.eclipse.dataspaceconnector.spi.types.domain.contract.negotiation.ContractNegotiationStates.PROVIDER_OFFERING) ContractOfferRequest(org.eclipse.dataspaceconnector.spi.types.domain.contract.negotiation.ContractOfferRequest) CONFIRMING(org.eclipse.dataspaceconnector.spi.types.domain.contract.negotiation.ContractNegotiationStates.CONFIRMING) ContractNegotiation(org.eclipse.dataspaceconnector.spi.types.domain.contract.negotiation.ContractNegotiation) ArgumentMatchers.anyInt(org.mockito.ArgumentMatchers.anyInt) ArgumentMatchers.isA(org.mockito.ArgumentMatchers.isA) ContractOffer(org.eclipse.dataspaceconnector.spi.types.domain.contract.offer.ContractOffer) Policy(org.eclipse.dataspaceconnector.policy.model.Policy) DECLINING(org.eclipse.dataspaceconnector.spi.types.domain.contract.negotiation.ContractNegotiationStates.DECLINING) CONFIRMED(org.eclipse.dataspaceconnector.spi.types.domain.contract.negotiation.ContractNegotiationStates.CONFIRMED) ContractAgreementRequest(org.eclipse.dataspaceconnector.spi.types.domain.contract.agreement.ContractAgreementRequest) Mockito.when(org.mockito.Mockito.when) Mockito.verify(org.mockito.Mockito.verify) ContractNegotiationStates(org.eclipse.dataspaceconnector.spi.types.domain.contract.negotiation.ContractNegotiationStates) ContractNegotiationCommand(org.eclipse.dataspaceconnector.spi.types.domain.contract.negotiation.command.ContractNegotiationCommand) RemoteMessageDispatcherRegistry(org.eclipse.dataspaceconnector.spi.message.RemoteMessageDispatcherRegistry) Monitor(org.eclipse.dataspaceconnector.spi.monitor.Monitor) SECONDS(java.util.concurrent.TimeUnit.SECONDS) ContractNegotiationObservable(org.eclipse.dataspaceconnector.spi.contract.negotiation.observe.ContractNegotiationObservable) ContractOfferRequest(org.eclipse.dataspaceconnector.spi.types.domain.contract.negotiation.ContractOfferRequest) Test(org.junit.jupiter.api.Test)

Example 4 with Result

use of org.eclipse.dataspaceconnector.spi.result.Result in project DataSpaceConnector by eclipse-dataspaceconnector.

the class ProviderContractNegotiationManagerImplTest method testRequestedCounterOffer.

@Test
@Disabled
void testRequestedCounterOffer() {
    var token = ClaimToken.Builder.newInstance().build();
    var contractOffer = contractOffer();
    var counterOffer = contractOffer();
    when(validationService.validate(token, contractOffer)).thenAnswer(i -> Result.success(i.getArgument(1)));
    ContractOfferRequest request = ContractOfferRequest.Builder.newInstance().connectorId("connectorId").connectorAddress("connectorAddress").protocol("protocol").contractOffer(contractOffer).correlationId("correlationId").build();
    var result = negotiationManager.requested(token, request);
    assertThat(result.succeeded()).isTrue();
    verify(store).save(argThat(n -> n.getState() == PROVIDER_OFFERING.code() && n.getCounterPartyId().equals(request.getConnectorId()) && n.getCounterPartyAddress().equals(request.getConnectorAddress()) && n.getProtocol().equals(request.getProtocol()) && n.getCorrelationId().equals(request.getCorrelationId()) && n.getContractOffers().size() == 2 && n.getContractOffers().get(0).equals(contractOffer) && n.getContractOffers().get(1).equals(counterOffer)));
    verify(validationService).validate(token, contractOffer);
}
Also used : BeforeEach(org.junit.jupiter.api.BeforeEach) ContractAgreement(org.eclipse.dataspaceconnector.spi.types.domain.contract.agreement.ContractAgreement) ContractNegotiationStore(org.eclipse.dataspaceconnector.spi.contract.negotiation.store.ContractNegotiationStore) ArgumentMatchers.argThat(org.mockito.ArgumentMatchers.argThat) ArgumentMatchers.eq(org.mockito.ArgumentMatchers.eq) CompletableFuture.completedFuture(java.util.concurrent.CompletableFuture.completedFuture) Assertions.assertThat(org.assertj.core.api.Assertions.assertThat) ContractValidationService(org.eclipse.dataspaceconnector.spi.contract.validation.ContractValidationService) Disabled(org.junit.jupiter.api.Disabled) Mockito.doAnswer(org.mockito.Mockito.doAnswer) Asset(org.eclipse.dataspaceconnector.spi.types.domain.asset.Asset) Mockito.only(org.mockito.Mockito.only) Collections.emptyList(java.util.Collections.emptyList) Mockito.atLeastOnce(org.mockito.Mockito.atLeastOnce) DECLINED(org.eclipse.dataspaceconnector.spi.types.domain.contract.negotiation.ContractNegotiationStates.DECLINED) EdcException(org.eclipse.dataspaceconnector.spi.EdcException) UUID(java.util.UUID) Instant(java.time.Instant) PolicyStore(org.eclipse.dataspaceconnector.spi.policy.store.PolicyStore) Test(org.junit.jupiter.api.Test) CountDownLatch(java.util.concurrent.CountDownLatch) CompletableFuture.failedFuture(java.util.concurrent.CompletableFuture.failedFuture) List(java.util.List) PROVIDER_OFFERED(org.eclipse.dataspaceconnector.spi.types.domain.contract.negotiation.ContractNegotiationStates.PROVIDER_OFFERED) ContractId(org.eclipse.dataspaceconnector.contract.common.ContractId) CommandQueue(org.eclipse.dataspaceconnector.spi.command.CommandQueue) NotNull(org.jetbrains.annotations.NotNull) Mockito.mock(org.mockito.Mockito.mock) ArgumentMatchers.any(org.mockito.ArgumentMatchers.any) Result(org.eclipse.dataspaceconnector.spi.result.Result) CommandRunner(org.eclipse.dataspaceconnector.spi.command.CommandRunner) ClaimToken(org.eclipse.dataspaceconnector.spi.iam.ClaimToken) ArrayList(java.util.ArrayList) PROVIDER_OFFERING(org.eclipse.dataspaceconnector.spi.types.domain.contract.negotiation.ContractNegotiationStates.PROVIDER_OFFERING) ContractOfferRequest(org.eclipse.dataspaceconnector.spi.types.domain.contract.negotiation.ContractOfferRequest) CONFIRMING(org.eclipse.dataspaceconnector.spi.types.domain.contract.negotiation.ContractNegotiationStates.CONFIRMING) ContractNegotiation(org.eclipse.dataspaceconnector.spi.types.domain.contract.negotiation.ContractNegotiation) ArgumentMatchers.anyInt(org.mockito.ArgumentMatchers.anyInt) ArgumentMatchers.isA(org.mockito.ArgumentMatchers.isA) ContractOffer(org.eclipse.dataspaceconnector.spi.types.domain.contract.offer.ContractOffer) Policy(org.eclipse.dataspaceconnector.policy.model.Policy) DECLINING(org.eclipse.dataspaceconnector.spi.types.domain.contract.negotiation.ContractNegotiationStates.DECLINING) CONFIRMED(org.eclipse.dataspaceconnector.spi.types.domain.contract.negotiation.ContractNegotiationStates.CONFIRMED) ContractAgreementRequest(org.eclipse.dataspaceconnector.spi.types.domain.contract.agreement.ContractAgreementRequest) Mockito.when(org.mockito.Mockito.when) Mockito.verify(org.mockito.Mockito.verify) ContractNegotiationStates(org.eclipse.dataspaceconnector.spi.types.domain.contract.negotiation.ContractNegotiationStates) ContractNegotiationCommand(org.eclipse.dataspaceconnector.spi.types.domain.contract.negotiation.command.ContractNegotiationCommand) RemoteMessageDispatcherRegistry(org.eclipse.dataspaceconnector.spi.message.RemoteMessageDispatcherRegistry) Monitor(org.eclipse.dataspaceconnector.spi.monitor.Monitor) SECONDS(java.util.concurrent.TimeUnit.SECONDS) ContractNegotiationObservable(org.eclipse.dataspaceconnector.spi.contract.negotiation.observe.ContractNegotiationObservable) ContractOfferRequest(org.eclipse.dataspaceconnector.spi.types.domain.contract.negotiation.ContractOfferRequest) Test(org.junit.jupiter.api.Test) Disabled(org.junit.jupiter.api.Disabled)

Example 5 with Result

use of org.eclipse.dataspaceconnector.spi.result.Result in project DataSpaceConnector by eclipse-dataspaceconnector.

the class TokenValidationServiceImpl method validate.

@Override
public Result<ClaimToken> validate(TokenRepresentation tokenRepresentation) {
    var token = tokenRepresentation.getToken();
    var additional = tokenRepresentation.getAdditional();
    JWTClaimsSet claimsSet;
    try {
        var signedJwt = SignedJWT.parse(token);
        var publicKeyId = signedJwt.getHeader().getKeyID();
        var verifierCreationResult = createVerifier(signedJwt.getHeader(), publicKeyId);
        if (verifierCreationResult.failed()) {
            return Result.failure(verifierCreationResult.getFailureMessages());
        }
        if (!signedJwt.verify(verifierCreationResult.getContent())) {
            return Result.failure("Token verification failed");
        }
        claimsSet = signedJwt.getJWTClaimsSet();
        var errors = rulesRegistry.getRules().stream().map(r -> r.checkRule(signedJwt, additional)).filter(Result::failed).map(Result::getFailureMessages).flatMap(Collection::stream).collect(Collectors.toList());
        if (!errors.isEmpty()) {
            return Result.failure(errors);
        }
        var tokenBuilder = ClaimToken.Builder.newInstance();
        claimsSet.getClaims().entrySet().stream().map(entry -> Map.entry(entry.getKey(), Objects.toString(entry.getValue()))).filter(entry -> entry.getValue() != null).forEach(entry -> tokenBuilder.claim(entry.getKey(), entry.getValue()));
        return Result.success(tokenBuilder.build());
    } catch (JOSEException e) {
        return Result.failure(e.getMessage());
    } catch (ParseException e) {
        return Result.failure("Failed to decode token");
    }
}
Also used : JWSVerifier(com.nimbusds.jose.JWSVerifier) Collection(java.util.Collection) JOSEException(com.nimbusds.jose.JOSEException) JWTClaimsSet(com.nimbusds.jwt.JWTClaimsSet) Result(org.eclipse.dataspaceconnector.spi.result.Result) TokenRepresentation(org.eclipse.dataspaceconnector.spi.iam.TokenRepresentation) JWSHeader(com.nimbusds.jose.JWSHeader) SignedJWT(com.nimbusds.jwt.SignedJWT) ClaimToken(org.eclipse.dataspaceconnector.spi.iam.ClaimToken) Collectors(java.util.stream.Collectors) Objects(java.util.Objects) Map(java.util.Map) ParseException(java.text.ParseException) DefaultJWSVerifierFactory(com.nimbusds.jose.crypto.factories.DefaultJWSVerifierFactory) PublicKeyResolver(org.eclipse.dataspaceconnector.spi.iam.PublicKeyResolver) JWTClaimsSet(com.nimbusds.jwt.JWTClaimsSet) ParseException(java.text.ParseException) JOSEException(com.nimbusds.jose.JOSEException) Result(org.eclipse.dataspaceconnector.spi.result.Result)

Aggregations

Result (org.eclipse.dataspaceconnector.spi.result.Result)10 ClaimToken (org.eclipse.dataspaceconnector.spi.iam.ClaimToken)7 List (java.util.List)6 Monitor (org.eclipse.dataspaceconnector.spi.monitor.Monitor)6 Instant (java.time.Instant)5 ArrayList (java.util.ArrayList)5 UUID (java.util.UUID)5 Assertions.assertThat (org.assertj.core.api.Assertions.assertThat)5 Policy (org.eclipse.dataspaceconnector.policy.model.Policy)5 EdcException (org.eclipse.dataspaceconnector.spi.EdcException)5 CommandQueue (org.eclipse.dataspaceconnector.spi.command.CommandQueue)5 CommandRunner (org.eclipse.dataspaceconnector.spi.command.CommandRunner)5 ContractNegotiationObservable (org.eclipse.dataspaceconnector.spi.contract.negotiation.observe.ContractNegotiationObservable)5 ContractNegotiationStore (org.eclipse.dataspaceconnector.spi.contract.negotiation.store.ContractNegotiationStore)5 ContractValidationService (org.eclipse.dataspaceconnector.spi.contract.validation.ContractValidationService)5 RemoteMessageDispatcherRegistry (org.eclipse.dataspaceconnector.spi.message.RemoteMessageDispatcherRegistry)5 ContractAgreement (org.eclipse.dataspaceconnector.spi.types.domain.contract.agreement.ContractAgreement)5 ContractNegotiation (org.eclipse.dataspaceconnector.spi.types.domain.contract.negotiation.ContractNegotiation)5 CONFIRMED (org.eclipse.dataspaceconnector.spi.types.domain.contract.negotiation.ContractNegotiationStates.CONFIRMED)5 DECLINED (org.eclipse.dataspaceconnector.spi.types.domain.contract.negotiation.ContractNegotiationStates.DECLINED)5