From 3f566a70126a0a6cb7318d8787af42894a999875 Mon Sep 17 00:00:00 2001 From: Benjamin Beret Date: Sun, 28 Dec 2025 17:42:11 +0100 Subject: [PATCH 1/2] Add failing test --- .../request.json | 1 + .../request.xml | 6 ++ .../response.json | 8 ++ .../response.xml | 13 +++ .../soap.wsdl | 90 +++++++++++++++++++ 5 files changed, 118 insertions(+) create mode 100644 test/request-response-samples/Dummy__should_handle_empty_string_with_pattern_restriction/request.json create mode 100644 test/request-response-samples/Dummy__should_handle_empty_string_with_pattern_restriction/request.xml create mode 100644 test/request-response-samples/Dummy__should_handle_empty_string_with_pattern_restriction/response.json create mode 100644 test/request-response-samples/Dummy__should_handle_empty_string_with_pattern_restriction/response.xml create mode 100644 test/request-response-samples/Dummy__should_handle_empty_string_with_pattern_restriction/soap.wsdl diff --git a/test/request-response-samples/Dummy__should_handle_empty_string_with_pattern_restriction/request.json b/test/request-response-samples/Dummy__should_handle_empty_string_with_pattern_restriction/request.json new file mode 100644 index 000000000..0967ef424 --- /dev/null +++ b/test/request-response-samples/Dummy__should_handle_empty_string_with_pattern_restriction/request.json @@ -0,0 +1 @@ +{} diff --git a/test/request-response-samples/Dummy__should_handle_empty_string_with_pattern_restriction/request.xml b/test/request-response-samples/Dummy__should_handle_empty_string_with_pattern_restriction/request.xml new file mode 100644 index 000000000..975d95ab1 --- /dev/null +++ b/test/request-response-samples/Dummy__should_handle_empty_string_with_pattern_restriction/request.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/test/request-response-samples/Dummy__should_handle_empty_string_with_pattern_restriction/response.json b/test/request-response-samples/Dummy__should_handle_empty_string_with_pattern_restriction/response.json new file mode 100644 index 000000000..520fb5ddf --- /dev/null +++ b/test/request-response-samples/Dummy__should_handle_empty_string_with_pattern_restriction/response.json @@ -0,0 +1,8 @@ +{ + "foo": { + "string_simple": "", + "string_pattern": "", + "string_simple_list": [""], + "string_pattern_list": [""] + } +} diff --git a/test/request-response-samples/Dummy__should_handle_empty_string_with_pattern_restriction/response.xml b/test/request-response-samples/Dummy__should_handle_empty_string_with_pattern_restriction/response.xml new file mode 100644 index 000000000..26232a647 --- /dev/null +++ b/test/request-response-samples/Dummy__should_handle_empty_string_with_pattern_restriction/response.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/test/request-response-samples/Dummy__should_handle_empty_string_with_pattern_restriction/soap.wsdl b/test/request-response-samples/Dummy__should_handle_empty_string_with_pattern_restriction/soap.wsdl new file mode 100644 index 000000000..40c1e3a3b --- /dev/null +++ b/test/request-response-samples/Dummy__should_handle_empty_string_with_pattern_restriction/soap.wsdl @@ -0,0 +1,90 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From df3291978a993c026a8fe3638ca0c1f62ebee715 Mon Sep 17 00:00:00 2001 From: Benjamin Beret Date: Sun, 28 Dec 2025 21:33:44 +0100 Subject: [PATCH 2/2] Fix failing test --- src/wsdl/index.ts | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/wsdl/index.ts b/src/wsdl/index.ts index 42b9d8e28..9378505c0 100644 --- a/src/wsdl/index.ts +++ b/src/wsdl/index.ts @@ -367,7 +367,12 @@ export class WSDL { const topSchema = top.schema; const name = splitQName(nsName).name; - if (typeof cur.schema === 'string' && (cur.schema === 'string' || cur.schema.split(':')[1] === 'string')) { + /** + * When parsing a string element, we need to correctly transform `` + * to an empty string. + */ + const isStringElement = typeof cur.schema === 'string' && splitQName(cur.schema).name === 'string'; + if (isStringElement) { if (typeof obj === 'object' && Object.keys(obj).length === 0) { obj = cur.object = this.options.preserveWhitespace ? cur.text || '' : ''; }