Я использую жемчужину Pact (и люблю его!) Для моего тестового набора контрактов. Для службы API, которую я тестирую, требуется токен авторизации для всех запросов.Как проверить pacts против API, для которого требуется токен аутентификации?
Я знаю, как создать токен API для моего пользователя, но я не знаю, где разместить токен в рабочем процессе Pact. Я искал документацию Пакта и репо для примеров, но мне не повезло.
Я попытался отправить POST в потребительских спецификациях, чтобы создать токен, но макет Pact-макета не знает, что делать с запросом и ошибками (как и следовало ожидать).
Я нашел this example и кажется многообещающим, в частности, возможность назначать предопределенные заголовки всем запросам с помощью requestFilter
и метода addHeader
.
Как я могу использовать такой фильтр запросов с драгоценным камнем Pact?
Если это не текущая функция, какие у меня альтернативы?
UPDATE:
J_A_X's answer работает отлично подходит для создания пактов с макетом сервером, но это не удовлетворяет ожидания провайдера услуг API действительного токен аутентификации. В частности, мне нужно динамически вставить действительные токены аутентификации в пакты при запуске pact: проверьте. Итак, на один шаг ближе, но все же нужно выяснить последнюю часть.
Matthew's answer содержит намеки на то, что представляется двумя возможными решениями для последней части (pact: verify). Я стесняюсь представить другую зависимость, поэтому мне бы хотелось, чтобы работа над классом ProxyApp работала. Я не понимаю, что именно я передал бы в ProxyApp.new(). Предложения?
Спасибо за обстоятельный ответ! Ваш пример, безусловно, работает, хотя он больше похож на обходной путь для меня. Я надеюсь на встроенный подход, который позволяет мне проверять пакты с реальными токенами аутентификации. – mycargus
ну, вы можете их использовать, но проблема в том, что теперь вам нужно знать, что это будет перед созданием взаимодействий, а затем проверить их. Я не знаю, как создать этот поток легко, не обманывая каким-то образом, что по сути то же самое, что и делать это. В заключение спросите себя, действительно ли эта конкретная проверка взаимодействия важна для общего тестирования вашего провайдера. На мой взгляд, это не так, поэтому мое регулярное выражение; для меня важным является бизнес-API, который возвращает данные в правильном формате/типе. –
Ваш подход отлично подходит для создания пактов с макетным сервером, но он не удовлетворяет ожиданиям поставщика услуг API действительного токена аутентификации. В частности, мне нужно динамически вставить действительные токены аутентификации в пакты при запуске pact: проверьте. Имеет ли это смысл? – mycargus