├── test ├── wsdl │ ├── bad.txt │ ├── doc-lit-part-error │ │ └── testni.xsd │ ├── typeref │ │ ├── request.json │ │ ├── ns2.xsd │ │ └── request.xml.js │ ├── xsdinclude │ │ └── types-without-tns.xsd │ ├── recursive-schema-import │ │ ├── Infrastructure.xsd │ │ ├── TESTAdditionalHeaders.xsd │ │ ├── Common.xsd │ │ ├── TEST.xsd │ │ ├── Location.xsd │ │ ├── AccountingUnit.xsd │ │ └── InfrastructureSOAP.xsd │ ├── binding_document.wsdl │ ├── wsdlImport │ │ └── xsd.xsd │ ├── from-memory │ │ └── multipart │ │ │ └── xsd.xsd │ ├── ExtendedName.xsd │ ├── strict │ │ └── npe.wsdl │ ├── Name.xsd │ └── unsupported │ │ └── ImportSample.xsd ├── mocha.opts ├── request-response-samples │ ├── GetNodes__complex_self_referencing │ │ ├── request.json │ │ ├── wsdl_options.json │ │ ├── request.xml │ │ ├── response.json │ │ └── response.xml │ ├── Dummy__should_handle_null_args │ │ ├── request.json │ │ ├── response.json │ │ ├── request.xml │ │ ├── response.xml │ │ └── name.xsd │ ├── RequestHeaders__propogate_custom_header │ │ ├── response.json │ │ ├── request.json │ │ ├── header.json │ │ ├── response.xml │ │ └── request.xml │ ├── RequestHeaders__omit_element_when_empty │ │ ├── response.json │ │ ├── request.json │ │ ├── response.xml │ │ └── request.xml │ ├── RequestHeaders__propogate_basic_security │ │ ├── response.json │ │ ├── request.json │ │ ├── security.json │ │ └── response.xml │ ├── ResponseHeaders__return_soap_headers │ │ ├── response.json │ │ ├── request.json │ │ ├── responseSoapHeader.json │ │ ├── header.json │ │ ├── response.xml │ │ └── request.xml │ ├── addPets__force_namespaces │ │ ├── response.json │ │ ├── request.json │ │ ├── response.xml │ │ ├── wsdl_options.json │ │ └── request.xml │ ├── Dummy__should_return_array_despite_maxOccurs_1 │ │ ├── request.json │ │ ├── request.xml │ │ ├── response.json │ │ ├── name.xsd │ │ └── response.xml │ ├── Dummy__should_return_object_when_maxOccurs_1 │ │ ├── request.json │ │ ├── response.json │ │ ├── request.xml │ │ ├── response.xml │ │ └── name.xsd │ ├── administrate__Complex_json_object_namespace_issue │ │ ├── response.json │ │ ├── request.json │ │ ├── response.xml │ │ └── request.xml │ ├── RequestHeaders__propogate_basic_security_no_timestamp │ │ ├── response.json │ │ ├── request.json │ │ ├── security.json │ │ ├── response.xml │ │ └── request.xml │ ├── DefaultNamespace__no_xmlns_prefix_used_for_default_namespace │ │ ├── response.json │ │ ├── request.json │ │ ├── response.xml │ │ └── request.xml │ ├── RequestHeaders__propogate_basic_security_invalid_options │ │ ├── response.json │ │ ├── request.json │ │ ├── response.xml │ │ └── security.json │ ├── RequestHeaders__propogate_basic_security_no_token_created │ │ ├── response.json │ │ ├── request.json │ │ ├── security.json │ │ ├── response.xml │ │ └── request.xml │ ├── Dummy__should_ignore_defined_namespaces │ │ ├── wsdl_options.json │ │ ├── request.json │ │ ├── response.json │ │ ├── response.xml │ │ └── request.xml │ ├── NoParams__add_correct_namespace_for_operations_without_parameters │ │ ├── request.json │ │ └── request.xml │ ├── RequestHeaders__propogate_basic_security backward compatible check │ │ ├── response.json │ │ ├── request.json │ │ ├── security.json │ │ └── response.xml │ ├── Dummy__should_handle_nil │ │ ├── response.json │ │ ├── request.json │ │ ├── request.xml │ │ ├── response.xml │ │ └── name.xsd │ ├── Message__Messages_suffixed_with_In_Out │ │ ├── response.json │ │ ├── request.json │ │ ├── response.xml │ │ └── request.xml │ ├── Message__overriding_namespace_prefix │ │ ├── response.json │ │ ├── request.json │ │ ├── response.xml │ │ └── request.xml │ ├── OneWay__should_handle_one_way_operation │ │ ├── request.json │ │ └── request.xml │ ├── addList__qualified_attrs │ │ ├── response.json │ │ ├── request.json │ │ ├── request.xml │ │ ├── response.xml │ │ └── soap.messages.xsd │ ├── SendCDATA__cdata_is_handled_correctly │ │ ├── response.json │ │ ├── request.json │ │ ├── request.xml │ │ └── response.xml │ ├── Message__MessageResponses_suffixed_with_.Out │ │ ├── response.json │ │ ├── request.json │ │ ├── response.xml │ │ └── request.xml │ ├── Message__MessageResponses_suffixed_with_.Output │ │ ├── response.json │ │ ├── request.json │ │ ├── response.xml │ │ └── request.xml │ ├── Message__Messages_suffixed_with_Input_Output │ │ ├── response.json │ │ ├── request.json │ │ ├── response.xml │ │ └── request.xml │ ├── Message__Messages_suffixed_with_Request_Response │ │ ├── response.json │ │ ├── request.json │ │ ├── response.xml │ │ └── request.xml │ ├── Message__MessageResponses_suffixed_with_.Response │ │ ├── response.json │ │ ├── request.json │ │ ├── response.xml │ │ └── request.xml │ ├── login__attributes_namespace_should_be_configurable │ │ ├── wsdl_options.json │ │ ├── request.json │ │ ├── request.xml │ │ └── response.json │ ├── Dummy__should_ignore_custom_defined_namespaces │ │ ├── options.json │ │ ├── request.json │ │ ├── response.json │ │ ├── response.xml │ │ └── request.xml │ ├── readMetadata__should_respect_xsi_type_attribute │ │ ├── request.json │ │ ├── wsdl_options.json │ │ ├── request.xml │ │ ├── response.json │ │ └── response.xml │ ├── Dummy__ref_element_should_has_correct_namespace │ │ ├── response.json │ │ ├── request.json │ │ ├── common.xsd │ │ ├── request.xml │ │ ├── response.xml │ │ └── main.xsd │ ├── UpdateProfile__correct_namespaces_for_elements_with_base_ignorednamespaces │ │ ├── wsdl_options.json │ │ ├── response.json │ │ ├── response.xml │ │ └── request.json │ ├── execFile__valid_xml_generated_on_request_with_complex_type_element_form_default_missing │ │ ├── response.json │ │ ├── request.json │ │ ├── response.xml │ │ └── request.xml │ ├── execFile__valid_xml_generated_on_request_with_complex_type_element_form_default_qualified │ │ ├── response.json │ │ ├── request.json │ │ ├── response.xml │ │ └── request.xml │ ├── Login__unsupported_response_name_returned_and_local_xs_schema_missed │ │ ├── request.json │ │ ├── request.xml │ │ ├── response.json │ │ └── response.xml │ ├── execFile__valid_xml_generated_on_request_with_complex_type_element_form_default_unqualified │ │ ├── response.json │ │ ├── request.json │ │ ├── response.xml │ │ └── request.xml │ ├── UpdateProfile__correct_ns_context │ │ ├── response.json │ │ └── response.xml │ ├── createData__should_generate_complex_type_request │ │ ├── response.json │ │ ├── response.xml │ │ └── request.json │ ├── Dummy__should_work_with_imported_schemas │ │ ├── request.json │ │ ├── request.xml │ │ └── name.xsd │ ├── Dummy__should_use_defined_xml_key │ │ ├── request.json │ │ ├── response.json │ │ ├── request.xml │ │ ├── response.xml │ │ ├── name.xsd │ │ └── common.xsd │ ├── login__complex_schema_xmlns_should_be_handled │ │ ├── request.json │ │ ├── request.xml │ │ └── response.json │ ├── Dummy__should_parse_nil │ │ ├── response.json │ │ ├── request.json │ │ ├── response.xml │ │ └── request.xml │ ├── login__error_returned_should_contain_root_Json_on_fault │ │ ├── request.json │ │ ├── error_response.json │ │ ├── soap.platform.faultTypes.xsd │ │ ├── request.xml │ │ └── response.xml │ ├── SetResource__should_correctly_set_element_if_complex-type_has_same_name │ │ ├── request.json │ │ ├── response.json │ │ ├── response.xml │ │ └── request.xml │ ├── login__complex_schema_xmlns_with_array_and_any_type_and_other_types │ │ ├── request.json │ │ └── request.xml │ ├── Dummy__should_handle_xml_date_time_dateTime │ │ ├── response.json │ │ ├── request.json │ │ ├── response.xml │ │ ├── request.xml │ │ └── name.xsd │ ├── GetAccountXml__non_xmlns_attributes_should_be_returned │ │ ├── request.json │ │ ├── wsdl_options.json │ │ ├── request.xml │ │ ├── response.json │ │ └── response.xml │ ├── GetItemInformation__should_ignore_default_namespace_from_schema │ │ ├── response.json │ │ ├── request.json │ │ ├── request.xml │ │ └── response.xml │ ├── Dummy__should_add_prefix_for_unqualified_global_elements │ │ ├── response.json │ │ ├── request.json │ │ ├── request.xml │ │ ├── response.xml │ │ └── name.xsd │ ├── addList__xsi_type │ │ ├── request.json │ │ ├── response.json │ │ ├── request.xml │ │ └── response.xml │ ├── Dummy__should_use_defined_value_key │ │ ├── request.json │ │ ├── response.json │ │ ├── response.xml │ │ └── request.xml │ ├── Dummy__should_extract_envelope_from_response │ │ ├── request.json │ │ ├── response.json │ │ ├── request.xml │ │ ├── name.xsd │ │ └── response.xml │ ├── Dummy__should_handle_attributes_in_request │ │ ├── request.json │ │ ├── response.json │ │ ├── request.xml │ │ ├── response.xml │ │ └── name.xsd │ ├── Dummy__should_handle_attributes_in_response │ │ ├── request.json │ │ ├── response.json │ │ ├── request.xml │ │ ├── response.xml │ │ └── name.xsd │ ├── Dummy__should_handle_cdata_xml_in_response │ │ ├── request.json │ │ ├── request.xml │ │ ├── response.json │ │ ├── response.xml │ │ └── name.xsd │ ├── login__attributes_in_request_should_be_handled │ │ ├── request.json │ │ ├── request.xml │ │ └── response.json │ ├── get__complex_extension_without_explicit_namespace │ │ ├── request.json │ │ ├── request.xml │ │ └── response.json │ ├── get__complex_extension_with_explicit_namespace │ │ ├── request.json │ │ ├── request.xml │ │ └── response.json │ ├── UpdateProfile__correct_namespaces_for_elements_with_base │ │ ├── response.json │ │ ├── response.xml │ │ └── request.json │ ├── UpdateProfile__correct_namespaces_in_sequence_with_imports │ │ ├── response.json │ │ ├── response.xml │ │ └── request.xml │ ├── getAvailability__should_not_fail_without_children │ │ ├── request.xml │ │ ├── request.json │ │ └── imported.wsdl │ ├── update__complex_extension_fields_in_parent_without_explicit_namespace │ │ ├── request.json │ │ ├── response.json │ │ ├── response.xml │ │ └── request.xml │ ├── update__complex_extension_with_array_attributes │ │ ├── response.json │ │ └── response.xml │ └── multiCall__rpc_stype_request_xsi_attributes │ │ ├── response.json │ │ └── response.xml ├── certs │ ├── pfk-buffer.pfx │ ├── client-password.pfx │ ├── server-password.pfx │ └── agent2-cert-with-extra-data.pem ├── security │ ├── BearerSecurity.js │ └── BasicAuthSecurity.js ├── doc-lit-part-err-returned-test.js ├── soap-failure.xml └── client-attachment-test.js ├── .npmrc ├── .github ├── codeql │ └── codeql-config.yaml ├── PULL_REQUEST_TEMPLATE.md ├── ISSUE_TEMPLATE.md └── stale.yml ├── docs.json ├── .npmignore ├── .husky └── commit-msg ├── renovate.json ├── .gitignore ├── .babelrc ├── CODEOWNERS ├── src ├── parser │ ├── index.js │ ├── xsd │ │ ├── key.js │ │ ├── any.js │ │ ├── unique.js │ │ ├── import.js │ │ ├── include.js │ │ ├── anyAttribute.js │ │ ├── all.js │ │ ├── annotation.js │ │ ├── documentation.js │ │ ├── choice.js │ │ ├── sequence.js │ │ ├── simpleContent.js │ │ ├── keyref.js │ │ └── group.js │ ├── wsdl │ │ ├── input.js │ │ ├── output.js │ │ ├── import.js │ │ ├── fault.js │ │ ├── documentation.js │ │ ├── wsdlElement.js │ │ └── port.js │ ├── soap12 │ │ ├── body.js │ │ ├── fault.js │ │ ├── headerFault.js │ │ ├── header.js │ │ └── soapElement.js │ ├── soap │ │ ├── body.js │ │ ├── fault.js │ │ ├── headerFault.js │ │ ├── soapElement.js │ │ └── header.js │ └── xsd.js ├── globalize.js ├── security │ ├── BearerSecurity.js │ ├── security.js │ ├── BasicAuthSecurity.js │ ├── index.js │ ├── CookieSecurity.js │ └── NTLMSecurity.js └── strip-bom.js ├── .travis.yml ├── .editorconfig ├── SECURITY.md ├── commitlint.config.js ├── .jshintrc ├── index.js └── example ├── xsds.js └── stockquote.js /test/wsdl/bad.txt: -------------------------------------------------------------------------------- 1 | I'm a jpeg. 2 | -------------------------------------------------------------------------------- /test/mocha.opts: -------------------------------------------------------------------------------- 1 | -R spec 2 | -u exports 3 | -r should 4 | -------------------------------------------------------------------------------- /.npmrc: -------------------------------------------------------------------------------- 1 | package-lock=true 2 | scripts-prepend-node-path=true 3 | -------------------------------------------------------------------------------- /.github/codeql/codeql-config.yaml: -------------------------------------------------------------------------------- 1 | paths-ignore: 2 | - test 3 | -------------------------------------------------------------------------------- /docs.json: -------------------------------------------------------------------------------- 1 | { 2 | "content": [ 3 | "README.md" 4 | ] 5 | } 6 | -------------------------------------------------------------------------------- /test/request-response-samples/GetNodes__complex_self_referencing/request.json: -------------------------------------------------------------------------------- 1 | { } -------------------------------------------------------------------------------- /test/request-response-samples/Dummy__should_handle_null_args/request.json: -------------------------------------------------------------------------------- 1 | { 2 | } 3 | -------------------------------------------------------------------------------- /test/request-response-samples/RequestHeaders__propogate_custom_header/response.json: -------------------------------------------------------------------------------- 1 | null -------------------------------------------------------------------------------- /test/request-response-samples/RequestHeaders__omit_element_when_empty/response.json: -------------------------------------------------------------------------------- 1 | null 2 | -------------------------------------------------------------------------------- /test/request-response-samples/RequestHeaders__propogate_basic_security/response.json: -------------------------------------------------------------------------------- 1 | null 2 | -------------------------------------------------------------------------------- /test/request-response-samples/ResponseHeaders__return_soap_headers/response.json: -------------------------------------------------------------------------------- 1 | null 2 | -------------------------------------------------------------------------------- /test/request-response-samples/addPets__force_namespaces/response.json: -------------------------------------------------------------------------------- 1 | {"status":"OK"} 2 | -------------------------------------------------------------------------------- /test/request-response-samples/Dummy__should_return_array_despite_maxOccurs_1/request.json: -------------------------------------------------------------------------------- 1 | { 2 | } 3 | -------------------------------------------------------------------------------- /test/request-response-samples/Dummy__should_return_object_when_maxOccurs_1/request.json: -------------------------------------------------------------------------------- 1 | { 2 | } 3 | -------------------------------------------------------------------------------- /test/request-response-samples/administrate__Complex_json_object_namespace_issue/response.json: -------------------------------------------------------------------------------- 1 | null 2 | -------------------------------------------------------------------------------- /test/certs/pfk-buffer.pfx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/loopbackio/strong-soap/HEAD/test/certs/pfk-buffer.pfx -------------------------------------------------------------------------------- /test/request-response-samples/RequestHeaders__propogate_basic_security_no_timestamp/response.json: -------------------------------------------------------------------------------- 1 | null 2 | -------------------------------------------------------------------------------- /.npmignore: -------------------------------------------------------------------------------- 1 | /test/ 2 | .idea 3 | test 4 | .travis.yml 5 | coverage 6 | .nyc_output 7 | .github 8 | .vscode 9 | -------------------------------------------------------------------------------- /test/request-response-samples/DefaultNamespace__no_xmlns_prefix_used_for_default_namespace/response.json: -------------------------------------------------------------------------------- 1 | null 2 | -------------------------------------------------------------------------------- /test/request-response-samples/RequestHeaders__propogate_basic_security_invalid_options/response.json: -------------------------------------------------------------------------------- 1 | null 2 | -------------------------------------------------------------------------------- /test/request-response-samples/RequestHeaders__propogate_basic_security_no_token_created/response.json: -------------------------------------------------------------------------------- 1 | null 2 | -------------------------------------------------------------------------------- /.husky/commit-msg: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | . "$(dirname "$0")/_/husky.sh" 3 | 4 | npx --no-install commitlint --edit "$1" 5 | -------------------------------------------------------------------------------- /renovate.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": [ 3 | "github>loopbackio/cicd//shared-configs/renovate/base" 4 | ] 5 | } 6 | -------------------------------------------------------------------------------- /test/certs/client-password.pfx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/loopbackio/strong-soap/HEAD/test/certs/client-password.pfx -------------------------------------------------------------------------------- /test/certs/server-password.pfx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/loopbackio/strong-soap/HEAD/test/certs/server-password.pfx -------------------------------------------------------------------------------- /test/request-response-samples/Dummy__should_ignore_defined_namespaces/wsdl_options.json: -------------------------------------------------------------------------------- 1 | { 2 | "valueKey": "$value" 3 | } -------------------------------------------------------------------------------- /test/request-response-samples/NoParams__add_correct_namespace_for_operations_without_parameters/request.json: -------------------------------------------------------------------------------- 1 | { 2 | } 3 | -------------------------------------------------------------------------------- /test/request-response-samples/RequestHeaders__propogate_basic_security backward compatible check/response.json: -------------------------------------------------------------------------------- 1 | null 2 | -------------------------------------------------------------------------------- /test/request-response-samples/RequestHeaders__omit_element_when_empty/request.json: -------------------------------------------------------------------------------- 1 | { 2 | "Request":{ 3 | 4 | } 5 | } -------------------------------------------------------------------------------- /test/request-response-samples/RequestHeaders__propogate_custom_header/request.json: -------------------------------------------------------------------------------- 1 | { 2 | "Request":{ 3 | 4 | } 5 | } -------------------------------------------------------------------------------- /test/request-response-samples/ResponseHeaders__return_soap_headers/request.json: -------------------------------------------------------------------------------- 1 | { 2 | "Request":{ 3 | 4 | } 5 | } -------------------------------------------------------------------------------- /test/request-response-samples/ResponseHeaders__return_soap_headers/responseSoapHeader.json: -------------------------------------------------------------------------------- 1 | { 2 | "SomeToken": "abcdefg" 3 | } 4 | -------------------------------------------------------------------------------- /test/request-response-samples/Dummy__should_handle_nil/response.json: -------------------------------------------------------------------------------- 1 | { 2 | "DummyResult": { 3 | "DummyList": null 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /test/request-response-samples/Message__Messages_suffixed_with_In_Out/response.json: -------------------------------------------------------------------------------- 1 | { 2 | "return":"-1", 3 | "bstrError":null 4 | } 5 | -------------------------------------------------------------------------------- /test/request-response-samples/Message__overriding_namespace_prefix/response.json: -------------------------------------------------------------------------------- 1 | { 2 | "return":"-1", 3 | "bstrError":null 4 | } 5 | -------------------------------------------------------------------------------- /test/request-response-samples/OneWay__should_handle_one_way_operation/request.json: -------------------------------------------------------------------------------- 1 | { 2 | "OneWayField": "never coming back" 3 | } 4 | -------------------------------------------------------------------------------- /test/request-response-samples/RequestHeaders__propogate_basic_security/request.json: -------------------------------------------------------------------------------- 1 | { 2 | "Request":{ 3 | 4 | } 5 | } -------------------------------------------------------------------------------- /test/request-response-samples/addList__qualified_attrs/response.json: -------------------------------------------------------------------------------- 1 | { "$attributes": { "discriptor": "d2" }, "record": ["r1", "r2"] } 2 | -------------------------------------------------------------------------------- /test/request-response-samples/SendCDATA__cdata_is_handled_correctly/response.json: -------------------------------------------------------------------------------- 1 | { 2 | "TestResult":"Hello World! & Hello Me!" 3 | } 4 | -------------------------------------------------------------------------------- /test/request-response-samples/Message__MessageResponses_suffixed_with_.Out/response.json: -------------------------------------------------------------------------------- 1 | { 2 | "return":"-1", 3 | "bstrError":null 4 | } 5 | -------------------------------------------------------------------------------- /test/request-response-samples/Message__MessageResponses_suffixed_with_.Output/response.json: -------------------------------------------------------------------------------- 1 | { 2 | "return":"-1", 3 | "bstrError":null 4 | } 5 | -------------------------------------------------------------------------------- /test/request-response-samples/Message__Messages_suffixed_with_Input_Output/response.json: -------------------------------------------------------------------------------- 1 | { 2 | "return":"-1", 3 | "bstrError":null 4 | } 5 | -------------------------------------------------------------------------------- /test/request-response-samples/Message__Messages_suffixed_with_Request_Response/response.json: -------------------------------------------------------------------------------- 1 | { 2 | "return":"-1", 3 | "bstrError":null 4 | } 5 | -------------------------------------------------------------------------------- /test/request-response-samples/RequestHeaders__propogate_basic_security_no_timestamp/request.json: -------------------------------------------------------------------------------- 1 | { 2 | "Request":{ 3 | 4 | } 5 | } -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | npm-debug.log 3 | coverage 4 | .nyc_output 5 | lib 6 | .idea 7 | *.iml 8 | .vscode 9 | .eslintrc 10 | .DS_Store 11 | -------------------------------------------------------------------------------- /test/request-response-samples/Message__MessageResponses_suffixed_with_.Response/response.json: -------------------------------------------------------------------------------- 1 | { 2 | "return":"-1", 3 | "bstrError":null 4 | } 5 | -------------------------------------------------------------------------------- /test/request-response-samples/RequestHeaders__propogate_basic_security_invalid_options/request.json: -------------------------------------------------------------------------------- 1 | { 2 | "Request":{ 3 | 4 | } 5 | } -------------------------------------------------------------------------------- /test/request-response-samples/RequestHeaders__propogate_basic_security_no_token_created/request.json: -------------------------------------------------------------------------------- 1 | { 2 | "Request":{ 3 | 4 | } 5 | } -------------------------------------------------------------------------------- /test/request-response-samples/ResponseHeaders__return_soap_headers/header.json: -------------------------------------------------------------------------------- 1 | { 2 | "header1": { 3 | "headerContent": "value1" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /test/request-response-samples/login__attributes_namespace_should_be_configurable/wsdl_options.json: -------------------------------------------------------------------------------- 1 | { 2 | "attributesKey": "$thisIsAttributesKey" 3 | } -------------------------------------------------------------------------------- /test/request-response-samples/DefaultNamespace__no_xmlns_prefix_used_for_default_namespace/request.json: -------------------------------------------------------------------------------- 1 | { 2 | "Request": { 3 | 4 | } 5 | } -------------------------------------------------------------------------------- /test/request-response-samples/Message__Messages_suffixed_with_In_Out/request.json: -------------------------------------------------------------------------------- 1 | { 2 | "bstrResourceId": "034b7ea5-8a04-11e3-9710-0050569575d8" 3 | } 4 | -------------------------------------------------------------------------------- /test/request-response-samples/Message__overriding_namespace_prefix/request.json: -------------------------------------------------------------------------------- 1 | { 2 | "s1:bstrResourceId": "034b7ea5-8a04-11e3-9710-0050569575d8" 3 | } 4 | -------------------------------------------------------------------------------- /test/request-response-samples/RequestHeaders__propogate_custom_header/header.json: -------------------------------------------------------------------------------- 1 | { 2 | "header1": { 3 | "headerContent": "value1" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /test/request-response-samples/addPets__force_namespaces/request.json: -------------------------------------------------------------------------------- 1 | { 2 | "pet": [ 3 | { "Name": "Max" }, 4 | { "Name": "dillon" } 5 | ] 6 | } -------------------------------------------------------------------------------- /test/request-response-samples/Message__MessageResponses_suffixed_with_.Out/request.json: -------------------------------------------------------------------------------- 1 | { 2 | "bstrResourceId": "034b7ea5-8a04-11e3-9710-0050569575d8" 3 | } 4 | -------------------------------------------------------------------------------- /test/request-response-samples/Message__Messages_suffixed_with_Input_Output/request.json: -------------------------------------------------------------------------------- 1 | { 2 | "bstrResourceId": "034b7ea5-8a04-11e3-9710-0050569575d8" 3 | } 4 | -------------------------------------------------------------------------------- /test/request-response-samples/RequestHeaders__propogate_basic_security backward compatible check/request.json: -------------------------------------------------------------------------------- 1 | { 2 | "Request":{ 3 | 4 | } 5 | } -------------------------------------------------------------------------------- /test/wsdl/doc-lit-part-error/testni.xsd: -------------------------------------------------------------------------------- 1 | 3 | 4 | -------------------------------------------------------------------------------- /test/request-response-samples/Dummy__should_ignore_custom_defined_namespaces/options.json: -------------------------------------------------------------------------------- 1 | { 2 | "namespaces": ["someIgnoredNamespace"], 3 | "override": false 4 | } -------------------------------------------------------------------------------- /test/request-response-samples/Message__MessageResponses_suffixed_with_.Output/request.json: -------------------------------------------------------------------------------- 1 | { 2 | "bstrResourceId": "034b7ea5-8a04-11e3-9710-0050569575d8" 3 | } 4 | -------------------------------------------------------------------------------- /test/request-response-samples/Message__MessageResponses_suffixed_with_.Response/request.json: -------------------------------------------------------------------------------- 1 | { 2 | "bstrResourceId": "034b7ea5-8a04-11e3-9710-0050569575d8" 3 | } 4 | -------------------------------------------------------------------------------- /test/request-response-samples/Message__Messages_suffixed_with_Request_Response/request.json: -------------------------------------------------------------------------------- 1 | { 2 | "bstrResourceId": "034b7ea5-8a04-11e3-9710-0050569575d8" 3 | } 4 | -------------------------------------------------------------------------------- /test/request-response-samples/addList__qualified_attrs/request.json: -------------------------------------------------------------------------------- 1 | { 2 | "record": ["r1", "r2"], 3 | "$attributes": { 4 | "discriptor": "d1" 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /test/request-response-samples/readMetadata__should_respect_xsi_type_attribute/request.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "CustomObject", 3 | "fullNames": "Opportunity" 4 | } 5 | -------------------------------------------------------------------------------- /test/request-response-samples/Dummy__ref_element_should_has_correct_namespace/response.json: -------------------------------------------------------------------------------- 1 | { 2 | "Result": { 3 | "Status": 200, 4 | "Message": "OK" 5 | } 6 | } -------------------------------------------------------------------------------- /test/request-response-samples/UpdateProfile__correct_namespaces_for_elements_with_base_ignorednamespaces/wsdl_options.json: -------------------------------------------------------------------------------- 1 | { 2 | "ignoreBaseNameSpaces": true 3 | } 4 | -------------------------------------------------------------------------------- /test/request-response-samples/execFile__valid_xml_generated_on_request_with_complex_type_element_form_default_missing/response.json: -------------------------------------------------------------------------------- 1 | {"result":{"base64EncodedStdOut":"qw"}} -------------------------------------------------------------------------------- /test/request-response-samples/execFile__valid_xml_generated_on_request_with_complex_type_element_form_default_qualified/response.json: -------------------------------------------------------------------------------- 1 | {"result":{"base64EncodedStdOut":"qw"}} -------------------------------------------------------------------------------- /test/request-response-samples/Login__unsupported_response_name_returned_and_local_xs_schema_missed/request.json: -------------------------------------------------------------------------------- 1 | { 2 | "UserAlias": "test", 3 | "Password": "testik" 4 | } -------------------------------------------------------------------------------- /test/request-response-samples/RequestHeaders__propogate_basic_security/security.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "ws", 3 | "username": "basicuser", 4 | "password": "basicpass" 5 | } 6 | -------------------------------------------------------------------------------- /test/request-response-samples/execFile__valid_xml_generated_on_request_with_complex_type_element_form_default_unqualified/response.json: -------------------------------------------------------------------------------- 1 | {"result":{"base64EncodedStdOut":"qw"}} -------------------------------------------------------------------------------- /test/request-response-samples/SendCDATA__cdata_is_handled_correctly/request.json: -------------------------------------------------------------------------------- 1 | { 2 | "TestMessage": { 3 | "message": "" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /test/request-response-samples/UpdateProfile__correct_ns_context/response.json: -------------------------------------------------------------------------------- 1 | { 2 | "Result":{ 3 | "$attributes": { 4 | "resultStatusFlag": "SUCCESS" 5 | } 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /test/request-response-samples/createData__should_generate_complex_type_request/response.json: -------------------------------------------------------------------------------- 1 | { 2 | "StandardResponse":{ 3 | "$attributes":{"RecordID":"1000027"} 4 | } 5 | 6 | } 7 | -------------------------------------------------------------------------------- /test/request-response-samples/Dummy__should_work_with_imported_schemas/request.json: -------------------------------------------------------------------------------- 1 | { 2 | "DummyField1": "Humpty", 3 | "DummyFilter": { 4 | "DummyStringFilter": "Dumpty" 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /test/request-response-samples/Dummy__ref_element_should_has_correct_namespace/request.json: -------------------------------------------------------------------------------- 1 | { 2 | "DummyRequest": { 3 | "Order": { 4 | "Id": 1, 5 | "Name": "foo" 6 | } 7 | } 8 | } -------------------------------------------------------------------------------- /test/request-response-samples/Dummy__should_use_defined_xml_key/request.json: -------------------------------------------------------------------------------- 1 | { 2 | "DummyRequest": { 3 | "DummyXML": { 4 | "$xml": "" 5 | } 6 | } 7 | } -------------------------------------------------------------------------------- /test/request-response-samples/login__complex_schema_xmlns_should_be_handled/request.json: -------------------------------------------------------------------------------- 1 | { 2 | "passport":{ 3 | "email":"em", 4 | "password":"pwd", 5 | "account":"acc" 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": [ 3 | [ 4 | "@babel/preset-env", 5 | { 6 | "targets": { 7 | "node": "6.0.0" 8 | } 9 | } 10 | ] 11 | ] 12 | } 13 | -------------------------------------------------------------------------------- /test/request-response-samples/Dummy__should_parse_nil/response.json: -------------------------------------------------------------------------------- 1 | { 2 | "DummyResult": { 3 | "DummyList": { 4 | "DummyElement": [ 5 | null 6 | ] 7 | } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /test/request-response-samples/login__error_returned_should_contain_root_Json_on_fault/request.json: -------------------------------------------------------------------------------- 1 | { 2 | "passport":{ 3 | "email":"em", 4 | "password":"pwd", 5 | "account":"acc" 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /test/request-response-samples/Dummy__should_return_object_when_maxOccurs_1/response.json: -------------------------------------------------------------------------------- 1 | { 2 | "DummyResult": { 3 | "DummyList": { 4 | "DummyElement": "Dummy Element Entry 1" 5 | } 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /test/request-response-samples/GetNodes__complex_self_referencing/wsdl_options.json: -------------------------------------------------------------------------------- 1 | { 2 | "ignoredNamespaces": { 3 | "namespaces": ["targetNamespace", "typedNamespace"], 4 | "override": "true" 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /test/request-response-samples/SetResource__should_correctly_set_element_if_complex-type_has_same_name/request.json: -------------------------------------------------------------------------------- 1 | { 2 | "SetResourceRequest": { 3 | "Resource": { 4 | "Resource": "test" 5 | } 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /test/request-response-samples/login__complex_schema_xmlns_with_array_and_any_type_and_other_types/request.json: -------------------------------------------------------------------------------- 1 | { 2 | "passport":{ 3 | "email":"em", 4 | "password":"pwd", 5 | "account":"acc" 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /test/request-response-samples/SetResource__should_correctly_set_element_if_complex-type_has_same_name/response.json: -------------------------------------------------------------------------------- 1 | { 2 | "Result":{ 3 | "$attributes": { 4 | "resultStatusFlag": "SUCCESS" 5 | } 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /test/request-response-samples/Dummy__should_handle_xml_date_time_dateTime/response.json: -------------------------------------------------------------------------------- 1 | { 2 | "DummyResult": { 3 | "DummyList": { 4 | "DummyElement": [ 5 | null 6 | ] 7 | } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /test/request-response-samples/readMetadata__should_respect_xsi_type_attribute/wsdl_options.json: -------------------------------------------------------------------------------- 1 | { 2 | "ignoredNamespaces": { 3 | "namespaces": ["targetNamespace", "typedNamespace"], 4 | "override": "true" 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /test/request-response-samples/Dummy__should_handle_null_args/response.json: -------------------------------------------------------------------------------- 1 | { 2 | "DummyResult": { 3 | "DummyList": { 4 | "DummyElement": [ 5 | "Dummy Element Entry" 6 | ] 7 | } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /test/request-response-samples/GetAccountXml__non_xmlns_attributes_should_be_returned/request.json: -------------------------------------------------------------------------------- 1 | { 2 | "ResourceID":"234", 3 | "ResourceType":"foo", 4 | "IDType":"more foo", 5 | "TreeID":43, 6 | "PrivateLabelID":34 7 | } 8 | -------------------------------------------------------------------------------- /test/request-response-samples/RequestHeaders__propogate_basic_security backward compatible check/security.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "ws", 3 | "username": "basicuser", 4 | "password": "basicpass", 5 | "options": "PasswordText" 6 | } 7 | -------------------------------------------------------------------------------- /test/request-response-samples/GetAccountXml__non_xmlns_attributes_should_be_returned/wsdl_options.json: -------------------------------------------------------------------------------- 1 | { 2 | "ignoredNamespaces": { 3 | "namespaces": ["targetNamespace", "typedNamespace"], 4 | "override": "true" 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /test/request-response-samples/Dummy__should_handle_null_args/request.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /test/request-response-samples/GetItemInformation__should_ignore_default_namespace_from_schema/response.json: -------------------------------------------------------------------------------- 1 | { 2 | "Items": { 3 | "Item": { 4 | "ItemNumber": "1234", 5 | "RequestedQuantity": { 6 | "Value": "1.00" 7 | } 8 | } 9 | } 10 | } -------------------------------------------------------------------------------- /test/request-response-samples/RequestHeaders__propogate_basic_security_no_timestamp/security.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "ws", 3 | "username": "basicuser", 4 | "password": "basicpass", 5 | "options": { 6 | "hasTimeStamp": false 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /test/request-response-samples/Dummy__should_add_prefix_for_unqualified_global_elements/response.json: -------------------------------------------------------------------------------- 1 | { 2 | "DummyResult": { 3 | "DummyList": { 4 | "DummyElement": [ 5 | "Dummy Element Entry" 6 | ] 7 | } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /test/request-response-samples/GetItemInformation__should_ignore_default_namespace_from_schema/request.json: -------------------------------------------------------------------------------- 1 | { 2 | "Items": { 3 | "Item": [{ 4 | "ItemNumber": "1234", 5 | "RequestedQuantity": { 6 | "Value": "1.00" 7 | } 8 | }] 9 | } 10 | } -------------------------------------------------------------------------------- /test/request-response-samples/RequestHeaders__propogate_basic_security_no_token_created/security.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "ws", 3 | "username": "basicuser", 4 | "password": "basicpass", 5 | "options": { 6 | "hasTokenCreated": false 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /test/request-response-samples/addList__xsi_type/request.json: -------------------------------------------------------------------------------- 1 | { 2 | "record": [ 3 | { 4 | "id": "1", 5 | "name": "John", 6 | "$attributes": { 7 | "$xsiType": "{urn:example}NameRecord" 8 | } 9 | } 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /test/request-response-samples/Dummy__should_parse_nil/request.json: -------------------------------------------------------------------------------- 1 | { 2 | "DummyRequest": { 3 | "DummyField1": "Humpty", 4 | "DummyFilter": { 5 | "DummyStringFilter": null, 6 | "DummyDateFilter": null 7 | } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /test/request-response-samples/Dummy__should_return_array_despite_maxOccurs_1/request.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /test/request-response-samples/Dummy__should_return_object_when_maxOccurs_1/request.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /test/request-response-samples/RequestHeaders__omit_element_when_empty/response.xml: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test/request-response-samples/RequestHeaders__propogate_basic_security/response.xml: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test/request-response-samples/RequestHeaders__propogate_custom_header/response.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /test/request-response-samples/RequestHeaders__propogate_basic_security_no_timestamp/response.xml: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test/request-response-samples/RequestHeaders__propogate_basic_security_invalid_options/response.xml: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test/request-response-samples/RequestHeaders__propogate_basic_security_no_token_created/response.xml: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test/request-response-samples/addList__xsi_type/response.json: -------------------------------------------------------------------------------- 1 | { 2 | "record": [ 3 | { 4 | "$attributes": { 5 | "$xsiType": { "type": "UserRecord", "xmlns": "urn:example" } 6 | }, 7 | "id": "2", 8 | "name": "Mary" 9 | } 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /test/request-response-samples/execFile__valid_xml_generated_on_request_with_complex_type_element_form_default_missing/request.json: -------------------------------------------------------------------------------- 1 | { 2 | "execFileParams": { 3 | "fileName": "PSTN", 4 | "arguments": "0", 5 | "base64EncodedStdIn": "null", 6 | "startDetached": "true" 7 | } 8 | } -------------------------------------------------------------------------------- /test/request-response-samples/DefaultNamespace__no_xmlns_prefix_used_for_default_namespace/response.xml: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test/request-response-samples/execFile__valid_xml_generated_on_request_with_complex_type_element_form_default_qualified/request.json: -------------------------------------------------------------------------------- 1 | { 2 | "execFileParams": { 3 | "fileName": "PSTN", 4 | "arguments": "0", 5 | "base64EncodedStdIn": "null", 6 | "startDetached": "true" 7 | } 8 | } -------------------------------------------------------------------------------- /test/request-response-samples/execFile__valid_xml_generated_on_request_with_complex_type_element_form_default_unqualified/request.json: -------------------------------------------------------------------------------- 1 | { 2 | "execFileParams": { 3 | "fileName": "PSTN", 4 | "arguments": "0", 5 | "base64EncodedStdIn": "null", 6 | "startDetached": "true" 7 | } 8 | } -------------------------------------------------------------------------------- /test/request-response-samples/RequestHeaders__propogate_basic_security backward compatible check/response.xml: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test/request-response-samples/ResponseHeaders__return_soap_headers/response.xml: -------------------------------------------------------------------------------- 1 | abcdefg 2 | -------------------------------------------------------------------------------- /CODEOWNERS: -------------------------------------------------------------------------------- 1 | # Lines starting with '#' are comments. 2 | # Each line is a file pattern followed by one or more owners, 3 | # the last matching pattern has the most precendence. 4 | 5 | # Alumni members 6 | # @b-admike @deepakrkris @jannyHou 7 | 8 | # Core team members 9 | * @raymondfeng @achrinza 10 | -------------------------------------------------------------------------------- /test/request-response-samples/RequestHeaders__omit_element_when_empty/request.xml: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test/request-response-samples/RequestHeaders__propogate_basic_security_invalid_options/security.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "ws", 3 | "username": "basicuser", 4 | "password": "basicpass", 5 | "options": { 6 | "passwordType": "invalid", 7 | "hasTimeStamp": "" 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /test/request-response-samples/Dummy__should_return_array_despite_maxOccurs_1/response.json: -------------------------------------------------------------------------------- 1 | { 2 | "DummyResult": { 3 | "DummyList": { 4 | "DummyElement": [ 5 | "Dummy Element Entry 1", 6 | "Dummy Element Entry 2", 7 | "Dummy Element Entry 3" 8 | ] 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /test/request-response-samples/Dummy__should_handle_nil/request.json: -------------------------------------------------------------------------------- 1 | { 2 | "DummyRequest": { 3 | "DummyField1": { 4 | "$value": "Humpty", 5 | "$attributes": { 6 | "language": "en-US" 7 | } 8 | }, 9 | "DummyFilter": { 10 | "DummyStringFilter": "Dumpty" 11 | } 12 | } 13 | } -------------------------------------------------------------------------------- /test/request-response-samples/GetNodes__complex_self_referencing/request.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /test/request-response-samples/administrate__Complex_json_object_namespace_issue/request.json: -------------------------------------------------------------------------------- 1 | { 2 | "Administrate": { 3 | "AdminOperation": { 4 | "CreateUser": { 5 | "User": { 6 | "Name": "name", 7 | "Password": "password" 8 | }, 9 | "IgnoreDup": "" 10 | } 11 | } 12 | } 13 | } -------------------------------------------------------------------------------- /test/request-response-samples/Dummy__should_use_defined_value_key/request.json: -------------------------------------------------------------------------------- 1 | { 2 | "DummyRequest": { 3 | "DummyField1": "Humpty", 4 | "DummyFilter": { 5 | "DummyStringFilter": "Dumpty" 6 | }, 7 | "DummyAccount": { 8 | "DummyName": "Dummy", 9 | "DummyPassword": "1234" 10 | } 11 | } 12 | } -------------------------------------------------------------------------------- /test/request-response-samples/DefaultNamespace__no_xmlns_prefix_used_for_default_namespace/request.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /test/request-response-samples/Dummy__should_extract_envelope_from_response/request.json: -------------------------------------------------------------------------------- 1 | { 2 | "DummyRequest": { 3 | "DummyField1": { 4 | "$value": "Humpty", 5 | "$attributes": { 6 | "language": "en-US" 7 | } 8 | }, 9 | "DummyFilter": { 10 | "DummyStringFilter": "Dumpty" 11 | } 12 | } 13 | } -------------------------------------------------------------------------------- /test/request-response-samples/Dummy__should_handle_attributes_in_request/request.json: -------------------------------------------------------------------------------- 1 | { 2 | "DummyRequest": { 3 | "DummyField1": { 4 | "$value": "Humpty", 5 | "$attributes": { 6 | "language": "en-US" 7 | } 8 | }, 9 | "DummyFilter": { 10 | "DummyStringFilter": "Dumpty" 11 | } 12 | } 13 | } -------------------------------------------------------------------------------- /test/request-response-samples/Dummy__should_handle_attributes_in_response/request.json: -------------------------------------------------------------------------------- 1 | { 2 | "DummyRequest": { 3 | "DummyField1": { 4 | "$value": "Humpty", 5 | "$attributes": { 6 | "language": "en-US" 7 | } 8 | }, 9 | "DummyFilter": { 10 | "DummyStringFilter": "Dumpty" 11 | } 12 | } 13 | } -------------------------------------------------------------------------------- /test/request-response-samples/Dummy__should_handle_cdata_xml_in_response/request.json: -------------------------------------------------------------------------------- 1 | { 2 | "DummyRequest": { 3 | "DummyField1": { 4 | "$value": "Humpty", 5 | "$attributes": { 6 | "language": "en-US" 7 | } 8 | }, 9 | "DummyFilter": { 10 | "DummyStringFilter": "Dumpty" 11 | } 12 | } 13 | } -------------------------------------------------------------------------------- /test/request-response-samples/Dummy__should_ignore_defined_namespaces/request.json: -------------------------------------------------------------------------------- 1 | { 2 | "DummyRequest": { 3 | "DummyField1": "Humpty", 4 | "DummyFilter": { 5 | "DummyStringFilter": "Dumpty" 6 | }, 7 | "DummyAccount": { 8 | "DummyName": "Dummy", 9 | "DummyPassword": "1234" 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /test/request-response-samples/login__attributes_in_request_should_be_handled/request.json: -------------------------------------------------------------------------------- 1 | { 2 | "passport":{ 3 | "email":"em", 4 | "password":"pwd", 5 | "account":"acc", 6 | "role": { 7 | "$attributes": { 8 | "internalId": "3", 9 | "externalId": "2" 10 | } 11 | } 12 | } 13 | } -------------------------------------------------------------------------------- /test/request-response-samples/Dummy__should_ignore_custom_defined_namespaces/request.json: -------------------------------------------------------------------------------- 1 | { 2 | "DummyRequest": { 3 | "DummyField1": "Humpty", 4 | "DummyFilter": { 5 | "DummyStringFilter": "Dumpty" 6 | }, 7 | "DummyAccount": { 8 | "DummyName": "Dummy", 9 | "DummyPassword": "1234" 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /test/request-response-samples/GetNodes__complex_self_referencing/response.json: -------------------------------------------------------------------------------- 1 | { 2 | "GetNodesResult": { 3 | "Name": "Parent", 4 | "Children": { 5 | "Node": [ 6 | {"Name":"Child1","Children": null}, 7 | {"Name":"Child2","Children": null} 8 | ]} 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /test/request-response-samples/SetResource__should_correctly_set_element_if_complex-type_has_same_name/response.xml: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test/request-response-samples/administrate__Complex_json_object_namespace_issue/response.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /test/request-response-samples/Dummy__should_add_prefix_for_unqualified_global_elements/request.json: -------------------------------------------------------------------------------- 1 | { 2 | "DummyRequest": { 3 | "DummyField1": { 4 | "$value": "Humpty", 5 | "$attributes": { 6 | "language": "en-US" 7 | } 8 | }, 9 | "DummyFilter": { 10 | "DummyStringFilter": "Dumpty" 11 | } 12 | } 13 | } -------------------------------------------------------------------------------- /test/request-response-samples/Dummy__should_use_defined_value_key/response.json: -------------------------------------------------------------------------------- 1 | { 2 | "DummyResult": { 3 | "DummyList": { 4 | "DummyElement": [ 5 | { 6 | "$attributes": { 7 | "language": "en-US" 8 | }, 9 | "$value": "Dummy Element Entry" 10 | } 11 | ] 12 | } 13 | } 14 | } -------------------------------------------------------------------------------- /test/request-response-samples/Dummy__should_use_defined_xml_key/response.json: -------------------------------------------------------------------------------- 1 | { 2 | "DummyResult": { 3 | "DummyList": { 4 | "DummyElement": [ 5 | { 6 | "$attributes": { 7 | "language": "en-US" 8 | }, 9 | "$value": "Dummy Element Entry" 10 | } 11 | ] 12 | } 13 | } 14 | } -------------------------------------------------------------------------------- /test/request-response-samples/login__attributes_namespace_should_be_configurable/request.json: -------------------------------------------------------------------------------- 1 | { 2 | "passport":{ 3 | "email":"em", 4 | "password":"pwd", 5 | "account":"acc", 6 | "role": { 7 | "$thisIsAttributesKey": { 8 | "externalId": "2", 9 | "internalId": "3" 10 | } 11 | } 12 | } 13 | } -------------------------------------------------------------------------------- /test/wsdl/typeref/request.json: -------------------------------------------------------------------------------- 1 | { 2 | "orderRq": { 3 | "itemRq": { 4 | "ecomRq": { 5 | "rqUID": "001" 6 | }, 7 | "item": { 8 | "qty": 100, 9 | "itemId": "item01" 10 | }, 11 | "backupItem": { 12 | "qty": 50, 13 | "itemId": "item02" 14 | } 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /test/request-response-samples/Dummy__should_ignore_defined_namespaces/response.json: -------------------------------------------------------------------------------- 1 | { 2 | "DummyResult": { 3 | "DummyList": { 4 | "DummyElement": [ 5 | { 6 | "$attributes": { 7 | "language": "en-US" 8 | }, 9 | "$value": "Dummy Element Entry" 10 | } 11 | ] 12 | } 13 | } 14 | } -------------------------------------------------------------------------------- /test/request-response-samples/addPets__force_namespaces/response.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | OK 6 | 7 | 8 | -------------------------------------------------------------------------------- /test/request-response-samples/get__complex_extension_without_explicit_namespace/request.json: -------------------------------------------------------------------------------- 1 | { 2 | "baseRef":{ 3 | "$attributes":{ 4 | "type":"contact", 5 | "internalId":"42", 6 | "$xsiType":{ 7 | "type":"RecordRef", 8 | "xmlns":"urn:core_2011_1.platform.webservices.netsuite.com" 9 | } 10 | } 11 | } 12 | } -------------------------------------------------------------------------------- /test/request-response-samples/Dummy__should_extract_envelope_from_response/response.json: -------------------------------------------------------------------------------- 1 | { 2 | "DummyResult": { 3 | "DummyList": { 4 | "DummyElement": [ 5 | { 6 | "$attributes": { 7 | "language": "en-US" 8 | }, 9 | "$value": "Dummy Element Entry" 10 | } 11 | ] 12 | } 13 | } 14 | } -------------------------------------------------------------------------------- /test/request-response-samples/Dummy__should_handle_attributes_in_request/response.json: -------------------------------------------------------------------------------- 1 | { 2 | "DummyResult": { 3 | "DummyList": { 4 | "DummyElement": [ 5 | { 6 | "$attributes": { 7 | "language": "en-US" 8 | }, 9 | "$value": "Dummy Element Entry" 10 | } 11 | ] 12 | } 13 | } 14 | } -------------------------------------------------------------------------------- /test/request-response-samples/Dummy__should_handle_attributes_in_response/response.json: -------------------------------------------------------------------------------- 1 | { 2 | "DummyResult": { 3 | "DummyList": { 4 | "DummyElement": [ 5 | { 6 | "$attributes": { 7 | "language": "en-US" 8 | }, 9 | "$value": "Dummy Element Entry" 10 | } 11 | ] 12 | } 13 | } 14 | } -------------------------------------------------------------------------------- /test/request-response-samples/Dummy__should_ignore_custom_defined_namespaces/response.json: -------------------------------------------------------------------------------- 1 | { 2 | "DummyResult": { 3 | "DummyList": { 4 | "DummyElement": [ 5 | { 6 | "$attributes": { 7 | "language": "en-US" 8 | }, 9 | "$value": "Dummy Element Entry" 10 | } 11 | ] 12 | } 13 | } 14 | } -------------------------------------------------------------------------------- /test/request-response-samples/addPets__force_namespaces/wsdl_options.json: -------------------------------------------------------------------------------- 1 | { 2 | "overrideRootElement": { 3 | "namespace": "xmlns:tns", 4 | "xmlnsAttributes": [{ 5 | "name": "xmlns:ns2", 6 | "value": "http://tempuri.org/" 7 | }, { 8 | "name": "xmlns:ns3", 9 | "value": "http://sillypets.com/xsd" 10 | }] 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /test/request-response-samples/addList__qualified_attrs/request.xml: -------------------------------------------------------------------------------- 1 | r1r2 -------------------------------------------------------------------------------- /test/request-response-samples/RequestHeaders__propogate_custom_header/request.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | value1 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /test/request-response-samples/ResponseHeaders__return_soap_headers/request.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | value1 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /test/request-response-samples/get__complex_extension_with_explicit_namespace/request.json: -------------------------------------------------------------------------------- 1 | { 2 | "baseRef":{ 3 | "$attributes":{ 4 | "type":"contact", 5 | "internalId":"42", 6 | "$xsiType":{ 7 | "type":"RecordRef", 8 | "xmlns":"urn:core_2011_1.platform.webservices.netsuite.com", 9 | "namespace":"platformCore" 10 | } 11 | } 12 | } 13 | } -------------------------------------------------------------------------------- /test/request-response-samples/Message__MessageResponses_suffixed_with_.Out/response.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -1 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /test/request-response-samples/Message__Messages_suffixed_with_In_Out/response.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -1 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /test/request-response-samples/Message__overriding_namespace_prefix/response.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -1 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /test/request-response-samples/Message__MessageResponses_suffixed_with_.Output/response.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -1 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /test/request-response-samples/Message__Messages_suffixed_with_Input_Output/response.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -1 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /test/request-response-samples/Message__Messages_suffixed_with_Request_Response/response.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -1 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /test/request-response-samples/UpdateProfile__correct_ns_context/response.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /src/parser/index.js: -------------------------------------------------------------------------------- 1 | // Copyright IBM Corp. 2016. All Rights Reserved. 2 | // Node module: strong-soap 3 | // This file is licensed under the MIT License. 4 | // License text available at https://opensource.org/licenses/MIT 5 | 6 | exports.QName = require('./qname'); 7 | exports.NamespaceContext = require('./nscontext'); 8 | exports.WSDL = require('./wsdl'); 9 | exports.XMLHandler = require('./xmlHandler'); 10 | -------------------------------------------------------------------------------- /test/request-response-samples/Message__MessageResponses_suffixed_with_.Response/response.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -1 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /test/request-response-samples/Message__Messages_suffixed_with_In_Out/request.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 034b7ea5-8a04-11e3-9710-0050569575d8 7 | 8 | 9 | -------------------------------------------------------------------------------- /test/request-response-samples/Message__overriding_namespace_prefix/request.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 034b7ea5-8a04-11e3-9710-0050569575d8 7 | 8 | 9 | -------------------------------------------------------------------------------- /test/request-response-samples/readMetadata__should_respect_xsi_type_attribute/request.xml: -------------------------------------------------------------------------------- 1 | CustomObjectOpportunity -------------------------------------------------------------------------------- /test/request-response-samples/Message__MessageResponses_suffixed_with_.Out/request.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 034b7ea5-8a04-11e3-9710-0050569575d8 7 | 8 | 9 | -------------------------------------------------------------------------------- /test/request-response-samples/Message__Messages_suffixed_with_Input_Output/request.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 034b7ea5-8a04-11e3-9710-0050569575d8 7 | 8 | 9 | -------------------------------------------------------------------------------- /test/request-response-samples/UpdateProfile__correct_namespaces_for_elements_with_base/response.json: -------------------------------------------------------------------------------- 1 | { 2 | "Result": { 3 | "$attributes": { 4 | "resultStatusFlag": "SUCCESS" 5 | }, 6 | "IDs": { 7 | "UniqueID": [ 8 | { 9 | "$attributes": { 10 | "source": "TESTSOURCE" 11 | }, 12 | "$value": "100" 13 | } 14 | ] 15 | } 16 | } 17 | } -------------------------------------------------------------------------------- /test/request-response-samples/UpdateProfile__correct_namespaces_in_sequence_with_imports/response.json: -------------------------------------------------------------------------------- 1 | { 2 | "Result": { 3 | "$attributes": { 4 | "resultStatusFlag": "SUCCESS" 5 | }, 6 | "IDs": { 7 | "UniqueID": [ 8 | { 9 | "$attributes": { 10 | "source": "TESTSOURCE" 11 | }, 12 | "$value": "100" 13 | } 14 | ] 15 | } 16 | } 17 | } -------------------------------------------------------------------------------- /test/request-response-samples/Message__MessageResponses_suffixed_with_.Output/request.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 034b7ea5-8a04-11e3-9710-0050569575d8 7 | 8 | 9 | -------------------------------------------------------------------------------- /test/request-response-samples/Message__MessageResponses_suffixed_with_.Response/request.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 034b7ea5-8a04-11e3-9710-0050569575d8 7 | 8 | 9 | -------------------------------------------------------------------------------- /test/request-response-samples/Message__Messages_suffixed_with_Request_Response/request.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 034b7ea5-8a04-11e3-9710-0050569575d8 7 | 8 | 9 | -------------------------------------------------------------------------------- /test/request-response-samples/SendCDATA__cdata_is_handled_correctly/request.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /test/request-response-samples/addList__qualified_attrs/response.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | r1 6 | r2 7 | 8 | 9 | -------------------------------------------------------------------------------- /src/globalize.js: -------------------------------------------------------------------------------- 1 | // Copyright IBM Corp. 2016,2017. All Rights Reserved. 2 | // Node module: strong-soap 3 | // This file is licensed under the MIT License. 4 | // License text available at https://opensource.org/licenses/MIT 5 | 6 | 'use strict'; 7 | 8 | var path = require('path'); 9 | var SG = require('strong-globalize'); 10 | 11 | SG.SetRootDir(path.join(__dirname, '..'), {autonomousMsgLoading: 'all'}); 12 | module.exports = SG(); 13 | -------------------------------------------------------------------------------- /test/request-response-samples/Dummy__should_use_defined_xml_key/request.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /test/request-response-samples/UpdateProfile__correct_namespaces_for_elements_with_base_ignorednamespaces/response.json: -------------------------------------------------------------------------------- 1 | { 2 | "Result": { 3 | "$attributes": { 4 | "resultStatusFlag": "SUCCESS" 5 | }, 6 | "IDs": { 7 | "UniqueID": [ 8 | { 9 | "$attributes": { 10 | "source": "TESTSOURCE" 11 | }, 12 | "$value": "100" 13 | } 14 | ] 15 | } 16 | } 17 | } -------------------------------------------------------------------------------- /test/request-response-samples/SetResource__should_correctly_set_element_if_complex-type_has_same_name/request.xml: -------------------------------------------------------------------------------- 1 | test -------------------------------------------------------------------------------- /test/request-response-samples/UpdateProfile__correct_namespaces_for_elements_with_base/response.xml: -------------------------------------------------------------------------------- 1 | 100 -------------------------------------------------------------------------------- /test/request-response-samples/UpdateProfile__correct_namespaces_in_sequence_with_imports/response.xml: -------------------------------------------------------------------------------- 1 | 100 -------------------------------------------------------------------------------- /test/request-response-samples/addList__xsi_type/request.xml: -------------------------------------------------------------------------------- 1 | 1John -------------------------------------------------------------------------------- /test/request-response-samples/Login__unsupported_response_name_returned_and_local_xs_schema_missed/request.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | test 7 | testik 8 | 9 | 10 | -------------------------------------------------------------------------------- /test/request-response-samples/NoParams__add_correct_namespace_for_operations_without_parameters/request.xml: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test/request-response-samples/UpdateProfile__correct_namespaces_for_elements_with_base_ignorednamespaces/response.xml: -------------------------------------------------------------------------------- 1 | 100 -------------------------------------------------------------------------------- /test/request-response-samples/OneWay__should_handle_one_way_operation/request.xml: -------------------------------------------------------------------------------- 1 | never coming back -------------------------------------------------------------------------------- /test/request-response-samples/SendCDATA__cdata_is_handled_correctly/response.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /test/wsdl/xsdinclude/types-without-tns.xsd: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /test/request-response-samples/addPets__force_namespaces/request.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Max 8 | 9 | 10 | dillon 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /src/parser/xsd/key.js: -------------------------------------------------------------------------------- 1 | // Copyright IBM Corp. 2016,2017. All Rights Reserved. 2 | // Node module: strong-soap 3 | // This file is licensed under the MIT License. 4 | // License text available at https://opensource.org/licenses/MIT 5 | 6 | 'use strict'; 7 | 8 | var KeyBase = require('./keybase'); 9 | 10 | class Key extends KeyBase { 11 | constructor(nsName, attrs, options) { 12 | super(nsName, attrs, options); 13 | } 14 | } 15 | 16 | Key.elementName = 'key'; 17 | 18 | module.exports = Key; 19 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | arch: 2 | - arm64 3 | - ppc64le 4 | - s390x 5 | branches: 6 | only: 7 | - master 8 | language: node_js 9 | node_js: 10 | - 10.24.1 11 | - 12.22.12 12 | - 14.21.3 13 | - 16.20.2 14 | before_install: | 15 | NODEJS_VERSION=$(node --version) 16 | if [ 'v10' == ${NODEJS_VERSION%%.*} ] 17 | then 18 | npm install --global npm@7 19 | else 20 | npm install --global npm@8 21 | fi 22 | script: 23 | - npm run --ignore-scripts build 24 | - npm test --ignore-scripts 25 | -------------------------------------------------------------------------------- /src/parser/xsd/any.js: -------------------------------------------------------------------------------- 1 | // Copyright IBM Corp. 2016,2017. All Rights Reserved. 2 | // Node module: strong-soap 3 | // This file is licensed under the MIT License. 4 | // License text available at https://opensource.org/licenses/MIT 5 | 6 | 'use strict'; 7 | 8 | var XSDElement = require('./xsdElement'); 9 | 10 | class Any extends XSDElement { 11 | constructor(nsName, attrs, options) { 12 | super(nsName, attrs, options); 13 | } 14 | } 15 | 16 | Any.elementName = 'any'; 17 | 18 | module.exports = Any; 19 | -------------------------------------------------------------------------------- /test/request-response-samples/getAvailability__should_not_fail_without_children/request.xml: -------------------------------------------------------------------------------- 1 | beeblebrox42HAMFRA2016-01-012016-02-01 -------------------------------------------------------------------------------- /src/parser/wsdl/input.js: -------------------------------------------------------------------------------- 1 | // Copyright IBM Corp. 2016,2017. All Rights Reserved. 2 | // Node module: strong-soap 3 | // This file is licensed under the MIT License. 4 | // License text available at https://opensource.org/licenses/MIT 5 | 6 | 'use strict'; 7 | 8 | var Parameter = require('./parameter'); 9 | 10 | class Input extends Parameter { 11 | constructor(nsName, attrs, options) { 12 | super(nsName, attrs, options); 13 | } 14 | } 15 | 16 | Input.elementName = 'input'; 17 | 18 | module.exports = Input; 19 | -------------------------------------------------------------------------------- /src/parser/xsd/unique.js: -------------------------------------------------------------------------------- 1 | // Copyright IBM Corp. 2016,2017. All Rights Reserved. 2 | // Node module: strong-soap 3 | // This file is licensed under the MIT License. 4 | // License text available at https://opensource.org/licenses/MIT 5 | 6 | 'use strict'; 7 | 8 | var KeyBase = require('./keybase'); 9 | 10 | class Unique extends KeyBase { 11 | constructor(nsName, attrs, options) { 12 | super(nsName, attrs, options); 13 | } 14 | } 15 | 16 | Unique.elementName = 'unique'; 17 | 18 | module.exports = Unique; 19 | -------------------------------------------------------------------------------- /src/parser/wsdl/output.js: -------------------------------------------------------------------------------- 1 | // Copyright IBM Corp. 2016,2017. All Rights Reserved. 2 | // Node module: strong-soap 3 | // This file is licensed under the MIT License. 4 | // License text available at https://opensource.org/licenses/MIT 5 | 6 | 'use strict'; 7 | 8 | var Parameter = require('./parameter'); 9 | 10 | class Output extends Parameter { 11 | constructor(nsName, attrs, options) { 12 | super(nsName, attrs, options); 13 | } 14 | } 15 | 16 | Output.elementName = 'output'; 17 | 18 | module.exports = Output; 19 | -------------------------------------------------------------------------------- /src/parser/xsd/import.js: -------------------------------------------------------------------------------- 1 | // Copyright IBM Corp. 2016,2017. All Rights Reserved. 2 | // Node module: strong-soap 3 | // This file is licensed under the MIT License. 4 | // License text available at https://opensource.org/licenses/MIT 5 | 6 | 'use strict'; 7 | 8 | var XSDElement = require('./xsdElement'); 9 | 10 | class Import extends XSDElement { 11 | constructor(nsName, attrs, options) { 12 | super(nsName, attrs, options); 13 | } 14 | } 15 | 16 | Import.elementName = 'import'; 17 | 18 | module.exports = Import; 19 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | # EditorConfig for the node-soap library - head over to editorconfig.org to see if you editor supports this file. 2 | 3 | # this is the topmost .editorconfig file 4 | root = true 5 | 6 | [*] 7 | end_of_line = lf 8 | insert_final_newline = true 9 | 10 | [*.xml] 11 | insert_final_newline = false 12 | 13 | [*.js] 14 | indent_style = space 15 | indent_size = 2 16 | 17 | [*.json] 18 | indent_style = space 19 | indent_size = 2 20 | 21 | [{package.json,.travis.yml}] 22 | indent_style = space 23 | indent_size = 2 24 | -------------------------------------------------------------------------------- /test/request-response-samples/Dummy__should_extract_envelope_from_response/request.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Humpty 7 | 8 | Dumpty 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /test/request-response-samples/Dummy__should_handle_attributes_in_request/request.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Humpty 7 | 8 | Dumpty 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /test/request-response-samples/Dummy__should_handle_attributes_in_response/request.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Humpty 7 | 8 | Dumpty 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /test/request-response-samples/Dummy__should_handle_cdata_xml_in_response/request.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Humpty 7 | 8 | Dumpty 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /test/request-response-samples/execFile__valid_xml_generated_on_request_with_complex_type_element_form_default_missing/response.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | qw 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /test/wsdl/recursive-schema-import/Infrastructure.xsd: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /src/parser/xsd/include.js: -------------------------------------------------------------------------------- 1 | // Copyright IBM Corp. 2016,2017. All Rights Reserved. 2 | // Node module: strong-soap 3 | // This file is licensed under the MIT License. 4 | // License text available at https://opensource.org/licenses/MIT 5 | 6 | 'use strict'; 7 | 8 | var XSDElement = require('./xsdElement'); 9 | 10 | class Include extends XSDElement { 11 | constructor(nsName, attrs, options) { 12 | super(nsName, attrs, options); 13 | } 14 | } 15 | 16 | 17 | Include.elementName = 'include'; 18 | 19 | module.exports = Include; 20 | -------------------------------------------------------------------------------- /test/request-response-samples/Dummy__should_handle_xml_date_time_dateTime/request.json: -------------------------------------------------------------------------------- 1 | { 2 | "DummyRequest": { 3 | "DummyFilter": { 4 | "DummyTimeFilter": "2018-09-01T10:20:09Z", 5 | "DummyDateFilter": "2018-09-01T10:20:09Z" 6 | }, 7 | "DummyList": { 8 | "DummyElement": { 9 | "$attributes": { 10 | "created": "2018-09-01T10:20:09Z", 11 | "updated": "2018-09-01T10:20:09Z" 12 | }, 13 | "$value": "123" 14 | } 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /test/request-response-samples/execFile__valid_xml_generated_on_request_with_complex_type_element_form_default_qualified/response.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | qw 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /test/request-response-samples/Dummy__should_add_prefix_for_unqualified_global_elements/request.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Humpty 7 | 8 | Dumpty 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /test/request-response-samples/createData__should_generate_complex_type_request/response.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /test/request-response-samples/execFile__valid_xml_generated_on_request_with_complex_type_element_form_default_unqualified/response.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | qw 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /test/request-response-samples/Dummy__ref_element_should_has_correct_namespace/common.xsd: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /src/parser/xsd/anyAttribute.js: -------------------------------------------------------------------------------- 1 | // Copyright IBM Corp. 2016,2017. All Rights Reserved. 2 | // Node module: strong-soap 3 | // This file is licensed under the MIT License. 4 | // License text available at https://opensource.org/licenses/MIT 5 | 6 | 'use strict'; 7 | 8 | var XSDElement = require('./xsdElement'); 9 | 10 | class AnyAttribute extends XSDElement { 11 | constructor(nsName, attrs, options) { 12 | super(nsName, attrs, options); 13 | } 14 | } 15 | 16 | AnyAttribute.elementName = 'anyAttribute'; 17 | 18 | module.exports = AnyAttribute; 19 | -------------------------------------------------------------------------------- /test/request-response-samples/addList__xsi_type/response.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 2 7 | Mary 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /src/parser/wsdl/import.js: -------------------------------------------------------------------------------- 1 | // Copyright IBM Corp. 2016,2017. All Rights Reserved. 2 | // Node module: strong-soap 3 | // This file is licensed under the MIT License. 4 | // License text available at https://opensource.org/licenses/MIT 5 | 6 | 'use strict'; 7 | 8 | var WSDLElement = require('./wsdlElement'); 9 | 10 | class Import extends WSDLElement { 11 | constructor(nsName, attrs, options) { 12 | super(nsName, attrs, options); 13 | this.schemas = {}; 14 | } 15 | } 16 | 17 | Import.elementName = 'import'; 18 | 19 | module.exports = Import; 20 | -------------------------------------------------------------------------------- /test/request-response-samples/update__complex_extension_fields_in_parent_without_explicit_namespace/request.json: -------------------------------------------------------------------------------- 1 | { 2 | "record":{ 3 | "$attributes":{ 4 | "internalId":"42", 5 | "externalId":"Alex Dniprovskyy", 6 | "$xsiType":{ 7 | "type":"Contact", 8 | "xmlns":"urn:relationships_2011_1.lists.webservices.netsuite.com" 9 | } 10 | }, 11 | "nullFieldList":{ 12 | "name":"officephone" 13 | }, 14 | "firstName":"Allister", 15 | "lastName":"Sullivan", 16 | "phone":"800-555-2819" 17 | } 18 | } -------------------------------------------------------------------------------- /src/parser/xsd/all.js: -------------------------------------------------------------------------------- 1 | // Copyright IBM Corp. 2016,2017. All Rights Reserved. 2 | // Node module: strong-soap 3 | // This file is licensed under the MIT License. 4 | // License text available at https://opensource.org/licenses/MIT 5 | 6 | 'use strict'; 7 | 8 | var XSDElement = require('./xsdElement'); 9 | 10 | class All extends XSDElement { 11 | constructor(nsName, attrs, options) { 12 | super(nsName, attrs, options); 13 | } 14 | } 15 | 16 | All.elementName = 'all'; 17 | All.allowedChildren = ['annotation', 'element']; 18 | 19 | module.exports = All; 20 | -------------------------------------------------------------------------------- /test/request-response-samples/get__complex_extension_with_explicit_namespace/request.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /test/request-response-samples/update__complex_extension_with_array_attributes/response.json: -------------------------------------------------------------------------------- 1 | { 2 | "writeResponse": { 3 | "status": { 4 | "$attributes": { 5 | "isSuccess": "true" 6 | } 7 | }, 8 | "baseRef": { 9 | "$attributes": { 10 | "internalId": "42", 11 | "externalId": "Alex Dniprovskyy", 12 | "type": "contact", 13 | "$xsiType": { 14 | "type": "RecordRef", 15 | "xmlns": "urn:core_2013_2.platform.webservices.netsuite.com" 16 | } 17 | } 18 | } 19 | } 20 | } -------------------------------------------------------------------------------- /test/request-response-samples/GetAccountXml__non_xmlns_attributes_should_be_returned/request.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 234 7 | foo 8 | more foo 9 | 43 10 | 34 11 | 12 | 13 | -------------------------------------------------------------------------------- /test/request-response-samples/execFile__valid_xml_generated_on_request_with_complex_type_element_form_default_missing/request.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | PSTN 7 | 0 8 | null 9 | true 10 | 11 | 12 | -------------------------------------------------------------------------------- /test/request-response-samples/execFile__valid_xml_generated_on_request_with_complex_type_element_form_default_unqualified/request.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | PSTN 7 | 0 8 | null 9 | true 10 | 11 | 12 | -------------------------------------------------------------------------------- /test/request-response-samples/get__complex_extension_without_explicit_namespace/request.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /src/parser/wsdl/fault.js: -------------------------------------------------------------------------------- 1 | // Copyright IBM Corp. 2016,2017. All Rights Reserved. 2 | // Node module: strong-soap 3 | // This file is licensed under the MIT License. 4 | // License text available at https://opensource.org/licenses/MIT 5 | 6 | 'use strict'; 7 | 8 | var Parameter = require('./parameter'); 9 | 10 | class Fault extends Parameter { 11 | constructor(nsName, attrs, options) { 12 | super(nsName, attrs, options); 13 | } 14 | } 15 | 16 | Fault.elementName = 'fault'; 17 | Fault.allowedChildren = ['documentation', 'fault']; 18 | 19 | module.exports = Fault; 20 | -------------------------------------------------------------------------------- /test/request-response-samples/Dummy__should_work_with_imported_schemas/request.xml: -------------------------------------------------------------------------------- 1 | HumptyDumpty -------------------------------------------------------------------------------- /test/request-response-samples/Dummy__should_handle_nil/request.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Humpty 7 | 8 | Dumpty 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /test/request-response-samples/administrate__Complex_json_object_namespace_issue/request.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | name 8 | password 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /test/request-response-samples/update__complex_extension_fields_in_parent_without_explicit_namespace/response.json: -------------------------------------------------------------------------------- 1 | { 2 | "writeResponse": { 3 | "status": { 4 | "$attributes": { 5 | "isSuccess": "true" 6 | } 7 | }, 8 | "baseRef": { 9 | "$attributes": { 10 | "internalId": "42", 11 | "externalId": "Alex Dniprovskyy", 12 | "type": "contact", 13 | "$xsiType": { 14 | "type": "RecordRef", 15 | "xmlns": "urn:core_2013_2.platform.webservices.netsuite.com" 16 | } 17 | } 18 | } 19 | } 20 | } -------------------------------------------------------------------------------- /test/request-response-samples/Dummy__should_handle_nil/response.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /test/request-response-samples/execFile__valid_xml_generated_on_request_with_complex_type_element_form_default_qualified/request.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | PSTN 7 | 0 8 | null 9 | true 10 | 11 | 12 | -------------------------------------------------------------------------------- /test/request-response-samples/getAvailability__should_not_fail_without_children/request.json: -------------------------------------------------------------------------------- 1 | { 2 | "userCredentials": { 3 | "username": "beeblebrox", 4 | "sessionid": "42" 5 | }, 6 | "getAvailabilityRequest": { 7 | "attributes": { 8 | "currency": "EUR" 9 | }, 10 | "departure": "HAM", 11 | "destination": "FRA", 12 | "flightDate": "2016-01-01", 13 | "returnDate": "2016-02-01", 14 | "paxCount": [ 15 | { 16 | "attributes": { 17 | "count": 1, 18 | "paxType": "ADT" 19 | } 20 | } 21 | ] 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/parser/wsdl/documentation.js: -------------------------------------------------------------------------------- 1 | // Copyright IBM Corp. 2016,2017. All Rights Reserved. 2 | // Node module: strong-soap 3 | // This file is licensed under the MIT License. 4 | // License text available at https://opensource.org/licenses/MIT 5 | 6 | 'use strict'; 7 | 8 | var WSDLElement = require('./wsdlElement'); 9 | 10 | class Documentation extends WSDLElement { 11 | constructor(nsName, attrs, options) { 12 | super(nsName, attrs, options); 13 | } 14 | } 15 | 16 | Documentation.elementName = 'documentation'; 17 | Documentation.allowedChildren = []; 18 | 19 | module.exports = Documentation; 20 | -------------------------------------------------------------------------------- /src/parser/xsd/annotation.js: -------------------------------------------------------------------------------- 1 | // Copyright IBM Corp. 2016,2017. All Rights Reserved. 2 | // Node module: strong-soap 3 | // This file is licensed under the MIT License. 4 | // License text available at https://opensource.org/licenses/MIT 5 | 6 | 'use strict'; 7 | 8 | var XSDElement = require('./xsdElement'); 9 | 10 | class Annotation extends XSDElement { 11 | constructor(nsName, attrs, options) { 12 | super(nsName, attrs, options); 13 | } 14 | } 15 | 16 | Annotation.elementName = 'annotation'; 17 | Annotation.allowedChildren = ['documentation', 'appinfo']; 18 | 19 | module.exports = Annotation; 20 | -------------------------------------------------------------------------------- /src/parser/xsd/documentation.js: -------------------------------------------------------------------------------- 1 | // Copyright IBM Corp. 2016,2017. All Rights Reserved. 2 | // Node module: strong-soap 3 | // This file is licensed under the MIT License. 4 | // License text available at https://opensource.org/licenses/MIT 5 | 6 | 'use strict'; 7 | 8 | var XSDElement = require('./xsdElement'); 9 | 10 | class Documentation extends XSDElement { 11 | constructor(nsName, attrs, options) { 12 | super(nsName, attrs, options); 13 | } 14 | } 15 | 16 | Documentation.elementName = 'documentation'; 17 | Documentation.allowedChildren = ['any']; 18 | 19 | module.exports = Documentation; 20 | -------------------------------------------------------------------------------- /test/request-response-samples/Dummy__ref_element_should_has_correct_namespace/request.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 8 | 10 | 1 11 | foo 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /src/parser/wsdl/wsdlElement.js: -------------------------------------------------------------------------------- 1 | // Copyright IBM Corp. 2016,2017. All Rights Reserved. 2 | // Node module: strong-soap 3 | // This file is licensed under the MIT License. 4 | // License text available at https://opensource.org/licenses/MIT 5 | 6 | 'use strict'; 7 | 8 | var Element = require('../element'); 9 | 10 | class WSDLElement extends Element { 11 | constructor(nsName, attrs, options) { 12 | super(nsName, attrs, options); 13 | } 14 | } 15 | 16 | WSDLElement.targetNamespace = Element.namespaces.wsdl; 17 | WSDLElement.allowedChildren = ['documentation']; 18 | 19 | module.exports = WSDLElement; 20 | -------------------------------------------------------------------------------- /test/request-response-samples/Dummy__should_handle_cdata_xml_in_response/response.json: -------------------------------------------------------------------------------- 1 | { 2 | "DummyResult": { 3 | "DummyList": { 4 | "DummyElement": [ 5 | { 6 | "$attributes": { 7 | "language": "en-US" 8 | }, 9 | "$value": { 10 | "response": { 11 | "forms": { 12 | "form": { 13 | "$attributes": { 14 | "ObjectId": "1234", 15 | "Form_Name": "Dummy Form" 16 | }, 17 | "First_Name": "Humpty", 18 | "Last_Name": "Dumpty" 19 | } 20 | } 21 | } 22 | } 23 | } 24 | ] 25 | } 26 | } 27 | } -------------------------------------------------------------------------------- /test/request-response-samples/GetItemInformation__should_ignore_default_namespace_from_schema/request.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 1234 9 | 10 | 1.00 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /src/parser/xsd/choice.js: -------------------------------------------------------------------------------- 1 | // Copyright IBM Corp. 2016,2017. All Rights Reserved. 2 | // Node module: strong-soap 3 | // This file is licensed under the MIT License. 4 | // License text available at https://opensource.org/licenses/MIT 5 | 6 | 'use strict'; 7 | 8 | var XSDElement = require('./xsdElement'); 9 | 10 | class Choice extends XSDElement { 11 | constructor(nsName, attrs, options) { 12 | super(nsName, attrs, options); 13 | } 14 | } 15 | 16 | Choice.elementName = 'choice'; 17 | Choice.allowedChildren = ['annotation', 'element', 'group', 'sequence', 18 | 'choice', 'any']; 19 | 20 | module.exports = Choice; 21 | -------------------------------------------------------------------------------- /test/wsdl/typeref/ns2.xsd: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /src/security/BearerSecurity.js: -------------------------------------------------------------------------------- 1 | // Copyright IBM Corp. 2016. All Rights Reserved. 2 | // Node module: strong-soap 3 | // This file is licensed under the MIT License. 4 | // License text available at https://opensource.org/licenses/MIT 5 | 6 | 'use strict'; 7 | 8 | var _ = require('lodash'); 9 | var Security = require('./security'); 10 | 11 | class BearerSecurity extends Security { 12 | constructor(token, options) { 13 | super(options); 14 | this.token = token; 15 | } 16 | 17 | addHttpHeaders(headers) { 18 | headers.Authorization = "Bearer " + this.token; 19 | } 20 | } 21 | 22 | module.exports = BearerSecurity; 23 | -------------------------------------------------------------------------------- /test/wsdl/recursive-schema-import/TESTAdditionalHeaders.xsd: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /test/request-response-samples/multiCall__rpc_stype_request_xsi_attributes/response.json: -------------------------------------------------------------------------------- 1 | { 2 | "multiCallReturn": { 3 | "$attributes": { 4 | "arrayType": "xsd:ur-type[1]", 5 | "$xsiType": { 6 | "type": "FixedArray", 7 | "xmlns": "urn:Magento" 8 | } 9 | }, 10 | "item": { 11 | "$attributes": { 12 | "$xsiType": { 13 | "type": "boolean", 14 | "xmlns": "http://www.w3.org/2001/XMLSchema" 15 | } 16 | }, 17 | "$value": "true" 18 | } 19 | } 20 | } -------------------------------------------------------------------------------- /test/request-response-samples/Dummy__should_parse_nil/response.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /test/request-response-samples/login__error_returned_should_contain_root_Json_on_fault/error_response.json: -------------------------------------------------------------------------------- 1 | { 2 | "Envelope":{ 3 | "Body":{ 4 | "Fault":{ 5 | "faultcode":"soapenv:Server.userException", 6 | "faultstring":"You have entered an invalid email address or password. Please try again.", 7 | "detail":{ 8 | "invalidCredentialsFault":{ 9 | "code":"INVALID_LOGIN_CREDENTIALS", 10 | "message":"You have entered an invalid email address or password. Please try again." 11 | }, 12 | "hostname":"partners-java10009.bos.netledger.com" 13 | } 14 | } 15 | } 16 | } 17 | } -------------------------------------------------------------------------------- /src/parser/xsd/sequence.js: -------------------------------------------------------------------------------- 1 | // Copyright IBM Corp. 2016,2017. All Rights Reserved. 2 | // Node module: strong-soap 3 | // This file is licensed under the MIT License. 4 | // License text available at https://opensource.org/licenses/MIT 5 | 6 | 'use strict'; 7 | 8 | var XSDElement = require('./xsdElement'); 9 | var Any = require('./any'); 10 | 11 | class Sequence extends XSDElement { 12 | constructor(nsName, attrs, options) { 13 | super(nsName, attrs, options); 14 | } 15 | } 16 | 17 | Sequence.elementName = 'sequence'; 18 | Sequence.allowedChildren = ['annotation', 'element', 'group', 'sequence', 19 | 'choice', 'any']; 20 | 21 | module.exports = Sequence; 22 | -------------------------------------------------------------------------------- /test/request-response-samples/Dummy__should_handle_xml_date_time_dateTime/response.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /test/wsdl/binding_document.wsdl: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /src/parser/xsd/simpleContent.js: -------------------------------------------------------------------------------- 1 | // Copyright IBM Corp. 2016,2017. All Rights Reserved. 2 | // Node module: strong-soap 3 | // This file is licensed under the MIT License. 4 | // License text available at https://opensource.org/licenses/MIT 5 | 6 | 'use strict'; 7 | 8 | var XSDElement = require('./xsdElement'); 9 | var Extension = require('./extension'); 10 | 11 | class SimpleContent extends XSDElement { 12 | constructor(nsName, attrs, options) { 13 | super(nsName, attrs, options); 14 | } 15 | } 16 | 17 | SimpleContent.elementName = 'simpleContent'; 18 | SimpleContent.allowedChildren = ['annotation', 'extension', 'restriction']; 19 | 20 | module.exports = SimpleContent; 21 | -------------------------------------------------------------------------------- /test/request-response-samples/GetItemInformation__should_ignore_default_namespace_from_schema/response.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 1234 8 | 9 | 1.00 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /SECURITY.md: -------------------------------------------------------------------------------- 1 | # Security Policy 2 | 3 | ## Security advisories 4 | 5 | Security advisories can be found on the 6 | [LoopBack website](https://loopback.io/doc/en/sec/index.html). 7 | 8 | ## Reporting a vulnerability 9 | 10 | If you think you have discovered a new security issue with any LoopBack package, 11 | **please do not report it on GitHub**. Instead, send an email to 12 | [security@loopback.io](mailto:security@loopback.io) with the following details: 13 | 14 | - Full description of the vulnerability. 15 | - Steps to reproduce the issue. 16 | - Possible solutions. 17 | 18 | If you are sending us any logs as part of the report, then make sure to redact 19 | any sensitive data from them. -------------------------------------------------------------------------------- /test/request-response-samples/Dummy__should_handle_attributes_in_request/response.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Dummy Element Entry 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /test/request-response-samples/Dummy__should_handle_attributes_in_response/response.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Dummy Element Entry 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /test/request-response-samples/GetNodes__complex_self_referencing/response.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Parent 6 | 7 | 8 | Child1 9 | 10 | 11 | 12 | Child2 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /test/request-response-samples/Login__unsupported_response_name_returned_and_local_xs_schema_missed/response.json: -------------------------------------------------------------------------------- 1 | { 2 | "SessionID": { 3 | "$attributes": { 4 | "$xsiType": { 5 | "type": "string", 6 | "xmlns": "http://www.w3.org/2001/XMLSchema" 7 | } 8 | }, 9 | "$value": "{B26106C6-1F0A-416E-B8EB-B66BBA2A450A}" 10 | }, 11 | "return": { 12 | "$attributes": { 13 | "$xsiType": { 14 | "type": "TewsLoginResult", 15 | "xmlns": "urn:webservice-electrasoft-ru:types-ewsServerIntf" 16 | } 17 | }, 18 | "$value": "lrSuccess" 19 | } 20 | } -------------------------------------------------------------------------------- /test/request-response-samples/Dummy__should_add_prefix_for_unqualified_global_elements/response.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Dummy Element Entry 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /test/request-response-samples/Dummy__should_use_defined_value_key/response.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Dummy Element Entry 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /test/request-response-samples/Dummy__should_use_defined_xml_key/response.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Dummy Element Entry 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /test/request-response-samples/Dummy__should_ignore_defined_namespaces/response.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Dummy Element Entry 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /test/wsdl/wsdlImport/xsd.xsd: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 8 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /test/request-response-samples/Dummy__should_ignore_custom_defined_namespaces/response.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Dummy Element Entry 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /commitlint.config.js: -------------------------------------------------------------------------------- 1 | // Copyright IBM Corp. 2017,2021. All Rights Reserved. 2 | // Node module: strong-soap 3 | // This file is licensed under the MIT License. 4 | // License text available at https://opensource.org/licenses/MIT 5 | 6 | const isCI = process.env.CI; 7 | module.exports = { 8 | extends: [ 9 | '@commitlint/config-conventional', 10 | ], 11 | rules: { 12 | 'header-max-length': [2, 'always', 100], 13 | 'body-leading-blank': [2, 'always'], 14 | 'footer-leading-blank': [0, 'always'], 15 | // Only enforce the rule if CI flag is not set. This is useful for release 16 | // commits to skip DCO 17 | 'signed-off-by': [isCI ? 0 : 2, 'always', 'Signed-off-by:'], 18 | }, 19 | }; 20 | -------------------------------------------------------------------------------- /test/wsdl/from-memory/multipart/xsd.xsd: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 8 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /test/request-response-samples/Dummy__should_handle_null_args/response.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Dummy Element Entry 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /src/parser/soap12/body.js: -------------------------------------------------------------------------------- 1 | // Copyright IBM Corp. 2016,2017. All Rights Reserved. 2 | // Node module: strong-soap 3 | // This file is licensed under the MIT License. 4 | // License text available at https://opensource.org/licenses/MIT 5 | 6 | 'use strict'; 7 | 8 | var SOAPElement = require('./soapElement'); 9 | var helper = require('../helper'); 10 | 11 | /** 12 | * 14 | */ 15 | class Body extends SOAPElement { 16 | constructor(nsName, attrs, options) { 17 | super(nsName, attrs, options); 18 | } 19 | } 20 | 21 | Body.elementName = 'body'; 22 | Body.allowedChildren = ['documentation']; 23 | 24 | module.exports = Body; 25 | -------------------------------------------------------------------------------- /test/request-response-samples/Dummy__should_use_defined_value_key/request.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Humpty 7 | 8 | Dumpty 9 | 10 | 11 | Dummy 12 | 1234 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /test/request-response-samples/login__complex_schema_xmlns_should_be_handled/request.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | em 8 | pwd 9 | acc 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /test/request-response-samples/login__error_returned_should_contain_root_Json_on_fault/soap.platform.faultTypes.xsd: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /src/parser/soap/body.js: -------------------------------------------------------------------------------- 1 | // Copyright IBM Corp. 2016,2017. All Rights Reserved. 2 | // Node module: strong-soap 3 | // This file is licensed under the MIT License. 4 | // License text available at https://opensource.org/licenses/MIT 5 | 6 | 'use strict'; 7 | 8 | var SOAPElement = require('./soapElement'); 9 | var helper = require('../helper'); 10 | 11 | /** 12 | * 14 | */ 15 | class Body extends SOAPElement { 16 | constructor(nsName, attrs, options) { 17 | super(nsName, attrs, options); 18 | } 19 | } 20 | 21 | Body.elementName = 'body'; 22 | Body.allowedChildren = ['documentation']; 23 | 24 | module.exports = Body; 25 | -------------------------------------------------------------------------------- /src/parser/soap/fault.js: -------------------------------------------------------------------------------- 1 | // Copyright IBM Corp. 2016,2017. All Rights Reserved. 2 | // Node module: strong-soap 3 | // This file is licensed under the MIT License. 4 | // License text available at https://opensource.org/licenses/MIT 5 | 6 | 'use strict'; 7 | 8 | var SOAPElement = require('./soapElement'); 9 | var helper = require('../helper'); 10 | 11 | /** 12 | * 14 | */ 15 | class Fault extends SOAPElement { 16 | constructor(nsName, attrs, options) { 17 | super(nsName, attrs, options); 18 | } 19 | } 20 | 21 | Fault.elementName = 'fault'; 22 | Fault.allowedChildren = ['documentation']; 23 | 24 | module.exports = Fault; 25 | -------------------------------------------------------------------------------- /src/parser/soap12/fault.js: -------------------------------------------------------------------------------- 1 | // Copyright IBM Corp. 2016,2017. All Rights Reserved. 2 | // Node module: strong-soap 3 | // This file is licensed under the MIT License. 4 | // License text available at https://opensource.org/licenses/MIT 5 | 6 | 'use strict'; 7 | 8 | var SOAPElement = require('./soapElement'); 9 | var helper = require('../helper'); 10 | 11 | /** 12 | * 14 | */ 15 | class Fault extends SOAPElement { 16 | constructor(nsName, attrs, options) { 17 | super(nsName, attrs, options); 18 | } 19 | } 20 | 21 | Fault.elementName = 'fault'; 22 | Fault.allowedChildren = ['documentation']; 23 | 24 | module.exports = Fault; 25 | -------------------------------------------------------------------------------- /test/wsdl/recursive-schema-import/Common.xsd: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /test/request-response-samples/login__error_returned_should_contain_root_Json_on_fault/request.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | em 8 | pwd 9 | acc 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /test/request-response-samples/Dummy__should_return_object_when_maxOccurs_1/response.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Dummy Element Entry 1 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /test/request-response-samples/login__complex_schema_xmlns_with_array_and_any_type_and_other_types/request.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | em 8 | pwd 9 | acc 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.jshintrc: -------------------------------------------------------------------------------- 1 | { 2 | "bitwise":false, 3 | "boss":true, 4 | "expr":true, 5 | "camelcase":false, 6 | "curly":false, 7 | "eqeqeq":true, 8 | "freeze":true, 9 | "immed":true, 10 | "indent":2, 11 | "latedef":"nofunc", 12 | "laxbreak":true, 13 | "laxcomma":true, 14 | "newcap":true, 15 | "noarg":true, 16 | "node":true, 17 | "strict": true, 18 | "trailing":true, 19 | "undef":true, 20 | "predef": [ 21 | "describe", // Used by mocha 22 | "it", // Used by mocha 23 | "xit", // Used by mocha 24 | "before", // Used by mocha 25 | "beforeEach", // Used by mocha 26 | "after", // Used by mocha 27 | "afterEach" // Used by mocha 28 | ] 29 | } 30 | -------------------------------------------------------------------------------- /src/security/security.js: -------------------------------------------------------------------------------- 1 | // Copyright IBM Corp. 2016. All Rights Reserved. 2 | // Node module: strong-soap 3 | // This file is licensed under the MIT License. 4 | // License text available at https://opensource.org/licenses/MIT 5 | 6 | 'use strict'; 7 | 8 | var _ = require('lodash'); 9 | 10 | /** 11 | * Base class for Web Services Security 12 | */ 13 | class Security { 14 | constructor(options) { 15 | this.options = options || {}; 16 | } 17 | 18 | addOptions(options) { 19 | _.merge(options, this.options); 20 | }; 21 | 22 | addHttpHeaders(headers) { 23 | } 24 | 25 | addSoapHeaders(headerElement) { 26 | } 27 | 28 | postProcess(envelopeElement, headerElement, bodyElement) { 29 | } 30 | } 31 | 32 | module.exports = Security; 33 | -------------------------------------------------------------------------------- /test/wsdl/recursive-schema-import/TEST.xsd: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /test/request-response-samples/readMetadata__should_respect_xsi_type_attribute/response.json: -------------------------------------------------------------------------------- 1 | { 2 | "result": { 3 | "records": [ 4 | { 5 | "$attributes": { 6 | "$xsiType": { 7 | "type": "CustomObject", 8 | "xmlns": "http://soap.sforce.com/2006/04/metadata" 9 | } 10 | }, 11 | "fullName": "Opportunity", 12 | "businessProcesses": [ 13 | { 14 | "fullName": "Some Process", 15 | "isActive": "true" 16 | }, 17 | { 18 | "fullName": "Another Process", 19 | "isActive": "false" 20 | } 21 | ], 22 | "enableFeeds": "false", 23 | "enableHistory": "true" 24 | } 25 | ] 26 | } 27 | } -------------------------------------------------------------------------------- /.github/PULL_REQUEST_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | ### Description 2 | 3 | 4 | #### Related issues 5 | 6 | 12 | 13 | - connect to 14 | 15 | ### Checklist 16 | 17 | 22 | 23 | - [ ] New tests added or existing tests modified to cover all changes 24 | - [ ] Code conforms with the [style 25 | guide](http://loopback.io/doc/en/contrib/style-guide.html) 26 | -------------------------------------------------------------------------------- /test/request-response-samples/Dummy__should_ignore_defined_namespaces/request.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Humpty 7 | 8 | Dumpty 9 | 10 | 11 | Dummy 12 | 1234 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /src/parser/soap/headerFault.js: -------------------------------------------------------------------------------- 1 | // Copyright IBM Corp. 2016,2017. All Rights Reserved. 2 | // Node module: strong-soap 3 | // This file is licensed under the MIT License. 4 | // License text available at https://opensource.org/licenses/MIT 5 | 6 | 'use strict'; 7 | 8 | var SOAPElement = require('./soapElement'); 9 | var helper = require('../helper'); 10 | 11 | /** 12 | * * 14 | */ 15 | class HeaderFault extends SOAPElement { 16 | constructor(nsName, attrs, options) { 17 | super(nsName, attrs, options); 18 | } 19 | } 20 | 21 | HeaderFault.elementName = 'headerfault'; 22 | HeaderFault.allowedChildren = ['documentation']; 23 | 24 | module.exports = HeaderFault; 25 | -------------------------------------------------------------------------------- /src/parser/soap12/headerFault.js: -------------------------------------------------------------------------------- 1 | // Copyright IBM Corp. 2016,2017. All Rights Reserved. 2 | // Node module: strong-soap 3 | // This file is licensed under the MIT License. 4 | // License text available at https://opensource.org/licenses/MIT 5 | 6 | 'use strict'; 7 | 8 | var SOAPElement = require('./soapElement'); 9 | var helper = require('../helper'); 10 | 11 | /** 12 | * * 14 | */ 15 | class HeaderFault extends SOAPElement { 16 | constructor(nsName, attrs, options) { 17 | super(nsName, attrs, options); 18 | } 19 | } 20 | 21 | HeaderFault.elementName = 'headerfault'; 22 | HeaderFault.allowedChildren = ['documentation']; 23 | 24 | module.exports = HeaderFault; 25 | -------------------------------------------------------------------------------- /test/request-response-samples/Dummy__should_ignore_custom_defined_namespaces/request.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Humpty 7 | 8 | Dumpty 9 | 10 | 11 | Dummy 12 | 1234 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | // Copyright IBM Corp. 2011,2017. All Rights Reserved. 2 | // Node module: strong-soap 3 | // This file is licensed under the MIT License. 4 | // License text available at https://opensource.org/licenses/MIT 5 | 6 | 'use strict'; 7 | 8 | var base = './lib/'; 9 | var nodeVersion = process.versions.node; 10 | var major = Number(nodeVersion.split('.')[0]); 11 | if (major >= 4) { 12 | base = './src/'; 13 | } 14 | 15 | var securityModules = require(base + 'security/index'); 16 | 17 | module.exports = { 18 | 'soap': require(base + 'soap'), 19 | 'http': require(base + 'http'), 20 | 'QName': require(base + 'parser/qname'), 21 | 'WSDL': require(base + 'parser/wsdl'), 22 | }; 23 | 24 | for (var i in securityModules) { 25 | module.exports[i] = securityModules[i]; 26 | } 27 | 28 | 29 | -------------------------------------------------------------------------------- /src/parser/wsdl/port.js: -------------------------------------------------------------------------------- 1 | // Copyright IBM Corp. 2016,2017. All Rights Reserved. 2 | // Node module: strong-soap 3 | // This file is licensed under the MIT License. 4 | // License text available at https://opensource.org/licenses/MIT 5 | 6 | 'use strict'; 7 | 8 | var WSDLElement = require('./wsdlElement'); 9 | 10 | class Port extends WSDLElement { 11 | constructor(nsName, attrs, options) { 12 | super(nsName, attrs, options); 13 | this.location = null; 14 | } 15 | 16 | addChild(child) { 17 | // soap:address 18 | if (child.name === 'address' && child.$location !== undefined) { 19 | this.location = child.$location; 20 | } 21 | } 22 | } 23 | 24 | Port.elementName = 'port'; 25 | Port.allowedChildren = ['address', 'documentation']; 26 | 27 | module.exports = Port; 28 | -------------------------------------------------------------------------------- /src/security/BasicAuthSecurity.js: -------------------------------------------------------------------------------- 1 | // Copyright IBM Corp. 2016,2019. All Rights Reserved. 2 | // Node module: strong-soap 3 | // This file is licensed under the MIT License. 4 | // License text available at https://opensource.org/licenses/MIT 5 | 6 | 'use strict'; 7 | 8 | var _ = require('lodash'); 9 | var Security = require('./security'); 10 | 11 | class BasicAuthSecurity extends Security { 12 | constructor(username, password, options) { 13 | super(options); 14 | this.username = username; 15 | this.password = password; 16 | } 17 | 18 | addHttpHeaders(headers) { 19 | var cred = Buffer.from((this.username + ':' + this.password) || '') 20 | .toString('base64'); 21 | headers.Authorization = 'Basic ' + cred; 22 | }; 23 | } 24 | 25 | module.exports = BasicAuthSecurity; 26 | -------------------------------------------------------------------------------- /test/request-response-samples/GetAccountXml__non_xmlns_attributes_should_be_returned/response.json: -------------------------------------------------------------------------------- 1 | { 2 | "ResultCode": 0, 3 | "AccountXml": { 4 | "Foo": { 5 | "Foo": { 6 | "$attributes": { 7 | "PrivateLabelID": "1", 8 | "ResourceID": "034b7ea5-8a04-11e3-9710-0050569575d8", 9 | "IsPastDue": "False", 10 | "IsFree": "True", 11 | "CurrentTreeID": "1091", 12 | "CurrentUnifiedProductID": "70761" 13 | }, 14 | "Tree": { 15 | "$attributes": { 16 | "TreeID": "1091", 17 | "NodeID": "1091", 18 | "UnifiedProductID": "70761", 19 | "IsFree": "True" 20 | }, 21 | "FilteredTransitions": null 22 | } 23 | } 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /test/request-response-samples/Dummy__should_parse_nil/request.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Humpty 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /test/request-response-samples/Login__unsupported_response_name_returned_and_local_xs_schema_missed/response.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | {B26106C6-1F0A-416E-B8EB-B66BBA2A450A} 6 | lrSuccess 7 | 8 | 9 | -------------------------------------------------------------------------------- /test/wsdl/ExtendedName.xsd: -------------------------------------------------------------------------------- 1 | 2 | 6 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /test/request-response-samples/multiCall__rpc_stype_request_xsi_attributes/response.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 10 | 11 | true 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /src/security/index.js: -------------------------------------------------------------------------------- 1 | // Copyright IBM Corp. 2016,2018. All Rights Reserved. 2 | // Node module: strong-soap 3 | // This file is licensed under the MIT License. 4 | // License text available at https://opensource.org/licenses/MIT 5 | 6 | "use strict"; 7 | 8 | var WSSecurityCert; 9 | try { 10 | WSSecurityCert = require('./WSSecurityCert'); 11 | } catch (err) { 12 | console.warn(err); 13 | } 14 | 15 | module.exports = { 16 | BasicAuthSecurity: require('./BasicAuthSecurity'), 17 | ClientSSLSecurity: require('./ClientSSLSecurity'), 18 | ClientSSLSecurityPFX: require('./ClientSSLSecurityPFX'), 19 | CookieSecurity: require('./CookieSecurity'), 20 | WSSecurity: require('./WSSecurity'), 21 | BearerSecurity: require('./BearerSecurity'), 22 | WSSecurityCert: WSSecurityCert, 23 | NTLMSecurity: require('./NTLMSecurity') 24 | }; 25 | -------------------------------------------------------------------------------- /test/request-response-samples/login__attributes_in_request_should_be_handled/request.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | em 8 | pwd 9 | acc 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /test/request-response-samples/login__attributes_namespace_should_be_configurable/request.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | em 8 | pwd 9 | acc 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | 6 | 7 | # Description/Steps to reproduce 8 | 9 | 13 | 14 | # Link to reproduction sandbox 15 | 16 | 21 | 22 | # Expected result 23 | 24 | 27 | 28 | # Additional information 29 | 30 | 35 | -------------------------------------------------------------------------------- /test/request-response-samples/createData__should_generate_complex_type_request/request.json: -------------------------------------------------------------------------------- 1 | { 2 | "ModelCRUDRequest":{ 3 | "ModelCRUD":{ 4 | "serviceType":"CreateInterest", 5 | "TableName":"WTC_EmployeeInterest", 6 | "RecordID":0, 7 | "Filter":"", 8 | "Action":"Create", 9 | "DataRow":{ 10 | "field":[{ 11 | "$attributes":{"column":"C_BPartner_ID"}, 12 | "val":"1001047" 13 | },{ 14 | "$attributes":{"column":"Interest"}, 15 | "val":"Cooking" 16 | }] 17 | } 18 | }, 19 | "ADLoginRequest":{ 20 | "user":"WTCAdmin", 21 | "pass":"WTCAdmin", 22 | "lang":"192", 23 | "ClientID":11, 24 | "RoleID":102, 25 | "OrgID":1000001, 26 | "WarehouseID":1000000, 27 | "stage":0 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /test/wsdl/strict/npe.wsdl: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /test/certs/agent2-cert-with-extra-data.pem: -------------------------------------------------------------------------------- 1 | issuer=/C=US/ST=California/L=SomeCity/O=SomeIssuingOrg 2 | -----BEGIN CERTIFICATE----- 3 | MIIB7DCCAZYCCQC7gs0MDNn6MTANBgkqhkiG9w0BAQUFADB9MQswCQYDVQQGEwJV 4 | UzELMAkGA1UECBMCQ0ExCzAJBgNVBAcTAlNGMQ8wDQYDVQQKEwZKb3llbnQxEDAO 5 | BgNVBAsTB05vZGUuanMxDzANBgNVBAMTBmFnZW50MjEgMB4GCSqGSIb3DQEJARYR 6 | cnlAdGlueWNsb3Vkcy5vcmcwHhcNMTEwMzE0MTgyOTEyWhcNMzgwNzI5MTgyOTEy 7 | WjB9MQswCQYDVQQGEwJVUzELMAkGA1UECBMCQ0ExCzAJBgNVBAcTAlNGMQ8wDQYD 8 | VQQKEwZKb3llbnQxEDAOBgNVBAsTB05vZGUuanMxDzANBgNVBAMTBmFnZW50MjEg 9 | MB4GCSqGSIb3DQEJARYRcnlAdGlueWNsb3Vkcy5vcmcwXDANBgkqhkiG9w0BAQEF 10 | AANLADBIAkEAyXb8FrRdKbhrKLgLSsn61i1C7w7fVVVd7OQsmV/7p9WB2lWFiDlC 11 | WKGU9SiIz/A6wNZDUAuc2E+VwtpCT561AQIDAQABMA0GCSqGSIb3DQEBBQUAA0EA 12 | C8HzpuNhFLCI3A5KkBS5zHAQax6TFUOhbpBCR0aTDbJ6F1liDTK1lmU/BjvPoj+9 13 | 1LHwrmh29rK8kBPEjmymCQ== 14 | -----END CERTIFICATE----- 15 | -------------------------------------------------------------------------------- /test/request-response-samples/Dummy__should_handle_cdata_xml_in_response/response.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
HumptyDumpty
]]> 9 |
10 |
11 |
12 |
13 |
14 |
-------------------------------------------------------------------------------- /example/xsds.js: -------------------------------------------------------------------------------- 1 | // Copyright IBM Corp. 2016,2018. All Rights Reserved. 2 | // Node module: strong-soap 3 | // This file is licensed under the MIT License. 4 | // License text available at https://opensource.org/licenses/MIT 5 | 6 | var soap = require('..').soap; 7 | var WSDL = soap.WSDL; 8 | var path = require('path'); 9 | 10 | 11 | //user can pass in WSDL options 12 | var options = {}; 13 | 14 | WSDL.open(path.resolve(__dirname, 'wsdls/weather.wsdl'), options, 15 | //User can traverse the WSDL tree and get to bindings - > operations, services, portTypes, messages, parts and XSD elements/Attributes 16 | function(err, wsdl) { 17 | var getCityForecastOp = wsdl.definitions.bindings.WeatherSoap.operations.GetCityForecastByZIP; 18 | console.log(getCityForecastOp.$name); 19 | var service = wsdl.definitions.services['Weather']; 20 | console.log(service.$name); 21 | }); 22 | -------------------------------------------------------------------------------- /test/wsdl/recursive-schema-import/Location.xsd: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /src/parser/xsd/keyref.js: -------------------------------------------------------------------------------- 1 | // Copyright IBM Corp. 2016,2017. All Rights Reserved. 2 | // Node module: strong-soap 3 | // This file is licensed under the MIT License. 4 | // License text available at https://opensource.org/licenses/MIT 5 | 6 | 'use strict'; 7 | 8 | var KeyBase = require('./keybase'); 9 | var QName = require('../qname'); 10 | 11 | class KeyRef extends KeyBase { 12 | constructor(nsName, attrs, options) { 13 | super(nsName, attrs, options); 14 | } 15 | 16 | postProcess(definitions) { 17 | super.postProcess(definitions); 18 | if (this.$refer) { 19 | let qname = QName.parse(this.$refer); 20 | if (qname.prefix === '') { 21 | qname.nsURI = this.getTargetNamespace(); 22 | } else { 23 | qname.nsURI = this.getNamespaceURI(qname.prefix); 24 | } 25 | } 26 | } 27 | } 28 | 29 | KeyRef.elementName = 'keyref'; 30 | 31 | module.exports = KeyRef; 32 | -------------------------------------------------------------------------------- /src/parser/soap12/header.js: -------------------------------------------------------------------------------- 1 | // Copyright IBM Corp. 2016,2017. All Rights Reserved. 2 | // Node module: strong-soap 3 | // This file is licensed under the MIT License. 4 | // License text available at https://opensource.org/licenses/MIT 5 | 6 | 'use strict'; 7 | 8 | var SOAPElement = require('./soapElement'); 9 | var helper = require('../helper'); 10 | 11 | /** 12 | * * 14 | * * 16 | * 17 | */ 18 | class Header extends SOAPElement { 19 | constructor(nsName, attrs, options) { 20 | super(nsName, attrs, options); 21 | } 22 | } 23 | 24 | Header.elementName = 'header'; 25 | Header.allowedChildren = ['documentation', 'headerFault']; 26 | 27 | module.exports = Header; 28 | -------------------------------------------------------------------------------- /test/request-response-samples/Dummy__should_work_with_imported_schemas/name.xsd: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /test/wsdl/recursive-schema-import/AccountingUnit.xsd: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /test/request-response-samples/Dummy__should_handle_nil/name.xsd: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /test/request-response-samples/Dummy__should_handle_null_args/name.xsd: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /example/stockquote.js: -------------------------------------------------------------------------------- 1 | // Copyright IBM Corp. 2017. All Rights Reserved. 2 | // Node module: strong-soap 3 | // This file is licensed under the MIT License. 4 | // License text available at https://opensource.org/licenses/MIT 5 | 6 | "use strict"; 7 | 8 | var soap = require('..').soap; 9 | // wsdl of the web service this client is going to invoke. For local wsdl you can use, url = './wsdls/stockquote.wsdl' 10 | var url = 'http://www.webservicex.net/stockquote.asmx?WSDL'; 11 | 12 | var requestArgs = { 13 | symbol: 'IBM' 14 | }; 15 | 16 | var options = {}; 17 | soap.createClient(url, options, function(err, client) { 18 | var method = client['StockQuote']['StockQuoteSoap']['GetQuote']; 19 | method(requestArgs, function(err, result, envelope, soapHeader) { 20 | //response envelope 21 | console.log('Response Envelope: \n' + envelope); 22 | //'result' is the response body 23 | console.log('Result: \n' + JSON.stringify(result)); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /src/strip-bom.js: -------------------------------------------------------------------------------- 1 | // Copyright IBM Corp. 2016,2019. All Rights Reserved. 2 | // Node module: strong-soap 3 | // This file is licensed under the MIT License. 4 | // License text available at https://opensource.org/licenses/MIT 5 | 6 | /* 7 | strip the BOM characters in the beginning of UTF-8 8 | or other unicode encoded strings 9 | http://en.wikipedia.org/wiki/Byte_order_mark 10 | */ 11 | 'use strict'; 12 | module.exports = stripBom; 13 | 14 | function stripBom(str){ 15 | 16 | if (typeof str !== 'string') { 17 | throw new Error('Invalid input, only string allowed'); 18 | } 19 | var chunk = Buffer.from(str); 20 | var transformed; 21 | var value = str; 22 | if (chunk[0] === 0xFE && chunk[1] === 0XFF) { 23 | transformed = chunk.slice(2); 24 | } 25 | if (chunk[0] == 0xEF && chunk[1] == 0xBB && chunk[2] == 0xBF) { 26 | transformed = chunk.slice(3); 27 | } 28 | if (transformed) { 29 | value = transformed.toString(); 30 | } 31 | return value; 32 | }; 33 | -------------------------------------------------------------------------------- /test/request-response-samples/RequestHeaders__propogate_basic_security_no_timestamp/request.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | basicuser 7 | 2014-10-12T01:02:03Z 8 | basicpass 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /src/security/CookieSecurity.js: -------------------------------------------------------------------------------- 1 | // Copyright IBM Corp. 2016. All Rights Reserved. 2 | // Node module: strong-soap 3 | // This file is licensed under the MIT License. 4 | // License text available at https://opensource.org/licenses/MIT 5 | 6 | 'use strict'; 7 | 8 | var Security = require('./security'); 9 | 10 | function hasCookieHeader (cookie) { 11 | return typeof cookie === 'object' && cookie.hasOwnProperty('set-cookie'); 12 | } 13 | 14 | /* 15 | * Accepts either a cookie or lastResponseHeaders 16 | */ 17 | class CookieSecurity extends Security { 18 | constructor(cookie, options) { 19 | super(options); 20 | 21 | cookie = hasCookieHeader(cookie) ? cookie['set-cookie'] : cookie; 22 | 23 | this.cookie = (Array.isArray(cookie) ? cookie : [cookie]) 24 | .map(c => c.split(';')[0]) 25 | .join('; '); 26 | } 27 | 28 | addHttpHeaders(headers) { 29 | headers.Cookie = this.cookie; 30 | } 31 | } 32 | 33 | module.exports = CookieSecurity; 34 | -------------------------------------------------------------------------------- /test/request-response-samples/Dummy__should_extract_envelope_from_response/name.xsd: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /test/request-response-samples/Dummy__should_handle_attributes_in_request/name.xsd: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /test/request-response-samples/Dummy__should_handle_attributes_in_response/name.xsd: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /test/request-response-samples/Dummy__should_handle_cdata_xml_in_response/name.xsd: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /test/request-response-samples/Dummy__should_return_object_when_maxOccurs_1/name.xsd: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /test/wsdl/recursive-schema-import/InfrastructureSOAP.xsd: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /test/request-response-samples/Dummy__should_return_array_despite_maxOccurs_1/name.xsd: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /test/request-response-samples/login__attributes_in_request_should_be_handled/response.json: -------------------------------------------------------------------------------- 1 | { 2 | "sessionResponse":{ 3 | "status":{ 4 | "$attributes":{ 5 | "isSuccess":"true" 6 | } 7 | }, 8 | "userId":{ 9 | "$attributes":{ 10 | "internalId":"1645" 11 | }, 12 | "name":"SCPlus Dev" 13 | }, 14 | "wsRoleList":{ 15 | "wsRole":[{ 16 | "role":{ 17 | "$attributes":{ 18 | "internalId":"2" 19 | }, 20 | "name":"Administrator" 21 | }, 22 | "isDefault":false, 23 | "isInactive":false, 24 | "isLoggedInRole":true 25 | }, 26 | { 27 | "role":{ 28 | "$attributes":{ 29 | "internalId":"3" 30 | }, 31 | "name":"User1" 32 | }, 33 | "isDefault":false, 34 | "isInactive":false, 35 | "isLoggedInRole":true 36 | }] 37 | } 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /test/request-response-samples/login__complex_schema_xmlns_should_be_handled/response.json: -------------------------------------------------------------------------------- 1 | { 2 | "sessionResponse":{ 3 | "status":{ 4 | "$attributes":{ 5 | "isSuccess":"true" 6 | } 7 | }, 8 | "userId":{ 9 | "$attributes":{ 10 | "internalId":"1645" 11 | }, 12 | "name":"SCPlus Dev" 13 | }, 14 | "wsRoleList":{ 15 | "wsRole":[{ 16 | "role":{ 17 | "$attributes":{ 18 | "internalId":"2" 19 | }, 20 | "name":"Administrator" 21 | }, 22 | "isDefault":false, 23 | "isInactive":false, 24 | "isLoggedInRole":false 25 | }, 26 | { 27 | "role":{ 28 | "$attributes":{ 29 | "internalId":"3" 30 | }, 31 | "name":"User1" 32 | }, 33 | "isDefault":false, 34 | "isInactive":false, 35 | "isLoggedInRole":false 36 | }] 37 | } 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /test/security/BearerSecurity.js: -------------------------------------------------------------------------------- 1 | // Copyright IBM Corp. 2014. All Rights Reserved. 2 | // Node module: strong-soap 3 | // This file is licensed under the MIT License. 4 | // License text available at https://opensource.org/licenses/MIT 5 | 6 | 'use strict'; 7 | 8 | describe('BearerSecurity', function() { 9 | var BearerSecurity = require('../../').BearerSecurity; 10 | var token = "token"; 11 | 12 | it('is a function', function() { 13 | BearerSecurity.should.be.type('function'); 14 | }); 15 | 16 | describe('defaultOption param', function() { 17 | it('is accepted as the second param', function() { 18 | new BearerSecurity(token, {}); 19 | }); 20 | 21 | it('is used in addOptions', function() { 22 | var options = {}; 23 | var defaultOptions = { foo: 2 }; 24 | var instance = new BearerSecurity(token, defaultOptions); 25 | instance.addOptions(options); 26 | options.should.have.property("foo", 2); 27 | }); 28 | }); 29 | }); 30 | -------------------------------------------------------------------------------- /test/request-response-samples/Dummy__ref_element_should_has_correct_namespace/response.xml: -------------------------------------------------------------------------------- 1 | --MIMEBoundary_2af39b87d6c9f2ba6d1c13d73db88d0bfdf9414786fcc315 2 | Content-Type: application/xop+xml; charset=UTF-8; type="text/xml" 3 | Content-Transfer-Encoding: binary 4 | Content-ID: <0.3af39b87d6c9f2ba6d1c13d73db88d0bfdf9414786fcc315@apache.org> 5 | 6 | 7 | 8 | 9 | 10 | 11 | 200 12 | OK 13 | 14 | 15 | 16 | 17 | --MIMEBoundary_2af39b87d6c9f2ba6d1c13d73db88d0bfdf9414786fcc315-- -------------------------------------------------------------------------------- /test/request-response-samples/Dummy__should_add_prefix_for_unqualified_global_elements/name.xsd: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /test/request-response-samples/addList__qualified_attrs/soap.messages.xsd: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /test/doc-lit-part-err-returned-test.js: -------------------------------------------------------------------------------- 1 | // Copyright IBM Corp. 2018. All Rights Reserved. 2 | // Node module: strong-soap 3 | // This file is licensed under the MIT License. 4 | // License text available at https://opensource.org/licenses/MIT 5 | 6 | "use strict"; 7 | 8 | var fs = require('fs'), 9 | soap = require('..').soap, 10 | WSDL = soap.WSDL, 11 | assert = require('assert'), 12 | path = require('path'); 13 | 14 | describe('doc-lit-part-err-returned-tests', function() { 15 | 16 | it('Loading wsdl should return an error via the callback', function (done) { 17 | WSDL.open(path.resolve(__dirname, 'wsdl/doc-lit-part-error/sample.wsdl'),function (err) { 18 | if(err){ 19 | // check error thrown 20 | assert.equal(err.message, 'Document/literal part should use element'); 21 | done(); 22 | } else { 23 | done('Expepected "Document/literal part should use element" error to be thrown'); 24 | } 25 | }); 26 | }); 27 | }); 28 | 29 | -------------------------------------------------------------------------------- /test/request-response-samples/Dummy__should_return_array_despite_maxOccurs_1/response.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Dummy Element Entry 1 9 | 10 | 11 | Dummy Element Entry 2 12 | 13 | 14 | Dummy Element Entry 3 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /test/request-response-samples/Dummy__should_use_defined_xml_key/name.xsd: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /test/request-response-samples/get__complex_extension_with_explicit_namespace/response.json: -------------------------------------------------------------------------------- 1 | { 2 | "readResponse": { 3 | "status": { 4 | "$attributes": { 5 | "isSuccess": "true" 6 | } 7 | }, 8 | "record": { 9 | "$attributes": { 10 | "internalId": "42", 11 | "externalId": "Alex Dniprovskyy", 12 | "$xsiType": { 13 | "type": "Contact", 14 | "xmlns": "urn:relationships_2011_1.lists.webservices.netsuite.com" 15 | } 16 | }, 17 | "customForm": { 18 | "$attributes": { 19 | "internalId": "-40" 20 | }, 21 | "name": "Standard Contact Form" 22 | }, 23 | "entityId": "Allister Sullivan", 24 | "company": { 25 | "$attributes": { 26 | "internalId": "43" 27 | }, 28 | "name": "Sullivan Distributors, Inc." 29 | }, 30 | "salutation": "Mr.", 31 | "firstName": "Allister", 32 | "lastName": "Sullivan" 33 | } 34 | } 35 | } -------------------------------------------------------------------------------- /test/request-response-samples/get__complex_extension_without_explicit_namespace/response.json: -------------------------------------------------------------------------------- 1 | { 2 | "readResponse": { 3 | "status": { 4 | "$attributes": { 5 | "isSuccess": "true" 6 | } 7 | }, 8 | "record": { 9 | "$attributes": { 10 | "internalId": "42", 11 | "externalId": "Alex Dniprovskyy", 12 | "$xsiType": { 13 | "type": "Contact", 14 | "xmlns": "urn:relationships_2011_1.lists.webservices.netsuite.com" 15 | } 16 | }, 17 | "customForm": { 18 | "$attributes": { 19 | "internalId": "-40" 20 | }, 21 | "name": "Standard Contact Form" 22 | }, 23 | "entityId": "Allister Sullivan", 24 | "company": { 25 | "$attributes": { 26 | "internalId": "43" 27 | }, 28 | "name": "Sullivan Distributors, Inc." 29 | }, 30 | "salutation": "Mr.", 31 | "firstName": "Allister", 32 | "lastName": "Sullivan" 33 | } 34 | } 35 | } -------------------------------------------------------------------------------- /test/request-response-samples/login__attributes_namespace_should_be_configurable/response.json: -------------------------------------------------------------------------------- 1 | { 2 | "sessionResponse":{ 3 | "status":{ 4 | "$thisIsAttributesKey":{ 5 | "isSuccess":"true" 6 | } 7 | }, 8 | "userId":{ 9 | "$thisIsAttributesKey":{ 10 | "internalId":"1645" 11 | }, 12 | "name":"SCPlus Dev" 13 | }, 14 | "wsRoleList":{ 15 | "wsRole":[{ 16 | "role":{ 17 | "$thisIsAttributesKey":{ 18 | "internalId":"2" 19 | }, 20 | "name":"Administrator" 21 | }, 22 | "isDefault":false, 23 | "isInactive":false, 24 | "isLoggedInRole":true 25 | }, 26 | { 27 | "role":{ 28 | "$thisIsAttributesKey":{ 29 | "internalId":"3" 30 | }, 31 | "name":"User1" 32 | }, 33 | "isDefault":false, 34 | "isInactive":false, 35 | "isLoggedInRole":true 36 | }] 37 | } 38 | } 39 | } -------------------------------------------------------------------------------- /test/wsdl/typeref/request.xml.js: -------------------------------------------------------------------------------- 1 | // Copyright IBM Corp. 2015,2018. All Rights Reserved. 2 | // Node module: strong-soap 3 | // This file is licensed under the MIT License. 4 | // License text available at https://opensource.org/licenses/MIT 5 | 6 | module.exports = 7 | '\n '+ 8 | '\n '+ 9 | '\n '+ 10 | '\n '+ 11 | '001\n '+ 12 | '\n '+ 13 | '\n '+ 14 | 'item01\n '+ 15 | '100\n '+ 16 | '\n '+ 17 | '\n '+ 18 | 'item02\n '+ 19 | '50\n '+ 20 | '\n '+ 21 | '\n '+ 22 | '\n'+ 23 | '\n'; 24 | -------------------------------------------------------------------------------- /test/request-response-samples/Dummy__should_extract_envelope_from_response/response.xml: -------------------------------------------------------------------------------- 1 | --MIMEBoundary_2af39b87d6c9f2ba6d1c13d73db88d0bfdf9414786fcc315 2 | Content-Type: application/xop+xml; charset=UTF-8; type="text/xml" 3 | Content-Transfer-Encoding: binary 4 | Content-ID: <0.3af39b87d6c9f2ba6d1c13d73db88d0bfdf9414786fcc315@apache.org> 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | Dummy Element Entry 14 | 15 | 16 | 17 | 18 | 19 | 20 | --MIMEBoundary_2af39b87d6c9f2ba6d1c13d73db88d0bfdf9414786fcc315-- -------------------------------------------------------------------------------- /src/parser/soap/soapElement.js: -------------------------------------------------------------------------------- 1 | // Copyright IBM Corp. 2016,2017. All Rights Reserved. 2 | // Node module: strong-soap 3 | // This file is licensed under the MIT License. 4 | // License text available at https://opensource.org/licenses/MIT 5 | 6 | 'use strict'; 7 | 8 | var Element = require('../element'); 9 | 10 | class SOAPElement extends Element { 11 | constructor(nsName, attrs, options) { 12 | super(nsName, attrs, options); 13 | 14 | if(this.name === 'body' || this.name === 'header' || 15 | this.name === 'fault' || this.name === 'headerfault') { 16 | this.use = this.$use; 17 | if (this.use === 'encoded') { 18 | this.encodingStyle = this.$encodingStyle; 19 | } 20 | // The namespace attribute of soap:body will be used for RPC style 21 | // operation 22 | this.namespace = this.$namespace; 23 | } 24 | } 25 | } 26 | 27 | SOAPElement.targetNamespace = Element.namespaces.soap; 28 | SOAPElement.allowedChildren = ['documentation']; 29 | 30 | module.exports = SOAPElement; 31 | -------------------------------------------------------------------------------- /src/parser/soap12/soapElement.js: -------------------------------------------------------------------------------- 1 | // Copyright IBM Corp. 2016,2017. All Rights Reserved. 2 | // Node module: strong-soap 3 | // This file is licensed under the MIT License. 4 | // License text available at https://opensource.org/licenses/MIT 5 | 6 | 'use strict'; 7 | 8 | var Element = require('../element'); 9 | 10 | class SOAPElement extends Element { 11 | constructor(nsName, attrs, options) { 12 | super(nsName, attrs, options); 13 | 14 | if(this.name === 'body' || this.name === 'header' || 15 | this.name === 'fault' || this.name === 'headerfault') { 16 | this.use = this.$use; 17 | if (this.use === 'encoded') { 18 | this.encodingStyle = this.$encodingStyle; 19 | } 20 | // The namespace attribute of soap:body will be used for RPC style 21 | // operation 22 | this.namespace = this.$namespace; 23 | } 24 | } 25 | } 26 | 27 | SOAPElement.targetNamespace = Element.namespaces.soap12; 28 | SOAPElement.allowedChildren = ['documentation']; 29 | 30 | module.exports = SOAPElement; 31 | -------------------------------------------------------------------------------- /test/request-response-samples/Dummy__should_handle_xml_date_time_dateTime/request.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 2018-09-01Z 8 | 10:20:09.000Z 9 | 10 | 11 | 123 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /src/parser/xsd.js: -------------------------------------------------------------------------------- 1 | // Copyright IBM Corp. 2016,2017. All Rights Reserved. 2 | // Node module: strong-soap 3 | // This file is licensed under the MIT License. 4 | // License text available at https://opensource.org/licenses/MIT 5 | 6 | 'use strict'; 7 | 8 | var helper = require('./helper'); 9 | var builtinTypes; 10 | 11 | function getBuiltinTypes() { 12 | if (builtinTypes) return builtinTypes; 13 | builtinTypes = {}; 14 | var SimpleType = require('./xsd/simpleType'); 15 | for (let t in helper.schemaTypes) { 16 | let type = new SimpleType('xsd:simpleType', 17 | {name: t, 'xmlns:xsd': helper.namespaces.xsd}, {}); 18 | type.targetNamespace = helper.namespaces.xsd; 19 | type.jsType = helper.schemaTypes[t]; 20 | builtinTypes[t] = type; 21 | } 22 | return builtinTypes; 23 | } 24 | 25 | exports.getBuiltinTypes = getBuiltinTypes; 26 | 27 | exports.getBuiltinType = function(name) { 28 | return getBuiltinTypes()[name]; 29 | }; 30 | 31 | 32 | function parse(value, type) { 33 | var SimpleType = require('./xsd/simpleType'); 34 | } 35 | -------------------------------------------------------------------------------- /test/wsdl/Name.xsd: -------------------------------------------------------------------------------- 1 | 2 | 6 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /test/request-response-samples/UpdateProfile__correct_namespaces_for_elements_with_base/request.json: -------------------------------------------------------------------------------- 1 | { 2 | "UpdateProfileRequest": { 3 | "Profile": { 4 | "IDs": { 5 | "UniqueID": [ 6 | { 7 | "$attributes": { 8 | "source": "TESTSOURCE" 9 | }, 10 | "$value": 100 11 | } 12 | ] 13 | }, 14 | "Addresses": { 15 | "NameAddress": [ 16 | { 17 | "AddressLine": "Another Address" 18 | }, 19 | { 20 | "AddressLine": "My Address" 21 | } 22 | ] 23 | }, 24 | "Phones": { 25 | "NamePhone": [ 26 | { 27 | "$attributes": { 28 | "primary": true 29 | }, 30 | "PhoneData": { 31 | "PhoneNumber": "123" 32 | } 33 | }, 34 | { 35 | "$attributes": { 36 | "primary": false 37 | }, 38 | "PhoneData": { 39 | "PhoneNumber": "456" 40 | } 41 | } 42 | ] 43 | } 44 | } 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /test/security/BasicAuthSecurity.js: -------------------------------------------------------------------------------- 1 | // Copyright IBM Corp. 2014. All Rights Reserved. 2 | // Node module: strong-soap 3 | // This file is licensed under the MIT License. 4 | // License text available at https://opensource.org/licenses/MIT 5 | 6 | 'use strict'; 7 | 8 | describe('BasicAuthSecurity', function() { 9 | var BasicAuthSecurity = require('../../').BasicAuthSecurity; 10 | var username = "admin"; 11 | var password = "password1234"; 12 | 13 | it('is a function', function() { 14 | BasicAuthSecurity.should.be.type('function'); 15 | }); 16 | 17 | describe('defaultOption param', function() { 18 | it('is accepted as the third param', function() { 19 | new BasicAuthSecurity(username, password, {}); 20 | }); 21 | 22 | it('is used in addOptions', function() { 23 | var options = {}; 24 | var defaultOptions = { foo: 3 }; 25 | var instance = new BasicAuthSecurity(username, password, defaultOptions); 26 | instance.addOptions(options); 27 | options.should.have.property("foo", 3); 28 | }); 29 | }); 30 | }); 31 | -------------------------------------------------------------------------------- /src/parser/soap/header.js: -------------------------------------------------------------------------------- 1 | // Copyright IBM Corp. 2016,2017. All Rights Reserved. 2 | // Node module: strong-soap 3 | // This file is licensed under the MIT License. 4 | // License text available at https://opensource.org/licenses/MIT 5 | 6 | 'use strict'; 7 | 8 | var SOAPElement = require('./soapElement'); 9 | var helper = require('../helper'); 10 | 11 | /** 12 | * * 14 | * * 16 | * 17 | */ 18 | class Header extends SOAPElement { 19 | constructor(nsName, attrs, options) { 20 | super(nsName, attrs, options); 21 | this.fault = null; 22 | } 23 | 24 | addChild(child) { 25 | if (child.name === 'headerfault') { 26 | this.fault = child; 27 | } 28 | } 29 | } 30 | 31 | Header.elementName = 'header'; 32 | Header.allowedChildren = ['documentation', 'headerFault']; 33 | 34 | module.exports = Header; 35 | -------------------------------------------------------------------------------- /test/request-response-samples/readMetadata__should_respect_xsi_type_attribute/response.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | 8 | 9 | Opportunity 10 | 11 | Some Process 12 | true 13 | 14 | 15 | Another Process 16 | false 17 | 18 | false 19 | true 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /test/request-response-samples/UpdateProfile__correct_namespaces_for_elements_with_base_ignorednamespaces/request.json: -------------------------------------------------------------------------------- 1 | { 2 | "UpdateProfileRequest": { 3 | "Profile": { 4 | "IDs": { 5 | "UniqueID": [ 6 | { 7 | "$attributes": { 8 | "source": "TESTSOURCE" 9 | }, 10 | "$value": 100 11 | } 12 | ] 13 | }, 14 | "Addresses": { 15 | "NameAddress": [ 16 | { 17 | "AddressLine": "Another Address" 18 | }, 19 | { 20 | "AddressLine": "My Address" 21 | } 22 | ] 23 | }, 24 | "Phones": { 25 | "NamePhone": [ 26 | { 27 | "$attributes": { 28 | "primary": true 29 | }, 30 | "PhoneData": { 31 | "PhoneNumber": "123" 32 | } 33 | }, 34 | { 35 | "$attributes": { 36 | "primary": false 37 | }, 38 | "PhoneData": { 39 | "PhoneNumber": "456" 40 | } 41 | } 42 | ] 43 | } 44 | } 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /test/soap-failure.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 6 | 7 | 8 | env:Sender 9 | 10 | rpc:BadArguments 11 | 12 | 13 | 14 | Processing error 15 | Chyba zpracování 16 | 17 | http://test:80/test 18 | http://test.com/test 19 | 20 | 22 | Name does not match card number 23 | 999 24 | 25 | 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /test/wsdl/unsupported/ImportSample.xsd: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /test/request-response-samples/UpdateProfile__correct_namespaces_in_sequence_with_imports/request.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 100 9 | 10 | 11 | 12 | 13 | 1 14 | 15 | 16 | 17 | 18 | 2 19 | 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /src/parser/xsd/group.js: -------------------------------------------------------------------------------- 1 | // Copyright IBM Corp. 2016,2017. All Rights Reserved. 2 | // Node module: strong-soap 3 | // This file is licensed under the MIT License. 4 | // License text available at https://opensource.org/licenses/MIT 5 | 6 | 'use strict'; 7 | 8 | var XSDElement = require('./xsdElement'); 9 | 10 | class Group extends XSDElement { 11 | constructor(nsName, attrs, options) { 12 | super(nsName, attrs, options); 13 | } 14 | 15 | postProcess(defintions) { 16 | var schemas = defintions.schemas; 17 | if (this.$ref) { 18 | this.ref = this.resolveSchemaObject(schemas, 'group', this.$ref); 19 | } 20 | } 21 | 22 | describe(definitions) { 23 | if (this.descriptor) return this.descriptor; 24 | if (this.ref) { 25 | this.descriptor = this.ref.describe(definitions); 26 | } else { 27 | this.descriptor = this.describeChildren(definitions); 28 | } 29 | return this.descriptor; 30 | } 31 | } 32 | 33 | Group.elementName = 'group'; 34 | Group.allowedChildren = ['annotation', 'all', 'choice', 'sequence']; 35 | 36 | module.exports = Group; 37 | -------------------------------------------------------------------------------- /test/request-response-samples/Dummy__ref_element_should_has_correct_namespace/main.xsd: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /test/request-response-samples/RequestHeaders__propogate_basic_security_no_token_created/request.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 2014-10-12T01:02:03Z 7 | 2014-10-12T01:12:03Z 8 | 9 | 10 | basicuser 11 | basicpass 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /test/request-response-samples/login__error_returned_should_contain_root_Json_on_fault/response.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | soapenv:Server.userException 6 | You have entered an invalid email address or password. Please try again. 7 | 8 | 9 | INVALID_LOGIN_CREDENTIALS 10 | You have entered an invalid email address or password. Please try again. 11 | 12 | partners-java10009.bos.netledger.com 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /test/request-response-samples/GetAccountXml__non_xmlns_attributes_should_be_returned/response.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 8 | 0 9 | 10 | 11 | 18 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /test/request-response-samples/update__complex_extension_with_array_attributes/response.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | WEBSERVICES_TSTDRV1081821_03262014105141171582141231_57da7cf 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /.github/stale.yml: -------------------------------------------------------------------------------- 1 | # Number of days of inactivity before an issue becomes stale 2 | daysUntilStale: 60 3 | # Number of days of inactivity before a stale issue is closed 4 | daysUntilClose: 14 5 | # Issues with these labels will never be considered stale 6 | exemptLabels: 7 | - pinned 8 | - security 9 | - critical 10 | - p1 11 | - major 12 | # Label to use when marking an issue as stale 13 | staleLabel: stale 14 | # Comment to post when marking an issue as stale. Set to `false` to disable 15 | markComment: > 16 | This issue has been automatically marked as stale because it has not had 17 | recent activity. It will be closed if no further activity occurs. Thank you 18 | for your contributions. 19 | # Comment to post when closing a stale issue. Set to `false` to disable 20 | closeComment: > 21 | This issue has been closed due to continued inactivity. Thank you for your understanding. 22 | If you believe this to be in error, please contact one of the code owners, 23 | listed in the [`CODEOWNERS`](https://github.com/loopbackio/strong-soap/blob/master/CODEOWNERS) file at the top-level of this repository. 24 | -------------------------------------------------------------------------------- /test/request-response-samples/Dummy__should_use_defined_xml_key/common.xsd: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /test/request-response-samples/Dummy__should_handle_xml_date_time_dateTime/name.xsd: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /test/request-response-samples/update__complex_extension_fields_in_parent_without_explicit_namespace/response.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | WEBSERVICES_TSTDRV1081821_03262014105141171582141231_57da7cf 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /test/request-response-samples/getAvailability__should_not_fail_without_children/imported.wsdl: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /test/request-response-samples/update__complex_extension_fields_in_parent_without_explicit_namespace/request.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | officephone 9 | 10 | Allister 11 | Sullivan 12 | 800-555-2819 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /src/security/NTLMSecurity.js: -------------------------------------------------------------------------------- 1 | // Copyright IBM Corp. 2016. All Rights Reserved. 2 | // Node module: strong-soap 3 | // This file is licensed under the MIT License. 4 | // License text available at https://opensource.org/licenses/MIT 5 | 6 | 'use strict'; 7 | 8 | var _ = require('lodash'); 9 | var Security = require('./security'); 10 | 11 | class NTLMSecurity extends Security { 12 | constructor(username, password, domain, workstation, wsdlAuthRequired, options) { 13 | super(options); 14 | this.username = username; 15 | this.password = password; 16 | this.domain = domain; 17 | this.workstation = workstation; 18 | //set this to true/false if remote WSDL retrieval needs NTLM authentication or not 19 | this.wsdlAuthRequired = wsdlAuthRequired; 20 | } 21 | 22 | addOptions(options) { 23 | options.username = this.username; 24 | options.password = this.password; 25 | options.domain = this.domain; 26 | options.workstation = this.workstation; 27 | options.wsdlAuthRequired = this.wsdlAuthRequired; 28 | _.merge(options, this.options); 29 | } 30 | } 31 | 32 | 33 | module.exports = NTLMSecurity; 34 | -------------------------------------------------------------------------------- /test/client-attachment-test.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | var fs = require('fs'), 4 | http = require('..').http, 5 | //http = require('http'), 6 | //WSDL = soap.WSDL, 7 | assert = require('assert'), 8 | QName = require('..').QName; 9 | 10 | describe('SOAP Http attachment', function() { 11 | it('attachment null', function(done){ 12 | var httpClient = new http({}) 13 | const option = httpClient.buildRequest('http://localhost:1', {}, {}, {}); 14 | assert.ok(!option.multipart) 15 | assert.ok(option.body) 16 | done() 17 | }) 18 | 19 | it('attachment length 1', function(done){ 20 | var httpClient = new http({}) 21 | const optionEx = { 22 | attachments:[{ 23 | name: 'teste', 24 | contentId: '123445555', 25 | mimetype: 'jpeg', 26 | body: 'stream file' 27 | }] 28 | } 29 | const option = httpClient.buildRequest('http://localhost:1', {}, {}, optionEx); 30 | assert.ok(option.multipart.length > 0) 31 | assert.ok(!option.body) 32 | done() 33 | }) 34 | }) --------------------------------------------------------------------------------