Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions gradle/libs.versions.toml
Original file line number Diff line number Diff line change
Expand Up @@ -126,6 +126,7 @@ edc-bom-dataplane = { module = "org.eclipse.edc:dataplane-base-bom", version.ref

## EDC Fixtures
edc-fixtures-sql = { module = "org.eclipse.edc:sql-test-fixtures", version.ref = "edc" }
edc-fixtures-mgmtapi = { module = "org.eclipse.edc:management-api-test-fixtures", version.ref = "edc" }

### IH for testing
edc-ih-test-fixtures = { module = "org.eclipse.edc:identityhub-test-fixtures", version.ref = "edc" }
Expand Down
1 change: 1 addition & 0 deletions system-tests/runtime-tests/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ dependencies {
exclude("com.networknt", "json-schema-validator")
}
testImplementation(testFixtures(libs.edc.lib.oauth2.authn))
testImplementation(testFixtures(libs.edc.fixtures.mgmtapi))
testImplementation(libs.nimbus.jwt)
testImplementation(libs.bouncyCastle.bcpkixJdk18on)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,11 +16,21 @@

import org.eclipse.edc.api.authentication.OauthServerEndToEndExtension;
import org.eclipse.edc.connector.controlplane.contract.spi.types.negotiation.ContractNegotiationStates;
import org.eclipse.edc.connector.controlplane.test.system.utils.Participants;
import org.eclipse.edc.connector.controlplane.test.system.utils.client.ManagementApiClientV5;
import org.eclipse.edc.connector.controlplane.test.system.utils.client.api.model.AssetDto;
import org.eclipse.edc.connector.controlplane.test.system.utils.client.api.model.AtomicConstraintDto;
import org.eclipse.edc.connector.controlplane.test.system.utils.client.api.model.CelExpressionDto;
import org.eclipse.edc.connector.controlplane.test.system.utils.client.api.model.DataAddressDto;
import org.eclipse.edc.connector.controlplane.test.system.utils.client.api.model.PermissionDto;
import org.eclipse.edc.connector.controlplane.test.system.utils.client.api.model.PolicyDefinitionDto;
import org.eclipse.edc.connector.controlplane.test.system.utils.client.api.model.PolicyDto;
import org.eclipse.edc.identityhub.tests.fixtures.DefaultRuntimes;
import org.eclipse.edc.identityhub.tests.fixtures.credentialservice.IdentityHub;
import org.eclipse.edc.identityhub.tests.fixtures.credentialservice.IdentityHubApiClient;
import org.eclipse.edc.identityhub.tests.fixtures.issuerservice.IssuerService;
import org.eclipse.edc.junit.annotations.PostgresqlIntegrationTest;
import org.eclipse.edc.junit.extensions.ComponentRuntimeContext;
import org.eclipse.edc.junit.extensions.ComponentRuntimeExtension;
import org.eclipse.edc.junit.extensions.RuntimeExtension;
import org.eclipse.edc.junit.utils.Endpoints;
Expand All @@ -29,16 +39,7 @@
import org.eclipse.edc.spi.system.configuration.ConfigFactory;
import org.eclipse.edc.sql.testfixtures.PostgresqlEndToEndExtension;
import org.eclipse.edc.virtual.Runtimes;
import org.eclipse.edc.virtual.transfer.fixtures.Participants;
import org.eclipse.edc.virtual.transfer.fixtures.VirtualConnector;
import org.eclipse.edc.virtual.transfer.fixtures.VirtualConnectorClient;
import org.eclipse.edc.virtual.transfer.fixtures.api.model.AssetDto;
import org.eclipse.edc.virtual.transfer.fixtures.api.model.AtomicConstraintDto;
import org.eclipse.edc.virtual.transfer.fixtures.api.model.CelExpressionDto;
import org.eclipse.edc.virtual.transfer.fixtures.api.model.DataAddressDto;
import org.eclipse.edc.virtual.transfer.fixtures.api.model.PermissionDto;
import org.eclipse.edc.virtual.transfer.fixtures.api.model.PolicyDefinitionDto;
import org.eclipse.edc.virtual.transfer.fixtures.api.model.PolicyDto;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Order;
Expand All @@ -63,14 +64,16 @@ class DcpTransferPullEndToEndTest {
public static final String PROVIDER_CONTEXT = "provider";
public static final String CONSUMER_CONTEXT = "consumer";

private static Participants participants(Endpoints endpoints) {
private static Participants participants(ComponentRuntimeContext ctx, Endpoints endpoints) {
var protocolEndpoint = ctx.getEndpoint("protocol");
var signalingEndpoint = ctx.getEndpoint("signaling");
var providerDid = Runtimes.IdentityHub.didFor(endpoints, PROVIDER_CONTEXT);
var providerCfg = Runtimes.IdentityHub.dcpConfig(endpoints, PROVIDER_CONTEXT);
var consumerDid = Runtimes.IdentityHub.didFor(endpoints, CONSUMER_CONTEXT);
var consumerCfg = Runtimes.IdentityHub.dcpConfig(endpoints, CONSUMER_CONTEXT);
return new Participants(
new Participants.Participant(PROVIDER_CONTEXT, providerDid, providerCfg.getEntries()),
new Participants.Participant(CONSUMER_CONTEXT, consumerDid, consumerCfg.getEntries())
new Participants.Participant(PROVIDER_CONTEXT, providerDid, protocolEndpoint, signalingEndpoint, providerCfg.getEntries()),
new Participants.Participant(CONSUMER_CONTEXT, consumerDid, protocolEndpoint, signalingEndpoint, consumerCfg.getEntries())
);
}

Expand Down Expand Up @@ -112,7 +115,7 @@ static void setup(IssuerService issuer,

@Test
void httpPull_dataTransfer_withMembershipExpression(VirtualConnector env,
VirtualConnectorClient connectorClient,
ManagementApiClientV5 connectorClient,
Participants participants) {

var leftOperand = "https://w3id.org/example/credentials/MembershipCredential";
Expand Down Expand Up @@ -142,7 +145,7 @@ void httpPull_dataTransfer_withMembershipExpression(VirtualConnector env,
}

@Test
void negotiation_fails_withMissingCredential(VirtualConnector env, VirtualConnectorClient connectorClient,
void negotiation_fails_withMissingCredential(VirtualConnector env, ManagementApiClientV5 connectorClient,
Participants participants) {

var leftOperand = "https://w3id.org/example/credentials/DataAccessCredential";
Expand Down Expand Up @@ -170,7 +173,7 @@ void negotiation_fails_withMissingCredential(VirtualConnector env, VirtualConnec

}

private String setup(VirtualConnectorClient connectorClient, Participants.Participant provider, PolicyDto policy) {
private String setup(ManagementApiClientV5 connectorClient, Participants.Participant provider, PolicyDto policy) {
var asset = new AssetDto(new DataAddressDto("HttpData"));
var policyDef = new PolicyDefinitionDto(policy);

Expand Down Expand Up @@ -244,8 +247,8 @@ class Postgres extends DcpTransferPullEndToEndTestBase {
.configurationProvider(AUTH_SERVER_EXTENSION::getConfig)
.configurationProvider(() -> ConfigFactory.fromMap(Map.of("edc.iam.did.web.use.https", "false")))
.paramProvider(VirtualConnector.class, VirtualConnector::forContext)
.paramProvider(VirtualConnectorClient.class, (ctx) -> VirtualConnectorClient.forContext(ctx, AUTH_SERVER_EXTENSION.getAuthServer()))
.paramProvider(Participants.class, context -> participants(IDENTITY_HUB_ENDPOINTS))
.paramProvider(ManagementApiClientV5.class, (ctx) -> ManagementApiClientV5.forContext(ctx, AUTH_SERVER_EXTENSION.getAuthServer()))
.paramProvider(Participants.class, context -> participants(context, IDENTITY_HUB_ENDPOINTS))
.build();

private static Config runtimeConfiguration() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,16 +15,17 @@
package org.eclipse.edc.virtual.transfer;

import org.eclipse.edc.api.authentication.OauthServerEndToEndExtension;
import org.eclipse.edc.connector.controlplane.test.system.utils.Participants;
import org.eclipse.edc.connector.controlplane.test.system.utils.client.ManagementApiClientV5;
import org.eclipse.edc.junit.annotations.EndToEndTest;
import org.eclipse.edc.junit.annotations.PostgresqlIntegrationTest;
import org.eclipse.edc.junit.extensions.ComponentRuntimeContext;
import org.eclipse.edc.junit.extensions.ComponentRuntimeExtension;
import org.eclipse.edc.junit.extensions.RuntimeExtension;
import org.eclipse.edc.nats.testfixtures.NatsEndToEndExtension;
import org.eclipse.edc.sql.testfixtures.PostgresqlEndToEndExtension;
import org.eclipse.edc.virtual.Runtimes;
import org.eclipse.edc.virtual.transfer.fixtures.Participants;
import org.eclipse.edc.virtual.transfer.fixtures.VirtualConnector;
import org.eclipse.edc.virtual.transfer.fixtures.VirtualConnectorClient;
import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Order;
import org.junit.jupiter.api.extension.BeforeAllCallback;
Expand All @@ -40,10 +41,12 @@ class TransferPullEndToEndTest {
public static final String PROVIDER_ID = "provider-id";
public static final String CONSUMER_ID = "consumer-id";

private static Participants participants() {
private static Participants participants(ComponentRuntimeContext ctx) {
var protocolEndpoint = ctx.getEndpoint("protocol");
var signalingEndpoint = ctx.getEndpoint("signaling");
return new Participants(
new Participants.Participant(PROVIDER_CONTEXT, PROVIDER_ID),
new Participants.Participant(CONSUMER_CONTEXT, CONSUMER_ID)
new Participants.Participant(PROVIDER_CONTEXT, PROVIDER_ID, protocolEndpoint, signalingEndpoint),
new Participants.Participant(CONSUMER_CONTEXT, CONSUMER_ID, protocolEndpoint, signalingEndpoint)
);
}

Expand All @@ -63,8 +66,8 @@ class InMemory extends TransferPullEndToEndTestBase {
.configurationProvider(Runtimes.ControlPlane::config)
.configurationProvider(AUTH_SERVER_EXTENSION::getConfig)
.paramProvider(VirtualConnector.class, VirtualConnector::forContext)
.paramProvider(VirtualConnectorClient.class, (ctx) -> VirtualConnectorClient.forContext(ctx, AUTH_SERVER_EXTENSION.getAuthServer()))
.paramProvider(Participants.class, context -> participants())
.paramProvider(ManagementApiClientV5.class, (ctx) -> ManagementApiClientV5.forContext(ctx, AUTH_SERVER_EXTENSION.getAuthServer()))
.paramProvider(Participants.class, TransferPullEndToEndTest::participants)
.build();

}
Expand Down Expand Up @@ -99,45 +102,8 @@ class Postgres extends TransferPullEndToEndTestBase {
.configurationProvider(NATS_EXTENSION::configFor)
.configurationProvider(AUTH_SERVER_EXTENSION::getConfig)
.paramProvider(VirtualConnector.class, VirtualConnector::forContext)
.paramProvider(VirtualConnectorClient.class, (ctx) -> VirtualConnectorClient.forContext(ctx, AUTH_SERVER_EXTENSION.getAuthServer()))
.paramProvider(Participants.class, context -> participants())
.build();

}

@Nested
@PostgresqlIntegrationTest
class PostgresNatsTasks extends TransferPullEndToEndTestBase {

@Order(0)
@RegisterExtension
static final OauthServerEndToEndExtension AUTH_SERVER_EXTENSION = OauthServerEndToEndExtension.Builder.newInstance().build();

@Order(0)
@RegisterExtension
static final NatsEndToEndExtension NATS_EXTENSION = new NatsEndToEndExtension();
@Order(0)
@RegisterExtension
static final PostgresqlEndToEndExtension POSTGRESQL_EXTENSION = new PostgresqlEndToEndExtension(createPgContainer());
@Order(1)
@RegisterExtension
static final BeforeAllCallback SETUP = context -> {
POSTGRESQL_EXTENSION.createDatabase(Runtimes.ControlPlane.NAME.toLowerCase());
};

@Order(2)
@RegisterExtension
static final RuntimeExtension CONTROL_PLANE = ComponentRuntimeExtension.Builder.newInstance()
.name(Runtimes.ControlPlane.NAME)
.modules(Runtimes.ControlPlane.PG_NATS_TASKS_MODULES)
.endpoints(Runtimes.ControlPlane.ENDPOINTS.build())
.configurationProvider(Runtimes.ControlPlane::config)
.configurationProvider(() -> POSTGRESQL_EXTENSION.configFor(Runtimes.ControlPlane.NAME.toLowerCase()))
.configurationProvider(NATS_EXTENSION::configFor)
.configurationProvider(AUTH_SERVER_EXTENSION::getConfig)
.paramProvider(VirtualConnector.class, VirtualConnector::forContext)
.paramProvider(VirtualConnectorClient.class, (ctx) -> VirtualConnectorClient.forContext(ctx, AUTH_SERVER_EXTENSION.getAuthServer()))
.paramProvider(Participants.class, context -> participants())
.paramProvider(ManagementApiClientV5.class, (ctx) -> ManagementApiClientV5.forContext(ctx, AUTH_SERVER_EXTENSION.getAuthServer()))
.paramProvider(Participants.class, TransferPullEndToEndTest::participants)
.build();

}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,20 +19,20 @@
import com.nimbusds.jose.jwk.Curve;
import com.nimbusds.jose.jwk.gen.ECKeyGenerator;
import org.eclipse.edc.connector.controlplane.services.spi.transferprocess.TransferProcessService;
import org.eclipse.edc.connector.controlplane.test.system.utils.Participants;
import org.eclipse.edc.connector.controlplane.test.system.utils.client.ManagementApiClientV5;
import org.eclipse.edc.connector.controlplane.test.system.utils.client.api.model.AssetDto;
import org.eclipse.edc.connector.controlplane.test.system.utils.client.api.model.DataAddressDto;
import org.eclipse.edc.connector.controlplane.test.system.utils.client.api.model.PermissionDto;
import org.eclipse.edc.connector.controlplane.test.system.utils.client.api.model.PolicyDefinitionDto;
import org.eclipse.edc.connector.controlplane.test.system.utils.client.api.model.PolicyDto;
import org.eclipse.edc.connector.dataplane.spi.Endpoint;
import org.eclipse.edc.connector.dataplane.spi.iam.PublicEndpointGeneratorService;
import org.eclipse.edc.junit.annotations.Runtime;
import org.eclipse.edc.spi.EdcException;
import org.eclipse.edc.spi.security.Vault;
import org.eclipse.edc.virtual.Runtimes.ControlPlane;
import org.eclipse.edc.virtual.transfer.fixtures.Participants;
import org.eclipse.edc.virtual.transfer.fixtures.VirtualConnector;
import org.eclipse.edc.virtual.transfer.fixtures.VirtualConnectorClient;
import org.eclipse.edc.virtual.transfer.fixtures.api.model.AssetDto;
import org.eclipse.edc.virtual.transfer.fixtures.api.model.DataAddressDto;
import org.eclipse.edc.virtual.transfer.fixtures.api.model.PermissionDto;
import org.eclipse.edc.virtual.transfer.fixtures.api.model.PolicyDefinitionDto;
import org.eclipse.edc.virtual.transfer.fixtures.api.model.PolicyDto;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.RegisterExtension;
Expand All @@ -56,7 +56,7 @@ abstract class TransferPullEndToEndTestBase {

@BeforeAll
static void beforeAll(PublicEndpointGeneratorService generatorService,
VirtualConnectorClient connectorClient,
ManagementApiClientV5 connectorClient,
Participants participants,
@Runtime(ControlPlane.NAME) Vault vault) {
generatorService.addGeneratorFunction("HttpData", address -> Endpoint.url("http://example.com"));
Expand All @@ -78,7 +78,7 @@ static void beforeAll(PublicEndpointGeneratorService generatorService,
}

@Test
void transfer(VirtualConnector env, VirtualConnectorClient connectorClient, Participants participants) {
void transfer(VirtualConnector env, ManagementApiClientV5 connectorClient, Participants participants) {
var providerAddress = env.getProtocolEndpoint().get() + "/" + participants.provider().contextId() + "/2025-1";

var assetId = setup(connectorClient, participants.provider());
Expand All @@ -92,7 +92,7 @@ void transfer(VirtualConnector env, VirtualConnectorClient connectorClient, Part
}

@Test
void suspendAndResumeByProvider(VirtualConnector env, VirtualConnectorClient connectorClient, Participants participants) {
void suspendAndResumeByProvider(VirtualConnector env, ManagementApiClientV5 connectorClient, Participants participants) {
var providerAddress = env.getProtocolEndpoint().get() + "/" + participants.provider().contextId() + "/2025-1";

var assetId = setup(connectorClient, participants.provider());
Expand All @@ -116,7 +116,7 @@ void suspendAndResumeByProvider(VirtualConnector env, VirtualConnectorClient con
}

@Test
void suspendAndResumeByConsumer(VirtualConnector env, VirtualConnectorClient connectorClient, Participants participants) {
void suspendAndResumeByConsumer(VirtualConnector env, ManagementApiClientV5 connectorClient, Participants participants) {
var providerAddress = env.getProtocolEndpoint().get() + "/" + participants.provider().contextId() + "/2025-1";

var assetId = setup(connectorClient, participants.provider());
Expand All @@ -139,7 +139,7 @@ void suspendAndResumeByConsumer(VirtualConnector env, VirtualConnectorClient con
}

@Test
void terminateByConsumer(VirtualConnector env, VirtualConnectorClient connectorClient, Participants participants) {
void terminateByConsumer(VirtualConnector env, ManagementApiClientV5 connectorClient, Participants participants) {
var providerAddress = env.getProtocolEndpoint().get() + "/" + participants.provider().contextId() + "/2025-1";

var assetId = setup(connectorClient, participants.provider());
Expand All @@ -158,7 +158,7 @@ void terminateByConsumer(VirtualConnector env, VirtualConnectorClient connectorC
}

@Test
void terminateByProvider(VirtualConnector env, VirtualConnectorClient connectorClient, Participants participants) {
void terminateByProvider(VirtualConnector env, ManagementApiClientV5 connectorClient, Participants participants) {
var providerAddress = env.getProtocolEndpoint().get() + "/" + participants.provider().contextId() + "/2025-1";

var assetId = setup(connectorClient, participants.provider());
Expand All @@ -177,7 +177,7 @@ void terminateByProvider(VirtualConnector env, VirtualConnectorClient connectorC
}

@Test
void completeByProvider(VirtualConnector env, TransferProcessService service, VirtualConnectorClient connectorClient, Participants participants) {
void completeByProvider(VirtualConnector env, TransferProcessService service, ManagementApiClientV5 connectorClient, Participants participants) {
var providerAddress = env.getProtocolEndpoint().get() + "/" + participants.provider().contextId() + "/2025-1";

var assetId = setup(connectorClient, participants.provider());
Expand All @@ -198,7 +198,7 @@ void completeByProvider(VirtualConnector env, TransferProcessService service, Vi
}

@Test
void completeByConsumer(VirtualConnector env, TransferProcessService service, VirtualConnectorClient connectorClient, Participants participants) {
void completeByConsumer(VirtualConnector env, TransferProcessService service, ManagementApiClientV5 connectorClient, Participants participants) {
var providerAddress = env.getProtocolEndpoint().get() + "/" + participants.provider().contextId() + "/2025-1";

var assetId = setup(connectorClient, participants.provider());
Expand All @@ -218,7 +218,7 @@ void completeByConsumer(VirtualConnector env, TransferProcessService service, Vi

}

private String setup(VirtualConnectorClient connectorClient, Participants.Participant provider) {
private String setup(ManagementApiClientV5 connectorClient, Participants.Participant provider) {
var asset = new AssetDto(new DataAddressDto("HttpData"));

var permissions = List.of(new PermissionDto());
Expand Down
Loading
Loading