Ошибка WireMock при попытке имитировать HttpClient с помощью прокси

У меня есть Http-клиент, который в реальной жизни использует прокси-сервер для отправки запроса к API. Я пытаюсь использовать WireMock для запуска моих HTTP-клиентских тестов и имитации ответов для API. Однако мне не удалось заставить Wiremock работать с настройкой прокси. Я перепробовал все подходящие комбинации и все еще не смог пройти успешный тест.

Я пробовал viaProxy конфигурацию, а также proxiedWith, но не уверен, правильно ли я их использую. Документация тоже не сильно помогает.

Клиентский код имеет следующую конфигурацию:

private val httpsProxySettings: ConnectionPoolSettings =
    ConnectionPoolSettings(actorSystem)
      .withConnectionSettings(ClientConnectionSettings(actorSystem))
      .withTransport(
        ClientTransport.httpsProxy(
          InetSocketAddress.createUnresolved(PROXY_HOST, PROXY_PORT)
        )
      )

И тестовая конфигурация выглядит следующим образом:

      val wireMockServer = new WireMockServer(
        wireMockConfig().port(API_PORT).proxyVia(PROXY_HOST, PROXY_PORT)
      )
      wireMockServer.start()
      WireMock.configureFor("localhost", API_PORT)

      wireMockServer.stubFor(
        put(anyUrl())
          .willReturn(
            aResponse()
              .withStatus(201)
//            .proxiedFrom(API_HOST)
          )
      )

person igalbenardete    schedule 16.07.2019    source источник
comment
У вас есть минимальное репо кода?   -  person Tarun Lalwani    schedule 19.07.2019


Ответы (1)


Вы можете попробовать перейти на
val wireMockServer = new WireMockServer(options().proxyVia(PROXY_HOST,PROXY_PORT))
, как указано здесь http://wiremock.org/docs/proxying/.

Вы проводите тестирование с помощью запроса на размещение? вы можете попробовать изменить
wireMockServer.stubFor(put(anyUrl())...)
на
wireMockServer.stubFor(post(anyUrl())...)
или
wireMockServer.stubFor(get(anyUrl())...)

Вы используете HTTPS? может потребоваться дополнительная настройка.
Также попробуйте добавить заголовок, по крайней мере, с содержимым и телом, совместимым с настройкой содержимого, как в запрос, так и в ответ.

person Leonardo Goes    schedule 25.07.2019