Выполнение тестов 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 путь, содержащий соответствующий сертификат.

Другие вопросы по тегам