В настоящее время я тестирую свои пакт-контракты, используя следующие опции провайдера
let opts = {
provider: "api",
providerBaseUrl: "https://my-domain.com",
pactUrls: [
path.resolve(
process.cwd(),
"./pacts/pact-api.json"
),
],
validateSSL: false,
changeOrigin: true,
providerVersion: "1.0.0"
}
return new Verifier(opts).verifyProvider().then(output => {
console.log("Pact Verification Complete!")
console.log(output)
})
Когда я даю базовый URL-адрес как https
, я получаю следующую ошибку:
Uncaught Error: write EPROTO 140574248376192:error:1408F10B:SSL routines:ssl3_get_record:wrong version number:../deps/openssl/openssl/ssl/record/ssl3_record.c:332:
at WriteWrap.onWriteComplete [as oncomplete] (internal/stream_base_commons.js:92:16)
Если Я изменяю URL, чтобы http:
выполнял перенаправление (я получаю код состояния перенаправления 308).
URL-адрес https является самозаверяющим URL-адресом, а самозаверяющий сертификат присутствует на всех наших серверах. У меня нет проблем с доступом к URL из любого браузера или с помощью curl или через express. js.
Но если я предоставлю URL-адрес непосредственно в настройках провайдера, я получу сообщение об ошибке. Я просмотрел документацию по пакту и не смог найти никаких дополнительных аргументов.
Любая помощь в преодолении этой проблемы высоко ценится.
Спасибо.
Обновление : проблема заключалась в запуске pact внутри контейнера docker. Запросы из контейнера блокировались внутренним прокси-сервером. Как только прокси был обойден, он заработал.