WireMock для использования в качестве прокси для службы SOAP - PullRequest
1 голос
/ 13 июля 2020

Вот сценарий, над которым я пытаюсь работать:

Я пишу тесты, управляемые контрактом, с использованием контракта Spring Cloud. Тесты на взаимодействие между микросервисами работают нормально.

Некоторые микросервисы вызывают службы, основанные на SOAP. В рамках интеграционных тестов я пытаюсь использовать WireMock в качестве прокси для служб на основе SOAP. По сути, WireMock должен перехватить вызов, затем вызвать целевую живую среду с тем же запросом, вернуть тот же ответ на тест в виде заглушки.

К сожалению, я не смог найти никаких примеров, как продолжить который. Эти службы используют протокол HTTP. Любые примеры того, как или любые указатели для достижения этого, были бы замечательными. Спасибо!

1 Ответ

1 голос
/ 15 июля 2020

Сначала вам нужно указать своему SOAP клиенту базовый URL-адрес WireMock, поэтому, например, если вы используете файл свойств Spring, у вас может быть что-то вроде этого:

soap.api.host=wiremock-host.internal
soap.api.port=8888

Тогда вам нужно настроить сервер WireMock с помощью заглушки прокси с низким приоритетом и широким соответствием. Вот пример того, как это будет выглядеть в форме JSON:

{
  "priority": 8,
  "response": {
    "proxyBaseUrl" : "http://target.soap.endpoint"
  }
}

Затем, наконец, вы должны создать дополнительные заглушки (с приоритетом по умолчанию) для каждого запроса, который вы хотите перехватить, например,

{
  "request": {
    "method": "POST",
    "urlPath": "/v1/some/thing",
    "headers": {
      "SOAPAction": {
        "contains": "MyAction"
      }
    }
  },
  "response": {
    "status": 200,
    "body": "<soap:Envelope ..."
  }
}
...