Сборка JVM для Scala 2_11
Это вопрос о проекте https://github.com/DiUS/pact-jvm.
проблема
Когда я проверяю пакты, мне нужно иметь возможность использовать аутентификацию на стороне клиента, поскольку провайдеры действительно требуют аутентификации на стороне клиента. Я добавлю к тому, что я говорю, заявление о том, что я не очень хорошо знаком с groovy: я в основном программирую на scala, java или javascript. Посмотрев код, я думаю, что аутентификация на стороне клиента в настоящее время не поддерживается, поэтому я хотел бы сделать запрос на включение с этой поддержкой.
Что я сделал до сих пор
Мне удалось заставить Https работать с хранилищем доверенных сертификатов: я скопировал HttpTarget и создал HttpsTarget, а в HttpsTarget указал хранилище доверенных сертификатов в providerinfo. К сожалению, глядя на код, похоже, нет способа указать сертификат клиента, поэтому мне нужно изменить класс providerinfo, чтобы можно было указывать, где он находится (таким же образом предоставляется хранилище доверенных сертификатов).
Моя проблема в том, что у меня есть компиляция кода с использованием рекомендаций из раздела "Для участников", но когда я публикую локально, я публикую только для scala версии 2_12. Из-за проблем с версиями и двоичной несовместимости между версиями Scala мне нужно опубликовать в Scala 2_11. Мои навыки в Gradle даже меньше, чем в Groovy. Я выполнил поиск по всем ссылкам на scalaVersion и обнаружил, что вокруг него много логики, но мне не удалось отследить, где он указан.
Вопрос
Если бы я мог использовать аутентификацию на стороне клиента с текущим средством проверки pact, не могли бы вы сообщить мне. Если нет, подскажите, как опубликовать проект с поддержкой scala 2_11?
Спасибо
1 ответ
В конце концов я сделал свою собственную Http Target. Мне нужно бежать из Junit, а не в общем случае, и это достаточно хорошо:
public class HttpsTarget extends HttpTarget {
public HttpsTarget(final int port) {
super("https", "localhost", port, "/", false);
}
static class HttpsClientFactory implements IHttpClientFactory {
@NotNull
@Override
public CloseableHttpClient newClient(Object o) {
SSLContext sslContext = // put here code to make ssl context
CloseableHttpClient httpClient = HttpClients
.custom()
.setSSLContext(sslContext)
.build();
return httpClient;
}
}
@Override
public void testInteraction(final String consumerName, final Interaction interaction, PactSource source) {
ProviderInfo provider = getProviderInfo(source);
ConsumerInfo consumer = new ConsumerInfo(consumerName);
ProviderVerifier verifier = setupVerifier(interaction, provider, consumer);
Map<String, Object> failures = new HashMap<>();
ProviderClient client = new ProviderClient(provider, new HttpsClientFactory());
verifier.verifyResponseFromProvider(provider, interaction, interaction.getDescription(), failures, client);
reportTestResult(failures.isEmpty(), verifier);
try {
if (!failures.isEmpty()) {
verifier.displayFailures(failures);
throw getAssertionError(failures);
}
} finally {
verifier.finialiseReports();
}
}
}