pact-jvm-provider - JUnit5 Spring - невозможно добавить заголовки авторизации

У меня есть приложение Spring Boot, для которого я пишу контрактные тесты с использованием Pact-JVM. Это провайдер.

Я добавил следующие зависимости/конфигурации пактов в build.gradle: я использую Java 11, Gradle 6.3.

plugins {
    id 'au.com.dius.pact' version '4.1.6'
}
dependencies {
    testImplementation 'ch.qos.logback:logback-core:1.2.3'
    testImplementation 'ch.qos.logback:logback-classic:1.2.3'

    testImplementation 'au.com.dius.pact.provider:junit5:4.1.6'
}

Вот мой проверочный тест:

@Provider("product")
@PactBroker(host = "localhost", scheme = "http", port = "9292")
class PactVerificationTest {

    @BeforeEach
    void setupTestTarget(PactVerificationContext context) {
        context.setTarget(new HttpTestTarget("localhost", 9002, "/"));
    }

    @TargetRequestFilter
    public void addAuthorizationHeadersStripContextPathRequestFilter(HttpRequest request) throws URISyntaxException {
        request.addHeader("USER_ID", "1231324123414");
        request.addHeader("AB_USER", "1231324123414");
        request.addHeader("AB_USERGROUP", "installtrial");

        String rawUri = request.getRequestLine().getUri();
        ((HttpRequestBase) request).setURI(new URI(rawUri.replaceFirst("/product/", "/")));
    }

    @TestTemplate
    @ExtendWith(PactVerificationInvocationContextProvider.class)
    void pactVerificationTestTemplate(PactVerificationContext context) {
        context.verifyInteraction();
    }

    @State("Given products available")
    public void testProductDetails() {

    }
}

Я ожидаю, что заголовки авторизации, добавленные в аннотированный метод TargetRequestFilter, будут частью запроса, но эти заголовки отсутствуют в запросе. Можете ли вы помочь мне, что я делаю неправильно здесь?

Кроме того, я ищу пример использования последней версии pact-jvm. Я не смог найти в примерах, предоставленных pact-jvm.


person Amer    schedule 27.07.2020    source источник


Ответы (1)


На помощь пришла команда Pact-JVM Slack!

В случае Pact-JVM + JUnit5 добавление заголовков/манипулирование запросами можно выполнить в самом аннотированном методе @TestTemplate — https://docs.pact.io/implementation_guides/jvm/provider/junit5/#modifying-запросы-до-их-отправки

Теперь мой метод выглядит так:

@TestTemplate
@ExtendWith(PactVerificationInvocationContextProvider.class)
void pactVerificationTestTemplate(PactVerificationContext context, HttpRequest request) {
    addAuthenticationHeaders(request);
    context.verifyInteraction();
}
person Amer    schedule 31.07.2020
comment
это не работает. - person Sarvar Nishonboyev; 15.12.2020