Implement correct xsd:whitespace behaviour #1125
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Closes #1105
XSD spec requires specific treatment of whitespace for builtin types, whilst we cannot control the way any one of hundreds of soap servers return data, we can remove any whitespace that does not conform to the spec. This way we can be confident that the intent of the message is correctly captured.
I've implemented this with a new decorator, much like the
@check_no_collections
decorator currently used. This allows us to enforce the correct whitespace behaviour for each builtin type.A summary of the desired behaviour is:
I have also added new asserts to check this behaviour for existing builtin tests, and added new tests for NormalizedString and Token which verify this behaviour. This breaks no existing tests, since we only provided valid inputs.