Newer
Older
package dev.fitko.fitconnect.integrationtests;

Martin Vogel
committed
import com.nimbusds.jose.jwk.JWK;
import dev.fitko.fitconnect.api.config.ApplicationConfig;
import dev.fitko.fitconnect.api.config.Environment;
import dev.fitko.fitconnect.api.config.EnvironmentName;
import dev.fitko.fitconnect.api.config.SenderConfig;
import dev.fitko.fitconnect.api.config.SubscriberConfig;
import dev.fitko.fitconnect.api.config.defaults.Environments;
import dev.fitko.fitconnect.api.domain.model.event.problems.Problem;
import dev.fitko.fitconnect.client.SubscriberClient;
import dev.fitko.fitconnect.client.bootstrap.ClientFactory;

Martin Vogel
committed
import java.text.ParseException;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.UUID;
import static dev.fitko.fitconnect.api.domain.model.event.problems.Problem.SCHEMA_URL;
public class IntegrationTestBase {
public static void cleanupTestSubmissions() {
final UUID destinationId = UUID.fromString(System.getenv("TEST_DESTINATION_ID"));
final Problem problem = new Problem(SCHEMA_URL + "technical-error", "cleanup", "submission-cleanup", "other");
final SubscriberClient subscriberClient = ClientFactory.createSubscriberClient(getConfigWithCredentialsFromEnvironment());
subscriberClient.getAvailableSubmissionsForDestination(destinationId).forEach((s -> {
subscriberClient.rejectSubmission(s, List.of(problem));
} catch (final Exception e) {
//continue
}
}));
}
public static ApplicationConfig getConfigWithCredentialsFromEnvironment() {
return getConfigWithCredentialsFromEnvironment(true, Collections.emptyMap());
}
public static ApplicationConfig getConfigWithCredentialsFromEnvironment(final boolean allowInsecurePublicKey) {
return getConfigWithCredentialsFromEnvironment(allowInsecurePublicKey, Collections.emptyMap());
public static ApplicationConfig getConfigWithCredentialsFromEnvironment(final boolean allowInsecurePublicKey, final Map<String, String> submissionDataSchemas) {
final var sender = new SenderConfig(System.getenv("SENDER_CLIENT_ID"), System.getenv("SENDER_CLIENT_SECRET"));

Martin Vogel
committed
var signingKey = getKeyAsJWK("/private_test_signing_key.json");
var decryptionKey = getKeyAsJWK("/private_decryption_test_key.json");
final var subscriber = SubscriberConfig.builder()
.clientId(System.getenv("SUBSCRIBER_CLIENT_ID"))
.clientSecret(System.getenv("SUBSCRIBER_CLIENT_SECRET"))

Martin Vogel
committed
.privateDecryptionKeys(List.of(decryptionKey, decryptionKey))
.privateSigningKey(signingKey)
final EnvironmentName envName = Environments.TEST.getEnvironmentName();
final Environment env = Environments.TEST.getEnvironment();
env.setAllowInsecurePublicKey(allowInsecurePublicKey);
return ApplicationConfig.builder()
.senderConfig(sender)
.subscriberConfig(subscriber)
.environments(Map.of(envName, env))
.activeEnvironment(envName)
.submissionDataSchemas(submissionDataSchemas)

Martin Vogel
committed
private static JWK getKeyAsJWK(String key) {
try {
return JWK.parse(getResourceAsString(key));
} catch (ParseException | IOException e) {
throw new RuntimeException(e);
}
}
static String getResourceAsString(final String filename) throws IOException {
return new String(IntegrationTestBase.class.getResourceAsStream(filename).readAllBytes());