1

I have a notion of what breaks a WSDL contract or not (What are considered non-breaking or backwards-compatible changes to a WSDL contract?) but every time we make a change to some of our WSDLs we need to prove to other teams whether that change broke the contract or not. As we do not want to build a whole application as a client to our services, we would like to use some simpler tool like soapUI for that purpose.

I have looked into the soapUI assertions and on the internet but still have not found a clue. Can anybody help me?

Thanks and regards,

Community
  • 1
  • 1

2 Answers2

0

You can create a xml scheme or dtd of your wsdl contract, which you can then use to easily validate the structure of your wsdl xml.

MeTitus
  • 3,390
  • 2
  • 25
  • 49
  • Hi Marco! Thanks for your response. I know it's not really easy to generate XML schemas from WSDLs, especially when you have several services. Nevertheless, your solution is the best one I have found so far. I really cannot understand why soapUI or other similar tools cannot validate this... Thanks again! – Rodolfo Mendes May 08 '13 at 21:51
  • Unfortunately because you're working with xml based services I don't think there other way of doing it, it is not perfect, but that is what we got. As for the tools, maybe no-one though about that yet :) – MeTitus May 09 '13 at 07:48
  • Nope, the schema alone is not enough. SOAP request is not just the XML. Action, encoding, SOAP 1.1/1.2, style, policies - all of them (and more) can break the backward compatibility. Check out my free tool: https://wsdldiff.mockmotor.com which can spot hopefully all modifications that make WSDL versions incompatible. – Vlad at MockMotor Feb 21 '19 at 02:40
  • @VladatMockMotor yes and yes. Every xml document, soap or other can be structure validated using a xml scheme or dtd, so yes your completely wrong. There are tools which can generate xml scheme files, no need to introduce yours... – MeTitus Feb 28 '19 at 12:07
  • @MeTitus When you have the payload XML, you can validate it. However, the question is about having old and updated WSDL, not payload. Say a new WSDL replaces xsd:sequence with xsd:all. Does it break the contract? Formally, it does - xsd:all order is not specified. However, xsd:sequence generated by old code will be validated as xsd:all by the new code, i.e. the validity is directional. And even xsd:all result can (mistakenly) validate as xsd:sequence if the order of elements accidentally matches in this implementation the one in the sequence. In other implementations, it may break. – Vlad at MockMotor Mar 02 '19 at 01:31
  • ... Not even mentioning that some SOAP elements - SOAPAction - are outside of the payload, and so cannot be automatically validated. – Vlad at MockMotor Mar 02 '19 at 01:35
0

Look at WSDL Diff Command Line Tool. This tool generates HTML report based on two WSDL files of your service (original and modified). In the report you can see all the breaking changes introduced in the modified contract.

Serg
  • 341
  • 3
  • 4
  • Unfortunately, it catches not all changes. I remember there was one around a modified , I think, which gave me some troubles. The tool does not seem to be developed actively. – Vlad at MockMotor Feb 21 '19 at 02:49