Попытка использовать Wiremock в качестве инструмента для виртуализации сервисов SOAP.
Критерии сопоставления запросов выглядят примерно так:
Критерии сопоставления:
{
"request":{
"method":"POST",
"urlPattern":"/myServices/mycontent.asgx",
"headers":{
"SOAPAction":{
"contains":"#SearchMyContent"
}
},
"bodyPatterns":[{
**"matchesXPath":"//data:MyContentItemCode[contains(text(), 'SD_12345')] and //MyContentItemCode[contains(text(), 'SD_22222')]",**
"xPathNamespaces":{
"SOAP-ENV": "http://schemas.xmlsoap.org/soap/envelope/",
"data":"http://www.ins.com/insi/1.0/insi-data",
"msg":"http://www.ins.com/insi/1.0/insi-messaging",
"nc":"http://www.ins.com/insi/1.0/insi-non-compliant",
"soapenv":"http://schemas.xmlsoap.org/soap/envelope/",
"srvc":"http://www.ins.com/insi/1.0/insi-services"
}
}]
},
"response":{
"status":200,
"headers":{
"Content-Type":"text/xml;charset=utf-8"
},
"body":"encoded_XML_body"
}
}
По соображениям безопасности я не могу опубликовать здесь весь запрос службы SOAP, но ниже приведен небольшой фрагмент из службы SOAP, который должен быть сопоставлен с xpath в критериях сопоставления.
<srvc:MyContentItemCodeList>
<data:MyContentItemCode>SD_12345</data:MyContentItemCode>
<data:MyContentItemCode>SD_22222</data:MyContentItemCode>
</srvc:MyContentItemCodeList>
Как видите, я пытаюсь сопоставить оба тега «data: MyContentItemCode» в моих критериях сопоставления. Однако Wiremock не распознает / не поддерживает это. Это могло быть потому, что xpath возвращает логическое значение. Мои вопросы: есть ли способ сопоставления логических значений в Wiremock.
Я не нашел здесь примера в документации Wiremock: - http://wiremock.org/docs/request-matching/
Когда я отправляю сопоставления на сервер Wiremock, он успешно публикуется, но когда я пытаюсь попасть на сервер Wiremock, я не получаю обратно свой виртуализированный ответ (т. Е. Сопоставление запросов не рассматривается)
Любая помощь / указатели по этому поводу будут оценены.