Skip to content
Snippets Groups Projects
IntegrationTestBase.java 3.61 KiB
Newer Older
package dev.fitko.fitconnect.integrationtests;

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;
Martin Vogel's avatar
Martin Vogel committed
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;
Henry Borasch's avatar
Henry Borasch committed
import java.io.IOException;
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() {
Martin Vogel's avatar
Martin Vogel committed
        final UUID destinationId = UUID.fromString(System.getenv("TEST_DESTINATION_ID"));
        final Problem problem = new Problem(SCHEMA_URL + "technical-error", "cleanup", "submission-cleanup", "other");
Martin Vogel's avatar
Martin Vogel committed
        final SubscriberClient subscriberClient = ClientFactory.createSubscriberClient(getConfigWithCredentialsFromEnvironment());
Martin Vogel's avatar
Martin Vogel committed
        subscriberClient.getAvailableSubmissionsForDestination(destinationId).forEach((s -> {
Martin Vogel's avatar
Martin Vogel committed
                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());
Martin Vogel's avatar
Martin Vogel committed
    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"));

        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"))
                .privateDecryptionKeys(List.of(decryptionKey, decryptionKey))
                .privateSigningKey(signingKey)
Martin Vogel's avatar
Martin Vogel committed
        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)
Henry Borasch's avatar
Henry Borasch 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());
Henry Borasch's avatar
Henry Borasch committed
    }