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)));
}
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);
}
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);
}
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);
}
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");
}
}
Aggregations