Попытка использовать 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, я не получаю обратно свой виртуализированный ответ (т. е. сопоставление запроса не учитывается)
Любая помощь / указатели на это будут оценены.