Выполнение тестов Pact провайдера против развернутого провайдера HTTPS
Я хочу настроить контрактное тестирование Pact для своих клиентов и API. Мои API не могут быть запущены локально, поэтому я хочу иметь возможность запускать тесты провайдера для развернутой промежуточной версии API перед развертыванием в рабочей среде.
Большинство примеров, которые я видел в сети с тестами провайдеров, использовали localhost. При попытке запустить тест провайдера для моей развернутой конечной точки HTTPS, тест завершается неудачно с read server hello A: unknown protocol
, Протокол HTTPS не поддерживается или я что-то упустил?
func TestTenantProvider(t *testing.T) {
// Create Pact connecting to local Daemon
pact := &dsl.Pact{
Consumer: "TenantConsumer",
Provider: "TenantProvider",
}
// Verify the Provider with local Pact Files
pact.VerifyProvider(t, types.VerifyRequest{
ProviderBaseURL: "https://my-staging-endpoint.com",
PactURLs: []string{filepath.ToSlash(fmt.Sprintf("%s/tenantconsumer-tenantprovider.json", pactDir))},
})
}
Использование инструмента командной строки pact-provider-verifyier работает нормально.
1 ответ
Он должен поддерживать проверку по HTTPS, но в настоящее время я не думаю, что мы легко поддерживаем SSL с самозаверяющими сертификатами в Pact Go (см. https://github.com/pact-foundation/pact-go/issues/66).
Теоретически, вы должны иметь возможность установить переменную среды для вашей конфигурации SSL [1], как показано ниже:
Чтобы подключиться к Pact Broker, который использует пользовательские сертификаты SSL, задайте для переменной среды $SSL_CERT_FILE или $SSL_CERT_DIR путь, содержащий соответствующий сертификат.