From 830413670b21266c6c8bd62c56f6e2dc386f3d55 Mon Sep 17 00:00:00 2001 From: SaadBendou Date: Wed, 26 Jul 2023 17:26:39 +0200 Subject: [PATCH] Added Testing --- .../ContractDefinitionPageApiServiceTest.java | 67 +++++++++++++++++++ .../client/ContractDefinitionTestUtils.java | 58 ++++++++++++++++ .../edc/ext/wrapper/WrapperExtension.java | 2 +- .../WrapperExtensionContextBuilder.java | 11 +-- .../edc/ext/wrapper/api/ui/UiResource.java | 6 +- .../ContractDefinitionApiService.java | 23 +------ 6 files changed, 136 insertions(+), 31 deletions(-) create mode 100644 extensions/wrapper/client/src/test/java/de/sovity/edc/client/ContractDefinitionPageApiServiceTest.java create mode 100644 extensions/wrapper/client/src/test/java/de/sovity/edc/client/ContractDefinitionTestUtils.java diff --git a/extensions/wrapper/client/src/test/java/de/sovity/edc/client/ContractDefinitionPageApiServiceTest.java b/extensions/wrapper/client/src/test/java/de/sovity/edc/client/ContractDefinitionPageApiServiceTest.java new file mode 100644 index 000000000..108b546b1 --- /dev/null +++ b/extensions/wrapper/client/src/test/java/de/sovity/edc/client/ContractDefinitionPageApiServiceTest.java @@ -0,0 +1,67 @@ +/* + * Copyright (c) 2023 sovity GmbH + * + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0 + * + * SPDX-License-Identifier: Apache-2.0 + * + * Contributors: + * sovity GmbH - initial API and implementation + * + */ + +package de.sovity.edc.client; + +import org.eclipse.edc.connector.spi.contractdefinition.ContractDefinitionService; +import org.eclipse.edc.junit.annotations.ApiTest; +import org.eclipse.edc.junit.extensions.EdcExtension; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; + +import static de.sovity.edc.client.ContractDefinitionTestUtils.createContractDefinition; + +import java.text.ParseException; +import java.util.Map; + +import static org.assertj.core.api.Assertions.assertThat; + +@ApiTest +@ExtendWith(EdcExtension.class) +class ContractDefinitionPageApiServiceTest { + + @BeforeEach + void setUp(EdcExtension extension) { + extension.setConfiguration(TestUtils.createConfiguration(Map.of())); + } + + @Test + void startContractDefinition( + ContractDefinitionService contractDefinitionService + ) throws ParseException { + var client = TestUtils.edcClient(); + + // arrange + createContractDefinition(contractDefinitionService); + + + // act + var result = client.uiApi().contractDefinitionPageEndpoint(); + + // Get the contract definition + var contractDefinitions = result.getContractDefinitions(); + + // assert + var contractDefinition = contractDefinitions.get(0); + assertThat(contractDefinition.getContractDefinitionId()).isEqualTo(ContractDefinitionTestUtils.CONTRACT_DEFINITION_ID); + assertThat(contractDefinition.getContractPolicyId()).isEqualTo(ContractDefinitionTestUtils.CONTRACT_POLICY_ID); + assertThat(contractDefinition.getAccessPolicyId()).isEqualTo(ContractDefinitionTestUtils.ACCESS_POLICY_ID); + } + + + + + +} diff --git a/extensions/wrapper/client/src/test/java/de/sovity/edc/client/ContractDefinitionTestUtils.java b/extensions/wrapper/client/src/test/java/de/sovity/edc/client/ContractDefinitionTestUtils.java new file mode 100644 index 000000000..8c2f23e89 --- /dev/null +++ b/extensions/wrapper/client/src/test/java/de/sovity/edc/client/ContractDefinitionTestUtils.java @@ -0,0 +1,58 @@ +/* + * Copyright (c) 2022 sovity GmbH + * + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0 + * + * SPDX-License-Identifier: Apache-2.0 + * + * Contributors: + * sovity GmbH - initial API and implementation + * + */ + +package de.sovity.edc.client; + +import org.eclipse.edc.connector.contract.spi.types.offer.ContractDefinition; +import org.eclipse.edc.connector.spi.contractdefinition.ContractDefinitionService; +import org.eclipse.edc.spi.asset.AssetSelectorExpression; +import org.eclipse.edc.spi.query.Criterion; +import org.jetbrains.annotations.NotNull; +import java.text.ParseException; +import java.util.Arrays; + +public class ContractDefinitionTestUtils { + + public static final String CONTRACT_DEFINITION_ID = "contract-definition:eb934d1f-6582-4bab-85e6-af19a76f7e2b"; + + public static final String CONTRACT_POLICY_ID = "contract-policy:f52a5d30-6356-4a55-a75a-3c45d7a88c3e"; + + public static final String ACCESS_POLICY_ID = "access-policy:eb934d1f-6582-4bab-85e6-af19a76f7e2b"; + + @NotNull + public static void createContractDefinition(ContractDefinitionService contractDefinitionService) throws ParseException { + + // Create an AssetSelectorExpression + AssetSelectorExpression selectorExpression = AssetSelectorExpression.Builder.newInstance() + .criteria(Arrays.asList( + new Criterion("criteria1", "=", "value1"), + new Criterion("criteria2", "=", "value2") + )) + .build(); + + var definition = ContractDefinition.Builder.newInstance() + .id(CONTRACT_DEFINITION_ID) + .contractPolicyId(CONTRACT_POLICY_ID) + .accessPolicyId(ACCESS_POLICY_ID) + .validity(10000L) + .selectorExpression(selectorExpression) + .build(); + + contractDefinitionService.create(definition); + + + } + + +} diff --git a/extensions/wrapper/wrapper/src/main/java/de/sovity/edc/ext/wrapper/WrapperExtension.java b/extensions/wrapper/wrapper/src/main/java/de/sovity/edc/ext/wrapper/WrapperExtension.java index f4cb78a58..de636cc69 100644 --- a/extensions/wrapper/wrapper/src/main/java/de/sovity/edc/ext/wrapper/WrapperExtension.java +++ b/extensions/wrapper/wrapper/src/main/java/de/sovity/edc/ext/wrapper/WrapperExtension.java @@ -89,7 +89,7 @@ public void initialize(ServiceExtensionContext context) { policyEngine, transferProcessService, transferProcessStore, - (org.eclipse.edc.connector.contract.spi.offer.ContractDefinitionService) contractDefinitionService + contractDefinitionService ); wrapperExtensionContext.jaxRsResources().forEach(resource -> diff --git a/extensions/wrapper/wrapper/src/main/java/de/sovity/edc/ext/wrapper/WrapperExtensionContextBuilder.java b/extensions/wrapper/wrapper/src/main/java/de/sovity/edc/ext/wrapper/WrapperExtensionContextBuilder.java index 4d5f333d6..b31d0b7e8 100644 --- a/extensions/wrapper/wrapper/src/main/java/de/sovity/edc/ext/wrapper/WrapperExtensionContextBuilder.java +++ b/extensions/wrapper/wrapper/src/main/java/de/sovity/edc/ext/wrapper/WrapperExtensionContextBuilder.java @@ -41,6 +41,7 @@ import org.eclipse.edc.connector.policy.spi.store.PolicyDefinitionStore; import org.eclipse.edc.connector.spi.asset.AssetService; import org.eclipse.edc.connector.spi.contractagreement.ContractAgreementService; +import org.eclipse.edc.connector.spi.contractdefinition.ContractDefinitionService; import org.eclipse.edc.connector.spi.contractnegotiation.ContractNegotiationService; import org.eclipse.edc.connector.spi.transferprocess.TransferProcessService; import org.eclipse.edc.connector.transfer.spi.store.TransferProcessStore; @@ -74,8 +75,8 @@ public static WrapperExtensionContext buildContext( PolicyDefinitionStore policyDefinitionStore, PolicyEngine policyEngine, TransferProcessService transferProcessService, - TransferProcessStore transferProcessStore - ) { + TransferProcessStore transferProcessStore, + ContractDefinitionService contractDefinitionService) { // UI API var transferProcessStateService = new TransferProcessStateService(); var contractAgreementPageCardBuilder = new ContractAgreementPageCardBuilder( @@ -92,8 +93,7 @@ public static WrapperExtensionContext buildContext( var transferHistoryPageApiService = new TransferHistoryPageApiService(assetService, contractAgreementService, contractNegotiationStore, transferProcessService, transferProcessStateService); var transferHistoryPageAssetFetcherService = new TransferHistoryPageAssetFetcherService(assetService, transferProcessService); - var transferHistoryPageApiService = new TransferHistoryPageApiService(); - var contractDefinitionApiService = new ContractDefinitionApiService(); + var contractDefinitionApiService = new ContractDefinitionApiService(contractDefinitionService); var transformerRegistryUtils = new TransformerRegistryUtils(dtoTransformerRegistry); var contractNegotiationUtils = new ContractNegotiationUtils(contractNegotiationService); var contractAgreementUtils = new ContractAgreementUtils(contractAgreementService); @@ -111,9 +111,10 @@ public static WrapperExtensionContext buildContext( var uiResource = new UiResource( contractAgreementApiService, contractAgreementTransferApiService, + contractDefinitionApiService, transferHistoryPageApiService, transferHistoryPageAssetFetcherService - contractDefinitionApiService + ); // Use Case API diff --git a/extensions/wrapper/wrapper/src/main/java/de/sovity/edc/ext/wrapper/api/ui/UiResource.java b/extensions/wrapper/wrapper/src/main/java/de/sovity/edc/ext/wrapper/api/ui/UiResource.java index 67ba49881..99365ab4d 100644 --- a/extensions/wrapper/wrapper/src/main/java/de/sovity/edc/ext/wrapper/api/ui/UiResource.java +++ b/extensions/wrapper/wrapper/src/main/java/de/sovity/edc/ext/wrapper/api/ui/UiResource.java @@ -26,11 +26,7 @@ import de.sovity.edc.ext.wrapper.api.ui.pages.transferhistory.TransferHistoryPageAssetFetcherService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; -import jakarta.ws.rs.Consumes; -import jakarta.ws.rs.GET; -import jakarta.ws.rs.POST; -import jakarta.ws.rs.Path; -import jakarta.ws.rs.Produces; +import jakarta.ws.rs.*; import jakarta.ws.rs.core.MediaType; import lombok.RequiredArgsConstructor; import org.eclipse.edc.api.model.IdResponseDto; diff --git a/extensions/wrapper/wrapper/src/main/java/de/sovity/edc/ext/wrapper/api/ui/pages/contracts/ContractDefinitionApiService.java b/extensions/wrapper/wrapper/src/main/java/de/sovity/edc/ext/wrapper/api/ui/pages/contracts/ContractDefinitionApiService.java index 7e641c168..e160b7771 100644 --- a/extensions/wrapper/wrapper/src/main/java/de/sovity/edc/ext/wrapper/api/ui/pages/contracts/ContractDefinitionApiService.java +++ b/extensions/wrapper/wrapper/src/main/java/de/sovity/edc/ext/wrapper/api/ui/pages/contracts/ContractDefinitionApiService.java @@ -15,27 +15,11 @@ package de.sovity.edc.ext.wrapper.api.ui.pages.contracts; import de.sovity.edc.ext.wrapper.api.ui.model.ContractDefinitionEntry; -import de.sovity.edc.ext.wrapper.api.ui.pages.contracts.services.ContractAgreementData; import lombok.RequiredArgsConstructor; -import org.eclipse.edc.connector.contract.spi.negotiation.store.ContractNegotiationStore; -import org.eclipse.edc.connector.contract.spi.types.agreement.ContractAgreement; -import org.eclipse.edc.connector.contract.spi.types.negotiation.ContractNegotiation; import org.eclipse.edc.connector.contract.spi.types.offer.ContractDefinition; -import org.eclipse.edc.connector.spi.asset.AssetService; -import org.eclipse.edc.connector.spi.contractagreement.ContractAgreementService; import org.eclipse.edc.connector.spi.contractdefinition.ContractDefinitionService; import org.eclipse.edc.spi.query.QuerySpec; -import org.eclipse.edc.spi.types.domain.asset.Asset; -import org.jetbrains.annotations.NotNull; - import java.util.List; -import java.util.Map; -import java.util.stream.Collectors; -import java.util.stream.Stream; - -import static java.util.stream.Collectors.groupingBy; -import static java.util.stream.Collectors.toList; - @RequiredArgsConstructor public class ContractDefinitionApiService { @@ -43,8 +27,7 @@ public class ContractDefinitionApiService { private final ContractDefinitionService contractDefinitionService; public List getContractDefinitions() { - // Obtain all contract definitions - var definitions = getAllContractDefinitons(); + var definitions = getAllContractDefinitions(); return definitions.stream() .map(definition -> { var entry = new ContractDefinitionEntry(); @@ -54,9 +37,9 @@ public List getContractDefinitions() { entry.setCriteria(definition.getSelectorExpression().getCriteria()); // This depends on how the criteria are stored in your system return entry; }) - .collect(Collectors.toList()); + .toList(); } - private List getAllContractDefinitons() { + private List getAllContractDefinitions() { return contractDefinitionService.query(QuerySpec.max()).getContent().toList(); }