Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

chore: remove in-mem vault #498

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 edc-controlplane/edc-runtime-memory/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ dependencies {
}
runtimeOnly(project(":edc-dataplane:edc-dataplane-base"))
runtimeOnly(libs.edc.core.controlplane)
testImplementation(libs.edc.junit)
}

tasks.withType<com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar> {
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -13,27 +13,27 @@
*/
package org.eclipse.tractusx.edc.vault.memory;

import org.eclipse.edc.runtime.metamodel.annotation.BaseExtension;
import org.eclipse.edc.runtime.metamodel.annotation.Extension;
import org.eclipse.edc.runtime.metamodel.annotation.Inject;
import org.eclipse.edc.runtime.metamodel.annotation.Provider;
import org.eclipse.edc.runtime.metamodel.annotation.Provides;
import org.eclipse.edc.runtime.metamodel.annotation.Setting;
import org.eclipse.edc.spi.security.CertificateResolver;
import org.eclipse.edc.spi.security.PrivateKeyResolver;
import org.eclipse.edc.spi.security.Vault;
import org.eclipse.edc.spi.security.VaultCertificateResolver;
import org.eclipse.edc.spi.security.VaultPrivateKeyResolver;
import org.eclipse.edc.spi.system.ServiceExtension;
import org.eclipse.edc.spi.system.ServiceExtensionContext;

import java.util.stream.Stream;

@Provides({PrivateKeyResolver.class, CertificateResolver.class})
@Extension(value = "In-memory vault extension", categories = {"vault", "security"})
public class VaultMemoryExtension implements ServiceExtension {
@Extension(value = "Vault seed extension: adds secrets to the vault", categories = {"vault", "security"})
@BaseExtension
public class VaultSeedExtension implements ServiceExtension {

@Setting(value = "Secrets with which the vault gets initially populated. Specify as comma-separated list of key:secret pairs.")
public static final String VAULT_MEMORY_SECRETS_PROPERTY = "edc.vault.secrets";
public static final String NAME = "In-Memory Vault Extension";
public static final String NAME = "Vault Seed Extension";

@Inject
private Vault vault;

@Override
public String name() {
Expand All @@ -43,9 +43,6 @@ public String name() {
@Provider
public Vault createInMemVault(ServiceExtensionContext context) {
var seedSecrets = context.getSetting(VAULT_MEMORY_SECRETS_PROPERTY, null);
var vault = new InMemoryVault(context.getMonitor());
context.registerService(PrivateKeyResolver.class, new VaultPrivateKeyResolver(vault));
context.registerService(CertificateResolver.class, new VaultCertificateResolver(vault));
if (seedSecrets != null) {
Stream.of(seedSecrets.split(";"))
.filter(pair -> pair.contains(":"))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,4 +18,4 @@
# SPDX-License-Identifier: Apache-2.0
#

org.eclipse.tractusx.edc.vault.memory.VaultMemoryExtension
org.eclipse.tractusx.edc.vault.memory.VaultSeedExtension

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -14,43 +14,51 @@

package org.eclipse.tractusx.edc.vault.memory;

import org.eclipse.edc.connector.core.vault.InMemoryVault;
import org.eclipse.edc.junit.extensions.DependencyInjectionExtension;
import org.eclipse.edc.spi.monitor.Monitor;
import org.eclipse.edc.spi.security.Vault;
import org.eclipse.edc.spi.system.ServiceExtensionContext;
import org.eclipse.edc.spi.system.injection.ObjectFactory;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.ValueSource;

import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.Mockito.anyString;
import static org.mockito.Mockito.eq;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;

class VaultMemoryExtensionTest {
private VaultMemoryExtension extension;
@ExtendWith(DependencyInjectionExtension.class)
class VaultSeedExtensionTest {
private VaultSeedExtension extension;
private ServiceExtensionContext context;
private Monitor monitor;

@BeforeEach
void setup() {
extension = new VaultMemoryExtension();
context = mock(ServiceExtensionContext.class);
void setup(ServiceExtensionContext context, ObjectFactory factory) {
this.context = spy(context);
monitor = mock(Monitor.class);
when(context.getMonitor()).thenReturn(monitor);
context.registerService(Monitor.class, monitor);
context.registerService(Vault.class, new InMemoryVault(monitor));
extension = factory.constructInstance(VaultSeedExtension.class);
}

@Test
void name() {
assertThat(extension.name()).isEqualTo("In-Memory Vault Extension");
assertThat(extension.name()).isEqualTo("Vault Seed Extension");
}

@ParameterizedTest
@ValueSource(strings = {"key1:", "key1:value1", "key1:value1;", ";key1:value1", ";sdf;key1:value1"})
void createInMemVault_validString(String secret) {
when(context.getSetting(eq(VaultMemoryExtension.VAULT_MEMORY_SECRETS_PROPERTY), eq(null))).thenReturn(secret);
when(context.getSetting(eq(VaultSeedExtension.VAULT_MEMORY_SECRETS_PROPERTY), eq(null))).thenReturn(secret);
extension.createInMemVault(context);
verify(monitor, times(1)).debug(anyString());
}
Expand Down