summaryrefslogtreecommitdiff
path: root/ext/soap/tests/soap12
diff options
context:
space:
mode:
Diffstat (limited to 'ext/soap/tests/soap12')
-rw-r--r--ext/soap/tests/soap12/T01.phpt23
-rw-r--r--ext/soap/tests/soap12/T02.phpt23
-rw-r--r--ext/soap/tests/soap12/T03.phpt22
-rw-r--r--ext/soap/tests/soap12/T04.phpt23
-rw-r--r--ext/soap/tests/soap12/T05.phpt23
-rw-r--r--ext/soap/tests/soap12/T10.phpt23
-rw-r--r--ext/soap/tests/soap12/T11.phpt24
-rw-r--r--ext/soap/tests/soap12/T12.phpt23
-rw-r--r--ext/soap/tests/soap12/T13.phpt23
-rw-r--r--ext/soap/tests/soap12/T14.phpt23
-rw-r--r--ext/soap/tests/soap12/T15.phpt24
-rw-r--r--ext/soap/tests/soap12/T19.phpt24
-rw-r--r--ext/soap/tests/soap12/T22.phpt24
-rw-r--r--ext/soap/tests/soap12/T23.phpt24
-rw-r--r--ext/soap/tests/soap12/T24.phpt21
-rw-r--r--ext/soap/tests/soap12/T25.phpt22
-rw-r--r--ext/soap/tests/soap12/T26.phpt21
-rw-r--r--ext/soap/tests/soap12/T27.phpt29
-rw-r--r--ext/soap/tests/soap12/T28.phpt22
-rw-r--r--ext/soap/tests/soap12/T29.phpt23
-rw-r--r--ext/soap/tests/soap12/T30.phpt20
-rw-r--r--ext/soap/tests/soap12/T31.phpt22
-rw-r--r--ext/soap/tests/soap12/T32.phpt25
-rw-r--r--ext/soap/tests/soap12/T33.phpt20
-rw-r--r--ext/soap/tests/soap12/T34.phpt24
-rw-r--r--ext/soap/tests/soap12/T35.phpt24
-rw-r--r--ext/soap/tests/soap12/T36.phpt23
-rw-r--r--ext/soap/tests/soap12/T37.phpt23
-rw-r--r--ext/soap/tests/soap12/T38_1.phpt27
-rw-r--r--ext/soap/tests/soap12/T38_2.phpt27
-rw-r--r--ext/soap/tests/soap12/T39.phpt22
-rw-r--r--ext/soap/tests/soap12/T40.phpt26
-rw-r--r--ext/soap/tests/soap12/T41.phpt30
-rw-r--r--ext/soap/tests/soap12/T42.phpt41
-rw-r--r--ext/soap/tests/soap12/T43.phpt30
-rw-r--r--ext/soap/tests/soap12/T44.phpt27
-rw-r--r--ext/soap/tests/soap12/T45.phpt35
-rw-r--r--ext/soap/tests/soap12/T46.phpt36
-rw-r--r--ext/soap/tests/soap12/T47.phpt31
-rw-r--r--ext/soap/tests/soap12/T48.phpt29
-rw-r--r--ext/soap/tests/soap12/T49.phpt29
-rw-r--r--ext/soap/tests/soap12/T50.phpt29
-rw-r--r--ext/soap/tests/soap12/T51.phpt27
-rw-r--r--ext/soap/tests/soap12/T52.phpt25
-rw-r--r--ext/soap/tests/soap12/T53.phpt25
-rw-r--r--ext/soap/tests/soap12/T54.phpt25
-rw-r--r--ext/soap/tests/soap12/T55.phpt25
-rw-r--r--ext/soap/tests/soap12/T56.phpt34
-rw-r--r--ext/soap/tests/soap12/T57.phpt32
-rw-r--r--ext/soap/tests/soap12/T58.phpt28
-rw-r--r--ext/soap/tests/soap12/T59.phpt28
-rw-r--r--ext/soap/tests/soap12/T60.phpt29
-rw-r--r--ext/soap/tests/soap12/T61.phpt28
-rw-r--r--ext/soap/tests/soap12/T63.phpt25
-rw-r--r--ext/soap/tests/soap12/T64.phpt24
-rw-r--r--ext/soap/tests/soap12/T65.phpt26
-rw-r--r--ext/soap/tests/soap12/T66.phpt23
-rw-r--r--ext/soap/tests/soap12/T67.phpt23
-rw-r--r--ext/soap/tests/soap12/T68.phpt32
-rw-r--r--ext/soap/tests/soap12/T69.phpt19
-rw-r--r--ext/soap/tests/soap12/T70.phpt23
-rw-r--r--ext/soap/tests/soap12/T71.phpt24
-rw-r--r--ext/soap/tests/soap12/T72.phpt22
-rw-r--r--ext/soap/tests/soap12/T73.phpt26
-rw-r--r--ext/soap/tests/soap12/T74.phpt28
-rw-r--r--ext/soap/tests/soap12/T75.phpt28
-rw-r--r--ext/soap/tests/soap12/T76_1.phpt25
-rw-r--r--ext/soap/tests/soap12/T76_2.phpt32
-rw-r--r--ext/soap/tests/soap12/T77_1.phpt25
-rw-r--r--ext/soap/tests/soap12/T77_2.phpt24
-rw-r--r--ext/soap/tests/soap12/T77_3.phpt27
-rw-r--r--ext/soap/tests/soap12/T78.phpt23
-rw-r--r--ext/soap/tests/soap12/T80.phpt19
-rw-r--r--ext/soap/tests/soap12/skipif.inc3
-rw-r--r--ext/soap/tests/soap12/soap12-test.inc131
-rw-r--r--ext/soap/tests/soap12/soap12-test.wsdl771
76 files changed, 2773 insertions, 0 deletions
diff --git a/ext/soap/tests/soap12/T01.phpt b/ext/soap/tests/soap12/T01.phpt
new file mode 100644
index 0000000..d584812
--- /dev/null
+++ b/ext/soap/tests/soap12/T01.phpt
@@ -0,0 +1,23 @@
+--TEST--
+SOAP 1.2: T01 echoOk
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+$HTTP_RAW_POST_DATA = <<<EOF
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">
+ <env:Header>
+ <test:echoOk xmlns:test="http://example.org/ts-tests"
+ env:role="http://www.w3.org/2003/05/soap-envelope/role/next">foo</test:echoOk>
+ </env:Header>
+ <env:Body>
+ </env:Body>
+</env:Envelope>
+EOF;
+include "soap12-test.inc";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope" xmlns:ns1="http://example.org/ts-tests"><env:Header><ns1:responseOk>foo</ns1:responseOk></env:Header><env:Body/></env:Envelope>
+ok
diff --git a/ext/soap/tests/soap12/T02.phpt b/ext/soap/tests/soap12/T02.phpt
new file mode 100644
index 0000000..db2c260
--- /dev/null
+++ b/ext/soap/tests/soap12/T02.phpt
@@ -0,0 +1,23 @@
+--TEST--
+SOAP 1.2: T02 echoOk
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+$HTTP_RAW_POST_DATA = <<<EOF
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">
+ <env:Header>
+ <test:echoOk xmlns:test="http://example.org/ts-tests"
+ env:role="http://example.org/ts-tests/C">foo</test:echoOk>
+ </env:Header>
+ <env:Body>
+ </env:Body>
+</env:Envelope>
+EOF;
+include "soap12-test.inc";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope" xmlns:ns1="http://example.org/ts-tests"><env:Header><ns1:responseOk>foo</ns1:responseOk></env:Header><env:Body/></env:Envelope>
+ok
diff --git a/ext/soap/tests/soap12/T03.phpt b/ext/soap/tests/soap12/T03.phpt
new file mode 100644
index 0000000..19c29dd
--- /dev/null
+++ b/ext/soap/tests/soap12/T03.phpt
@@ -0,0 +1,22 @@
+--TEST--
+SOAP 1.2: T03 echoOk
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+$HTTP_RAW_POST_DATA = <<<EOF
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">
+ <env:Header>
+ <test:echoOk xmlns:test="http://example.org/ts-tests">foo</test:echoOk>
+ </env:Header>
+ <env:Body>
+ </env:Body>
+</env:Envelope>
+EOF;
+include "soap12-test.inc";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope" xmlns:ns1="http://example.org/ts-tests"><env:Header><ns1:responseOk>foo</ns1:responseOk></env:Header><env:Body/></env:Envelope>
+ok
diff --git a/ext/soap/tests/soap12/T04.phpt b/ext/soap/tests/soap12/T04.phpt
new file mode 100644
index 0000000..7445cae
--- /dev/null
+++ b/ext/soap/tests/soap12/T04.phpt
@@ -0,0 +1,23 @@
+--TEST--
+SOAP 1.2: T04 echoOk
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+$HTTP_RAW_POST_DATA = <<<EOF
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">
+ <env:Header>
+ <test:echoOk xmlns:test="http://example.org/ts-tests"
+ env:role="http://www.w3.org/2003/05/soap-envelope/role/ultimateReceiver">foo</test:echoOk>
+ </env:Header>
+ <env:Body>
+ </env:Body>
+</env:Envelope>
+EOF;
+include "soap12-test.inc";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope" xmlns:ns1="http://example.org/ts-tests"><env:Header><ns1:responseOk>foo</ns1:responseOk></env:Header><env:Body/></env:Envelope>
+ok
diff --git a/ext/soap/tests/soap12/T05.phpt b/ext/soap/tests/soap12/T05.phpt
new file mode 100644
index 0000000..187eb2e
--- /dev/null
+++ b/ext/soap/tests/soap12/T05.phpt
@@ -0,0 +1,23 @@
+--TEST--
+SOAP 1.2: T05 echoOk
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+$HTTP_RAW_POST_DATA = <<<EOF
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">
+ <env:Header>
+ <test:echoOk xmlns:test="http://example.org/ts-tests"
+ env:role="http://example.org/ts-tests/B">foo</test:echoOk>
+ </env:Header>
+ <env:Body>
+ </env:Body>
+</env:Envelope>
+EOF;
+include "soap12-test.inc";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"><env:Body/></env:Envelope>
+ok
diff --git a/ext/soap/tests/soap12/T10.phpt b/ext/soap/tests/soap12/T10.phpt
new file mode 100644
index 0000000..54186f6
--- /dev/null
+++ b/ext/soap/tests/soap12/T10.phpt
@@ -0,0 +1,23 @@
+--TEST--
+SOAP 1.2: T10 unknownHdr
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+$HTTP_RAW_POST_DATA = <<<EOF
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">
+ <env:Header>
+ <test:Unknown xmlns:test="http://example.org/ts-tests"
+ env:role="http://www.w3.org/2003/05/soap-envelope/role/ultimateReceiver">foo</test:Unknown>
+ </env:Header>
+ <env:Body>
+ </env:Body>
+</env:Envelope>
+EOF;
+include "soap12-test.inc";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"><env:Body/></env:Envelope>
+ok
diff --git a/ext/soap/tests/soap12/T11.phpt b/ext/soap/tests/soap12/T11.phpt
new file mode 100644
index 0000000..3423d54
--- /dev/null
+++ b/ext/soap/tests/soap12/T11.phpt
@@ -0,0 +1,24 @@
+--TEST--
+SOAP 1.2: T11 unknownHdr
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+$HTTP_RAW_POST_DATA = <<<EOF
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">
+ <env:Header>
+ <test:Unknown xmlns:test="http://example.org/ts-tests"
+ env:role="http://www.w3.org/2003/05/soap-envelope/role/ultimateReceiver"
+ env:mustUnderstand="false">foo</test:Unknown>
+ </env:Header>
+ <env:Body>
+ </env:Body>
+</env:Envelope>
+EOF;
+include "soap12-test.inc";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"><env:Body/></env:Envelope>
+ok
diff --git a/ext/soap/tests/soap12/T12.phpt b/ext/soap/tests/soap12/T12.phpt
new file mode 100644
index 0000000..c67917f
--- /dev/null
+++ b/ext/soap/tests/soap12/T12.phpt
@@ -0,0 +1,23 @@
+--TEST--
+SOAP 1.2: T12 unknownHdr
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+$HTTP_RAW_POST_DATA = <<<EOF
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">
+ <env:Header>
+ <test:Unknown xmlns:test="http://example.org/ts-tests"
+ env:role="http://www.w3.org/2003/05/soap-envelope/role/ultimateReceiver"
+ env:mustUnderstand="1">foo</test:Unknown>
+ </env:Header>
+ <env:Body>
+ </env:Body>
+</env:Envelope>
+EOF;
+include "soap12-test.inc";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"><env:Body><env:Fault><env:Code><env:Value>env:MustUnderstand</env:Value></env:Code><env:Reason><env:Text>Header not understood</env:Text></env:Reason></env:Fault></env:Body></env:Envelope>
diff --git a/ext/soap/tests/soap12/T13.phpt b/ext/soap/tests/soap12/T13.phpt
new file mode 100644
index 0000000..95e1c8a
--- /dev/null
+++ b/ext/soap/tests/soap12/T13.phpt
@@ -0,0 +1,23 @@
+--TEST--
+SOAP 1.2: T13 unknownHdr
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+$HTTP_RAW_POST_DATA = <<<EOF
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">
+ <env:Header>
+ <test:Unknown xmlns:test="http://example.org/ts-tests"
+ env:role="http://www.w3.org/2003/05/soap-envelope/role/ultimateReceiver"
+ env:mustUnderstand="true">foo</test:Unknown>
+ </env:Header>
+ <env:Body>
+ </env:Body>
+</env:Envelope>
+EOF;
+include "soap12-test.inc";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"><env:Body><env:Fault><env:Code><env:Value>env:MustUnderstand</env:Value></env:Code><env:Reason><env:Text>Header not understood</env:Text></env:Reason></env:Fault></env:Body></env:Envelope>
diff --git a/ext/soap/tests/soap12/T14.phpt b/ext/soap/tests/soap12/T14.phpt
new file mode 100644
index 0000000..dbf4e1b
--- /dev/null
+++ b/ext/soap/tests/soap12/T14.phpt
@@ -0,0 +1,23 @@
+--TEST--
+SOAP 1.2: T14 echoOk
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+$HTTP_RAW_POST_DATA = <<<EOF
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">
+ <env:Header>
+ <test:echoOk xmlns:test="http://example.org/ts-tests"
+ env:role="http://www.w3.org/2003/05/soap-envelope/role/ultimateReceiver"
+ env:mustUnderstand="wrong">foo</test:echoOk>
+ </env:Header>
+ <env:Body>
+ </env:Body>
+</env:Envelope>
+EOF;
+include "soap12-test.inc";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"><env:Body><env:Fault><env:Code><env:Value>env:Sender</env:Value></env:Code><env:Reason><env:Text>mustUnderstand value is not boolean</env:Text></env:Reason></env:Fault></env:Body></env:Envelope>
diff --git a/ext/soap/tests/soap12/T15.phpt b/ext/soap/tests/soap12/T15.phpt
new file mode 100644
index 0000000..546f942
--- /dev/null
+++ b/ext/soap/tests/soap12/T15.phpt
@@ -0,0 +1,24 @@
+--TEST--
+SOAP 1.2: T15 unknownHdr
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+$HTTP_RAW_POST_DATA = <<<EOF
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">
+ <env:Header>
+ <test:Unknown xmlns:test="http://example.org/ts-tests"
+ env:role="http://example.org/ts-tests/B"
+ env:mustUnderstand="1">foo</test:Unknown>
+ </env:Header>
+ <env:Body>
+ </env:Body>
+</env:Envelope>
+EOF;
+include "soap12-test.inc";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"><env:Body/></env:Envelope>
+ok
diff --git a/ext/soap/tests/soap12/T19.phpt b/ext/soap/tests/soap12/T19.phpt
new file mode 100644
index 0000000..8ddb5b4
--- /dev/null
+++ b/ext/soap/tests/soap12/T19.phpt
@@ -0,0 +1,24 @@
+--TEST--
+SOAP 1.2: T19 echoOk
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+$HTTP_RAW_POST_DATA = <<<EOF
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">
+ <env:Header>
+ <test:echoOk xmlns:test="http://example.org/ts-tests"
+ env:role="http://www.w3.org/2003/05/soap-envelope/role/none"
+ env:mustUnderstand="true">foo</test:echoOk>
+ </env:Header>
+ <env:Body>
+ </env:Body>
+</env:Envelope>
+EOF;
+include "soap12-test.inc";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"><env:Body/></env:Envelope>
+ok
diff --git a/ext/soap/tests/soap12/T22.phpt b/ext/soap/tests/soap12/T22.phpt
new file mode 100644
index 0000000..5844550
--- /dev/null
+++ b/ext/soap/tests/soap12/T22.phpt
@@ -0,0 +1,24 @@
+--TEST--
+SOAP 1.2: T22 echoOk
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+$HTTP_RAW_POST_DATA = <<<EOF
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">
+ <env:Header>
+ <test:echoOk xmlns:test="http://example.org/ts-tests"
+ env:mustUnderstand = "1">foo</test:echoOk>
+ </env:Header>
+ <env:Body>
+ <test:echoOk xmlns:test="http://example.org/ts-tests">foo</test:echoOk>
+ </env:Body>
+</env:Envelope>
+EOF;
+include "soap12-test.inc";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope" xmlns:ns1="http://example.org/ts-tests"><env:Header><ns1:responseOk>foo</ns1:responseOk></env:Header><env:Body><ns1:responseOk>foo</ns1:responseOk></env:Body></env:Envelope>
+ok
diff --git a/ext/soap/tests/soap12/T23.phpt b/ext/soap/tests/soap12/T23.phpt
new file mode 100644
index 0000000..c676fb1
--- /dev/null
+++ b/ext/soap/tests/soap12/T23.phpt
@@ -0,0 +1,24 @@
+--TEST--
+SOAP 1.2: T23 echoOk
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+$HTTP_RAW_POST_DATA = <<<EOF
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">
+ <env:Header>
+ <test:Unknown xmlns:test="http://example.org/ts-tests"
+ env:mustUnderstand="1">foo</test:Unknown>
+ <test:echoOk xmlns:test="http://example.org/ts-tests"
+ env:mustUnderstand="wrong">foo</test:echoOk>
+ </env:Header>
+ <env:Body>
+ </env:Body>
+</env:Envelope>
+EOF;
+include "soap12-test.inc";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"><env:Body><env:Fault><env:Code><env:Value>env:Sender</env:Value></env:Code><env:Reason><env:Text>mustUnderstand value is not boolean</env:Text></env:Reason></env:Fault></env:Body></env:Envelope>
diff --git a/ext/soap/tests/soap12/T24.phpt b/ext/soap/tests/soap12/T24.phpt
new file mode 100644
index 0000000..ebee3b7
--- /dev/null
+++ b/ext/soap/tests/soap12/T24.phpt
@@ -0,0 +1,21 @@
+--TEST--
+SOAP 1.2: T24 echoOk
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+$HTTP_RAW_POST_DATA = <<<EOF
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://wrong-version/">
+ <env:Body>
+ <test:echoOk xmlns:test="http://example.org/ts-tests">
+ foo
+ </test:echoOk>
+ </env:Body>
+</env:Envelope>
+EOF;
+include "soap12-test.inc";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"><env:Body><env:Fault><env:Code><env:Value>env:VersionMismatch</env:Value></env:Code><env:Reason><env:Text>Wrong Version</env:Text></env:Reason></env:Fault></env:Body></env:Envelope>
diff --git a/ext/soap/tests/soap12/T25.phpt b/ext/soap/tests/soap12/T25.phpt
new file mode 100644
index 0000000..ac45e9c
--- /dev/null
+++ b/ext/soap/tests/soap12/T25.phpt
@@ -0,0 +1,22 @@
+--TEST--
+SOAP 1.2: T25 echoOk
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+$HTTP_RAW_POST_DATA = <<<EOF
+<?xml version='1.0' ?>
+<!DOCTYPE env:Envelope SYSTEM "env.dtd"[]>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">
+ <env:Body>
+ <test:echoOk xmlns:test="http://example.org/ts-tests">
+ foo
+ </test:echoOk>
+ </env:Body>
+</env:Envelope>
+EOF;
+include "soap12-test.inc";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"><env:Body><env:Fault><env:Code><env:Value>env:Receiver</env:Value></env:Code><env:Reason><env:Text>DTD are not supported by SOAP</env:Text></env:Reason></env:Fault></env:Body></env:Envelope>
diff --git a/ext/soap/tests/soap12/T26.phpt b/ext/soap/tests/soap12/T26.phpt
new file mode 100644
index 0000000..53c8cec
--- /dev/null
+++ b/ext/soap/tests/soap12/T26.phpt
@@ -0,0 +1,21 @@
+--TEST--
+SOAP 1.2: T26 echoOk
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+$HTTP_RAW_POST_DATA = <<<EOF
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">
+<?xml-stylesheet href="http://example.org/ts-tests/sub.xsl" type = "text/xsl"?>
+ <env:Body>
+ <test:echoOk xmlns:test="http://example.org/ts-tests">foo</test:echoOk>
+ </env:Body>
+</env:Envelope>
+EOF;
+include "soap12-test.inc";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope" xmlns:ns1="http://example.org/ts-tests"><env:Body><ns1:responseOk>foo</ns1:responseOk></env:Body></env:Envelope>
+ok
diff --git a/ext/soap/tests/soap12/T27.phpt b/ext/soap/tests/soap12/T27.phpt
new file mode 100644
index 0000000..6371113
--- /dev/null
+++ b/ext/soap/tests/soap12/T27.phpt
@@ -0,0 +1,29 @@
+--TEST--
+SOAP 1.2: T27 echoStringArray
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+$HTTP_RAW_POST_DATA = <<<EOF
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"
+ xmlns:xs="http://www.w3.org/2001/XMLSchema">
+ <env:Body>
+ <test:echoStringArray xmlns:test="http://example.org/ts-tests"
+ xmlns:enc="http://www.w3.org/2003/05/soap-encoding"
+ env:encodingStyle="http://www.w3.org/2003/05/soap-encoding">
+ <test:array enc:itemType="xs:string" enc:arraySize="1">
+ <a>
+ <b>1</b>
+ </a>
+ </test:array>
+ </test:echoStringArray>
+ </env:Body>
+</env:Envelope>
+EOF;
+include "soap12-test.inc";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"><env:Body><env:Fault><env:Code><env:Value>env:Receiver</env:Value></env:Code><env:Reason><env:Text>SOAP-ERROR: Encoding: Violation of encoding rules</env:Text></env:Reason></env:Fault></env:Body></env:Envelope>
+
diff --git a/ext/soap/tests/soap12/T28.phpt b/ext/soap/tests/soap12/T28.phpt
new file mode 100644
index 0000000..6118b47
--- /dev/null
+++ b/ext/soap/tests/soap12/T28.phpt
@@ -0,0 +1,22 @@
+--TEST--
+SOAP 1.2: T28 echoOk
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+$HTTP_RAW_POST_DATA = <<<EOF
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">
+ <env:Body env:encodingStyle="http://www.w3.org/2003/05/soap-encoding">
+ <test:echoOk xmlns:test="http://example.org/ts-tests" >
+ foo
+ </test:echoOk>
+ </env:Body>
+</env:Envelope>
+EOF;
+include "soap12-test.inc";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"><env:Body><env:Fault><env:Code><env:Value>env:Sender</env:Value></env:Code><env:Reason><env:Text>encodingStyle cannot be specified on the Body</env:Text></env:Reason></env:Fault></env:Body></env:Envelope>
+
diff --git a/ext/soap/tests/soap12/T29.phpt b/ext/soap/tests/soap12/T29.phpt
new file mode 100644
index 0000000..3784da4
--- /dev/null
+++ b/ext/soap/tests/soap12/T29.phpt
@@ -0,0 +1,23 @@
+--TEST--
+SOAP 1.2: T29 echoOk
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+$HTTP_RAW_POST_DATA = <<<EOF
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">
+ <env:Header>
+ <test:echoOk xmlns:test="http://example.org/ts-tests"
+ env:role="http://example.org/ts-tests/Czzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz">foo</test:echoOk>
+ </env:Header>
+ <env:Body>
+ </env:Body>
+</env:Envelope>
+EOF;
+include "soap12-test.inc";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"><env:Body/></env:Envelope>
+ok
diff --git a/ext/soap/tests/soap12/T30.phpt b/ext/soap/tests/soap12/T30.phpt
new file mode 100644
index 0000000..c2e008e
--- /dev/null
+++ b/ext/soap/tests/soap12/T30.phpt
@@ -0,0 +1,20 @@
+--TEST--
+SOAP 1.2: T30 echoOk
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+$HTTP_RAW_POST_DATA = <<<EOF
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/">
+ <env:Body>
+ <test:echoOk xmlns:test="http://example.org/ts-tests">foo</test:echoOk>
+ </env:Body>
+</env:Envelope>
+EOF;
+include "soap12-test.inc";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://example.org/ts-tests"><SOAP-ENV:Body><ns1:responseOk>foo</ns1:responseOk></SOAP-ENV:Body></SOAP-ENV:Envelope>
+ok
diff --git a/ext/soap/tests/soap12/T31.phpt b/ext/soap/tests/soap12/T31.phpt
new file mode 100644
index 0000000..04f0353
--- /dev/null
+++ b/ext/soap/tests/soap12/T31.phpt
@@ -0,0 +1,22 @@
+--TEST--
+SOAP 1.2: T31 returnVoid
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+$HTTP_RAW_POST_DATA = <<<EOF
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">
+ <env:Body>
+ <test:returnVoid xmlns:test="http://example.org/ts-tests">
+ </test:returnVoid>
+ </env:Body>
+</env:Envelope>
+EOF;
+include "soap12-test.inc";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope" xmlns:ns1="http://example.org/ts-tests" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:enc="http://www.w3.org/2003/05/soap-encoding"><env:Body><ns1:returnVoidResponse env:encodingStyle="http://www.w3.org/2003/05/soap-encoding"/></env:Body></env:Envelope>
+ok
+
diff --git a/ext/soap/tests/soap12/T32.phpt b/ext/soap/tests/soap12/T32.phpt
new file mode 100644
index 0000000..8f77873
--- /dev/null
+++ b/ext/soap/tests/soap12/T32.phpt
@@ -0,0 +1,25 @@
+--TEST--
+SOAP 1.2: T32 echoHeader
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+$HTTP_RAW_POST_DATA = <<<EOF
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">
+ <env:Header>
+ <test:requiredHeader xmlns:test="http://example.org/ts-tests"
+ env:mustUnderstand="true">foo</test:requiredHeader>
+ </env:Header>
+ <env:Body>
+ <test:echoHeader xmlns:test="http://example.org/ts-tests">
+ </test:echoHeader>
+ </env:Body>
+</env:Envelope>
+EOF;
+include "soap12-test.inc";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope" xmlns:ns1="http://example.org/ts-tests"><env:Body><ns1:echoHeaderResponse>foo</ns1:echoHeaderResponse></env:Body></env:Envelope>
+ok
diff --git a/ext/soap/tests/soap12/T33.phpt b/ext/soap/tests/soap12/T33.phpt
new file mode 100644
index 0000000..00ded87
--- /dev/null
+++ b/ext/soap/tests/soap12/T33.phpt
@@ -0,0 +1,20 @@
+--TEST--
+SOAP 1.2: T33 nonexistentMethod
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+$HTTP_RAW_POST_DATA = <<<EOF
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">
+ <env:Body>
+ <test:DoesNotExist xmlns:test="http://example.org/ts-tests">
+ </test:DoesNotExist>
+ </env:Body>
+</env:Envelope>
+EOF;
+include "soap12-test.inc";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"><env:Body><env:Fault><env:Code><env:Value>rpc:ProcedureNotPresent</env:Value></env:Code><env:Reason><env:Text>Procedure not present</env:Text></env:Reason></env:Fault></env:Body></env:Envelope>
diff --git a/ext/soap/tests/soap12/T34.phpt b/ext/soap/tests/soap12/T34.phpt
new file mode 100644
index 0000000..39e0095
--- /dev/null
+++ b/ext/soap/tests/soap12/T34.phpt
@@ -0,0 +1,24 @@
+--TEST--
+SOAP 1.2: T34 unknownHdr
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+$HTTP_RAW_POST_DATA = <<<EOF
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">
+ <env:Header>
+ <test:Unknown xmlns:test="http://example.org/ts-tests"
+ xmlns:env1="http://schemas.xmlsoap.org/soap/envelope/"
+ env1:mustUnderstand="true">foo</test:Unknown>
+ </env:Header>
+ <env:Body>
+ </env:Body>
+</env:Envelope>
+EOF;
+include "soap12-test.inc";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"><env:Body/></env:Envelope>
+ok
diff --git a/ext/soap/tests/soap12/T35.phpt b/ext/soap/tests/soap12/T35.phpt
new file mode 100644
index 0000000..a736010
--- /dev/null
+++ b/ext/soap/tests/soap12/T35.phpt
@@ -0,0 +1,24 @@
+--TEST--
+SOAP 1.2: T35 unknownHdr
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+$HTTP_RAW_POST_DATA = <<<EOF
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">
+ <env:Header>
+ <test:Unknown xmlns:test="http://example.org/ts-tests"
+ env:mustUnderstand="1">
+ foo
+ </test:Unknown>
+ </env:Header>
+ <env:Body>
+ </env:Body>
+</env:Envelope>
+EOF;
+include "soap12-test.inc";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"><env:Body><env:Fault><env:Code><env:Value>env:MustUnderstand</env:Value></env:Code><env:Reason><env:Text>Header not understood</env:Text></env:Reason></env:Fault></env:Body></env:Envelope>
diff --git a/ext/soap/tests/soap12/T36.phpt b/ext/soap/tests/soap12/T36.phpt
new file mode 100644
index 0000000..d625813
--- /dev/null
+++ b/ext/soap/tests/soap12/T36.phpt
@@ -0,0 +1,23 @@
+--TEST--
+SOAP 1.2: T36 unknownHdr
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+$HTTP_RAW_POST_DATA = <<<EOF
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">
+ <env:Header>
+ <test:Unknown xmlns:test="http://example.org/ts-tests"
+ env:mustUnderstand="1"
+ env:role="http://www.w3.org/2003/05/soap-envelope/role/ultimateReceiver">foo</test:Unknown>
+ </env:Header>
+ <env:Body>
+ </env:Body>
+</env:Envelope>
+EOF;
+include "soap12-test.inc";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"><env:Body><env:Fault><env:Code><env:Value>env:MustUnderstand</env:Value></env:Code><env:Reason><env:Text>Header not understood</env:Text></env:Reason></env:Fault></env:Body></env:Envelope>
diff --git a/ext/soap/tests/soap12/T37.phpt b/ext/soap/tests/soap12/T37.phpt
new file mode 100644
index 0000000..cdce8a4
--- /dev/null
+++ b/ext/soap/tests/soap12/T37.phpt
@@ -0,0 +1,23 @@
+--TEST--
+SOAP 1.2: T37 unknownHdr
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+$HTTP_RAW_POST_DATA = <<<EOF
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">
+ <env:Header>
+ <test:Unknown xmlns:test="http://example.org/ts-tests"
+ env:role="http://www.w3.org/2003/05/soap-envelope/role/ultimateReceiver">foo</test:Unknown>
+ </env:Header>
+ <env:Body>
+ </env:Body>
+</env:Envelope>
+EOF;
+include "soap12-test.inc";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"><env:Body/></env:Envelope>
+ok
diff --git a/ext/soap/tests/soap12/T38_1.phpt b/ext/soap/tests/soap12/T38_1.phpt
new file mode 100644
index 0000000..30007e5
--- /dev/null
+++ b/ext/soap/tests/soap12/T38_1.phpt
@@ -0,0 +1,27 @@
+--TEST--
+SOAP 1.2: T38.1 doubleHdr
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+$HTTP_RAW_POST_DATA = <<<EOF
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">
+ <env:Header>
+ <test:Unknown xmlns:test="http://example.org/ts-tests"
+ env:mustUnderstand="false"
+ env:role="http://example.org/ts-tests/C">foo</test:Unknown>
+ <test:echoOk xmlns:test="http://example.org/ts-tests"
+ env:mustUnderstand="0"
+ env:role="http://example.org/ts-tests/C">foo</test:echoOk>
+ </env:Header>
+ <env:Body>
+ </env:Body>
+</env:Envelope>
+EOF;
+include "soap12-test.inc";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope" xmlns:ns1="http://example.org/ts-tests"><env:Header><ns1:responseOk>foo</ns1:responseOk></env:Header><env:Body/></env:Envelope>
+ok
diff --git a/ext/soap/tests/soap12/T38_2.phpt b/ext/soap/tests/soap12/T38_2.phpt
new file mode 100644
index 0000000..efff2f4
--- /dev/null
+++ b/ext/soap/tests/soap12/T38_2.phpt
@@ -0,0 +1,27 @@
+--TEST--
+SOAP 1.2: T38.2 doubleHdr
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+$HTTP_RAW_POST_DATA = <<<EOF
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">
+ <env:Header>
+ <test:echoOk xmlns:test="http://example.org/ts-tests"
+ env:mustUnderstand="true"
+ env:role="http://example.org/ts-tests/C">foo</test:echoOk>
+ <test:echoOk xmlns:test="http://example.org/ts-tests"
+ env:mustUnderstand="1"
+ env:role="http://example.org/ts-tests/C">bar</test:echoOk>
+ </env:Header>
+ <env:Body>
+ </env:Body>
+</env:Envelope>
+EOF;
+include "soap12-test.inc";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope" xmlns:ns1="http://example.org/ts-tests"><env:Header><ns1:responseOk>foo</ns1:responseOk><ns1:responseOk>bar</ns1:responseOk></env:Header><env:Body/></env:Envelope>
+ok
diff --git a/ext/soap/tests/soap12/T39.phpt b/ext/soap/tests/soap12/T39.phpt
new file mode 100644
index 0000000..2b29562
--- /dev/null
+++ b/ext/soap/tests/soap12/T39.phpt
@@ -0,0 +1,22 @@
+--TEST--
+SOAP 1.2: T39 unknownHdr
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+$HTTP_RAW_POST_DATA = <<<EOF
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">
+ <env:Header>
+ <test:Unknown xmlns:test="http://example.org/ts-tests"
+ env:mustUnderstand="9">foo</test:Unknown>
+ </env:Header>
+ <env:Body>
+ </env:Body>
+</env:Envelope>
+EOF;
+include "soap12-test.inc";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"><env:Body><env:Fault><env:Code><env:Value>env:Sender</env:Value></env:Code><env:Reason><env:Text>mustUnderstand value is not boolean</env:Text></env:Reason></env:Fault></env:Body></env:Envelope>
diff --git a/ext/soap/tests/soap12/T40.phpt b/ext/soap/tests/soap12/T40.phpt
new file mode 100644
index 0000000..27b4a21
--- /dev/null
+++ b/ext/soap/tests/soap12/T40.phpt
@@ -0,0 +1,26 @@
+--TEST--
+SOAP 1.2: T40 echoOK
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+$HTTP_RAW_POST_DATA = <<<EOF
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">
+ <env:Header>
+ <test:Unknown xmlns:test="http://[FEDC:BA98:7654:3210:FEDC:BA98:7654:3210]/ts-tests"
+ env:role="http://www.w3.org/2003/05/soap-envelope/role/ultimateReceiver"
+ env:mustUnderstand="false">
+ foo
+ </test:Unknown>
+ </env:Header>
+ <env:Body>
+ </env:Body>
+</env:Envelope>
+EOF;
+include "soap12-test.inc";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"><env:Body/></env:Envelope>
+ok \ No newline at end of file
diff --git a/ext/soap/tests/soap12/T41.phpt b/ext/soap/tests/soap12/T41.phpt
new file mode 100644
index 0000000..f874adc
--- /dev/null
+++ b/ext/soap/tests/soap12/T41.phpt
@@ -0,0 +1,30 @@
+--TEST--
+SOAP 1.2: T41 echoStruct
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+$HTTP_RAW_POST_DATA = <<<EOF
+<?xml version="1.0"?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <env:Body>
+ <test:echoStruct xmlns:test="http://example.org/ts-tests"
+ env:encodingStyle="http://www.w3.org/2003/05/soap-encoding">
+ <inputStruct xsi:type="ns1:SOAPStruct"
+ xmlns:ns1="http://example.org/ts-tests/xsd">
+ <varInt xsi:type="xsd:int">42</varInt>
+ <varFloat xsi:type="xsd:float">0.005</varFloat>
+ <varString xsi:type="xsd:string">hello world</varString>
+ </inputStruct>
+ </test:echoStruct>
+ </env:Body>
+</env:Envelope>
+EOF;
+include "soap12-test.inc";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope" xmlns:ns1="http://example.org/ts-tests" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ns2="http://example.org/ts-tests/xsd" xmlns:enc="http://www.w3.org/2003/05/soap-encoding"><env:Body xmlns:rpc="http://www.w3.org/2003/05/soap-rpc"><ns1:echoStructResponse env:encodingStyle="http://www.w3.org/2003/05/soap-encoding"><rpc:result>return</rpc:result><return xsi:type="ns2:SOAPStruct"><varString xsi:type="xsd:string">hello world</varString><varInt xsi:type="xsd:int">42</varInt><varFloat xsi:type="xsd:float">0.005</varFloat></return></ns1:echoStructResponse></env:Body></env:Envelope>
+ok
diff --git a/ext/soap/tests/soap12/T42.phpt b/ext/soap/tests/soap12/T42.phpt
new file mode 100644
index 0000000..e45d42b
--- /dev/null
+++ b/ext/soap/tests/soap12/T42.phpt
@@ -0,0 +1,41 @@
+--TEST--
+SOAP 1.2: T42 echoStructArray
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--INI--
+precision=14
+--FILE--
+<?php
+$HTTP_RAW_POST_DATA = <<<EOF
+<?xml version="1.0"?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <env:Body>
+ <test:echoStructArray xmlns:test="http://example.org/ts-tests"
+ env:encodingStyle="http://www.w3.org/2003/05/soap-encoding">
+ <inputStructArray enc:itemType="ns1:SOAPStruct"
+ enc:arraySize="2"
+ xmlns:ns1="http://example.org/ts-tests/xsd"
+ xmlns:enc="http://www.w3.org/2003/05/soap-encoding">
+ <item xsi:type="ns1:SOAPStruct">
+ <varInt xsi:type="xsd:int">42</varInt>
+ <varFloat xsi:type="xsd:float">0.005</varFloat>
+ <varString xsi:type="xsd:string">hello world</varString>
+ </item>
+ <item xsi:type="ns1:SOAPStruct">
+ <varInt xsi:type="xsd:int">43</varInt>
+ <varFloat xsi:type="xsd:float">0.123</varFloat>
+ <varString xsi:type="xsd:string">bye world</varString>
+ </item>
+ </inputStructArray>
+ </test:echoStructArray>
+ </env:Body>
+</env:Envelope>
+EOF;
+include "soap12-test.inc";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope" xmlns:ns1="http://example.org/ts-tests" xmlns:ns2="http://example.org/ts-tests/xsd" xmlns:enc="http://www.w3.org/2003/05/soap-encoding" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><env:Body xmlns:rpc="http://www.w3.org/2003/05/soap-rpc"><ns1:echoStructArrayResponse env:encodingStyle="http://www.w3.org/2003/05/soap-encoding"><rpc:result>return</rpc:result><return enc:itemType="ns2:SOAPStruct" enc:arraySize="2" xsi:type="ns2:ArrayOfSOAPStruct"><item xsi:type="ns2:SOAPStruct"><varString xsi:type="xsd:string">hello world</varString><varInt xsi:type="xsd:int">42</varInt><varFloat xsi:type="xsd:float">0.005</varFloat></item><item xsi:type="ns2:SOAPStruct"><varString xsi:type="xsd:string">bye world</varString><varInt xsi:type="xsd:int">43</varInt><varFloat xsi:type="xsd:float">0.123</varFloat></item></return></ns1:echoStructArrayResponse></env:Body></env:Envelope>
+ok
diff --git a/ext/soap/tests/soap12/T43.phpt b/ext/soap/tests/soap12/T43.phpt
new file mode 100644
index 0000000..7dd6316
--- /dev/null
+++ b/ext/soap/tests/soap12/T43.phpt
@@ -0,0 +1,30 @@
+--TEST--
+SOAP 1.2: T43 echoStructAsSimpleTypes
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+$HTTP_RAW_POST_DATA = <<<EOF
+<?xml version="1.0"?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <env:Body>
+ <test:echoStructAsSimpleTypes xmlns:test="http://example.org/ts-tests"
+ env:encodingStyle="http://www.w3.org/2003/05/soap-encoding">
+ <inputStruct xsi:type="ns1:SOAPStruct"
+ xmlns:ns1="http://example.org/ts-tests/xsd">
+ <varInt xsi:type="xsd:int">42</varInt>
+ <varFloat xsi:type="xsd:float">0.005</varFloat>
+ <varString xsi:type="xsd:string">hello world</varString>
+ </inputStruct>
+ </test:echoStructAsSimpleTypes>
+ </env:Body>
+</env:Envelope>
+EOF;
+include "soap12-test.inc";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope" xmlns:ns1="http://example.org/ts-tests" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:enc="http://www.w3.org/2003/05/soap-encoding"><env:Body><ns1:echoStructAsSimpleTypesResponse env:encodingStyle="http://www.w3.org/2003/05/soap-encoding"><outputString xsi:type="xsd:string">hello world</outputString><outputInteger xsi:type="xsd:int">42</outputInteger><outputFloat xsi:type="xsd:float">0.005</outputFloat></ns1:echoStructAsSimpleTypesResponse></env:Body></env:Envelope>
+ok
diff --git a/ext/soap/tests/soap12/T44.phpt b/ext/soap/tests/soap12/T44.phpt
new file mode 100644
index 0000000..3e307c1
--- /dev/null
+++ b/ext/soap/tests/soap12/T44.phpt
@@ -0,0 +1,27 @@
+--TEST--
+SOAP 1.2: T44 echoSimpleTypesAsStruct
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+$HTTP_RAW_POST_DATA = <<<EOF
+<?xml version="1.0"?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <env:Body>
+ <test:echoSimpleTypesAsStruct xmlns:test="http://example.org/ts-tests"
+ env:encodingStyle="http://www.w3.org/2003/05/soap-encoding">
+ <inputInt xsi:type="xsd:int">42</inputInt>
+ <inputFloat xsi:type="xsd:float">0.005</inputFloat>
+ <inputString xsi:type="xsd:string">hello world</inputString>
+ </test:echoSimpleTypesAsStruct>
+ </env:Body>
+</env:Envelope>
+EOF;
+include "soap12-test.inc";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope" xmlns:ns1="http://example.org/ts-tests" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ns2="http://example.org/ts-tests/xsd" xmlns:enc="http://www.w3.org/2003/05/soap-encoding"><env:Body xmlns:rpc="http://www.w3.org/2003/05/soap-rpc"><ns1:echoSimpleTypesAsStructResponse env:encodingStyle="http://www.w3.org/2003/05/soap-encoding"><rpc:result>return</rpc:result><return xsi:type="ns2:SOAPStruct"><varString xsi:type="xsd:string">hello world</varString><varInt xsi:type="xsd:int">42</varInt><varFloat xsi:type="xsd:float">0.005</varFloat></return></ns1:echoSimpleTypesAsStructResponse></env:Body></env:Envelope>
+ok
diff --git a/ext/soap/tests/soap12/T45.phpt b/ext/soap/tests/soap12/T45.phpt
new file mode 100644
index 0000000..24db941
--- /dev/null
+++ b/ext/soap/tests/soap12/T45.phpt
@@ -0,0 +1,35 @@
+--TEST--
+SOAP 1.2: T45 echoNestedStruct
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+$HTTP_RAW_POST_DATA = <<<EOF
+<?xml version="1.0"?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <env:Body>
+ <test:echoNestedStruct xmlns:test="http://example.org/ts-tests"
+ env:encodingStyle="http://www.w3.org/2003/05/soap-encoding">
+ <inputStruct xsi:type="ns1:SOAPStructStruct"
+ xmlns:ns1="http://example.org/ts-tests/xsd">
+ <varInt xsi:type="xsd:int">42</varInt>
+ <varFloat xsi:type="xsd:float">0.005</varFloat>
+ <varString xsi:type="xsd:string">hello world</varString>
+ <varStruct xsi:type="ns1:SOAPStruct">
+ <varInt xsi:type="xsd:int">99</varInt>
+ <varFloat xsi:type="xsd:float">5.5</varFloat>
+ <varString xsi:type="xsd:string">nested struct</varString>
+ </varStruct>
+ </inputStruct>
+ </test:echoNestedStruct>
+ </env:Body>
+</env:Envelope>
+EOF;
+include "soap12-test.inc";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope" xmlns:ns1="http://example.org/ts-tests" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ns2="http://example.org/ts-tests/xsd" xmlns:enc="http://www.w3.org/2003/05/soap-encoding"><env:Body xmlns:rpc="http://www.w3.org/2003/05/soap-rpc"><ns1:echoNestedStructResponse env:encodingStyle="http://www.w3.org/2003/05/soap-encoding"><rpc:result>return</rpc:result><return xsi:type="ns2:SOAPStructStruct"><varString xsi:type="xsd:string">hello world</varString><varInt xsi:type="xsd:int">42</varInt><varFloat xsi:type="xsd:float">0.005</varFloat><varStruct xsi:type="ns2:SOAPStruct"><varString xsi:type="xsd:string">nested struct</varString><varInt xsi:type="xsd:int">99</varInt><varFloat xsi:type="xsd:float">5.5</varFloat></varStruct></return></ns1:echoNestedStructResponse></env:Body></env:Envelope>
+ok
diff --git a/ext/soap/tests/soap12/T46.phpt b/ext/soap/tests/soap12/T46.phpt
new file mode 100644
index 0000000..8098ef7
--- /dev/null
+++ b/ext/soap/tests/soap12/T46.phpt
@@ -0,0 +1,36 @@
+--TEST--
+SOAP 1.2: T46 echoNestedArray
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+$HTTP_RAW_POST_DATA = <<<EOF
+<?xml version="1.0"?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <env:Body>
+ <test:echoNestedArray xmlns:test="http://exaple.org/ts-tests"
+ env:encodingStyle="http://www.w3.org/2003/05/soap-encoding">
+ <inputStruct xsi:type="ns1:SOAPArrayStruct"
+ xmlns:ns1="http://example.org/ts-tests/xsd">
+ <varInt xsi:type="xsd:int">42</varInt>
+ <varFloat xsi:type="xsd:float">0.005</varFloat>
+ <varString xsi:type="xsd:string">hello world</varString>
+ <varArray enc:itemType="xsd:string" enc:arraySize="3"
+ xmlns:enc="http://www.w3.org/2003/05/soap-encoding">
+ <item xsi:type="xsd:string">red</item>
+ <item xsi:type="xsd:string">blue</item>
+ <item xsi:type="xsd:string">green</item>
+ </varArray>
+ </inputStruct>
+ </test:echoNestedArray>
+ </env:Body>
+</env:Envelope>
+EOF;
+include "soap12-test.inc";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope" xmlns:ns1="http://example.org/ts-tests" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:enc="http://www.w3.org/2003/05/soap-encoding" xmlns:ns2="http://example.org/ts-tests/xsd"><env:Body xmlns:rpc="http://www.w3.org/2003/05/soap-rpc"><ns1:echoNestedArrayResponse env:encodingStyle="http://www.w3.org/2003/05/soap-encoding"><rpc:result>return</rpc:result><return xsi:type="ns2:SOAPArrayStruct"><varString xsi:type="xsd:string">hello world</varString><varInt xsi:type="xsd:int">42</varInt><varFloat xsi:type="xsd:float">0.005</varFloat><varArray enc:itemType="xsd:string" enc:arraySize="3" xsi:type="ns2:ArrayOfstring"><item xsi:type="xsd:string">red</item><item xsi:type="xsd:string">blue</item><item xsi:type="xsd:string">green</item></varArray></return></ns1:echoNestedArrayResponse></env:Body></env:Envelope>
+ok
diff --git a/ext/soap/tests/soap12/T47.phpt b/ext/soap/tests/soap12/T47.phpt
new file mode 100644
index 0000000..a449d20
--- /dev/null
+++ b/ext/soap/tests/soap12/T47.phpt
@@ -0,0 +1,31 @@
+--TEST--
+SOAP 1.2: T47 echoFloatArray
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--INI--
+precision=14
+--FILE--
+<?php
+$HTTP_RAW_POST_DATA = <<<EOF
+<?xml version="1.0"?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <env:Body>
+ <test:echoFloatArray xmlns:test="http://example.org/ts-tests"
+ env:encodingStyle="http://www.w3.org/2003/05/soap-encoding">
+ <inputFloatArray enc:itemType="xsd:float" enc:arraySize="2"
+ xmlns:enc="http://www.w3.org/2003/05/soap-encoding">
+ <item xsi:type="xsd:float">5.5</item>
+ <item xsi:type="xsd:float">12999.9</item>
+ </inputFloatArray>
+ </test:echoFloatArray>
+ </env:Body>
+</env:Envelope>
+EOF;
+include "soap12-test.inc";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope" xmlns:ns1="http://example.org/ts-tests" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:enc="http://www.w3.org/2003/05/soap-encoding" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ns2="http://example.org/ts-tests/xsd"><env:Body xmlns:rpc="http://www.w3.org/2003/05/soap-rpc"><ns1:echoFloatArrayResponse env:encodingStyle="http://www.w3.org/2003/05/soap-encoding"><rpc:result>return</rpc:result><return enc:itemType="xsd:float" enc:arraySize="2" xsi:type="ns2:ArrayOffloat"><item xsi:type="xsd:float">5.5</item><item xsi:type="xsd:float">12999.9</item></return></ns1:echoFloatArrayResponse></env:Body></env:Envelope>
+ok
diff --git a/ext/soap/tests/soap12/T48.phpt b/ext/soap/tests/soap12/T48.phpt
new file mode 100644
index 0000000..f7cf0fe
--- /dev/null
+++ b/ext/soap/tests/soap12/T48.phpt
@@ -0,0 +1,29 @@
+--TEST--
+SOAP 1.2: T48 echoStringArray
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+$HTTP_RAW_POST_DATA = <<<EOF
+<?xml version="1.0"?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <env:Body>
+ <test:echoStringArray xmlns:test="http://example.org/ts-tests"
+ env:encodingStyle="http://www.w3.org/2003/05/soap-encoding">
+ <inputStringArray enc:itemType="xsd:string" enc:arraySize="2"
+ xmlns:enc="http://www.w3.org/2003/05/soap-encoding">
+ <item xsi:type="xsd:string">hello</item>
+ <item xsi:type="xsd:string">world</item>
+ </inputStringArray>
+ </test:echoStringArray>
+ </env:Body>
+</env:Envelope>
+EOF;
+include "soap12-test.inc";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope" xmlns:ns1="http://example.org/ts-tests" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:enc="http://www.w3.org/2003/05/soap-encoding" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ns2="http://example.org/ts-tests/xsd"><env:Body xmlns:rpc="http://www.w3.org/2003/05/soap-rpc"><ns1:echoStringArrayResponse env:encodingStyle="http://www.w3.org/2003/05/soap-encoding"><rpc:result>return</rpc:result><return enc:itemType="xsd:string" enc:arraySize="2" xsi:type="ns2:ArrayOfstring"><item xsi:type="xsd:string">hello</item><item xsi:type="xsd:string">world</item></return></ns1:echoStringArrayResponse></env:Body></env:Envelope>
+ok
diff --git a/ext/soap/tests/soap12/T49.phpt b/ext/soap/tests/soap12/T49.phpt
new file mode 100644
index 0000000..9687d03
--- /dev/null
+++ b/ext/soap/tests/soap12/T49.phpt
@@ -0,0 +1,29 @@
+--TEST--
+SOAP 1.2: T49 echoStringArray
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+$HTTP_RAW_POST_DATA = <<<EOF
+<?xml version="1.0"?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <env:Body>
+ <test:echoStringArray xmlns:test="http://example.org/ts-tests"
+ env:encodingStyle="http://www.w3.org/2003/05/soap-encoding">
+ <inputStringArray enc:arraySize="2"
+ xmlns:enc="http://www.w3.org/2003/05/soap-encoding">
+ <item xsi:type="xsd:string">hello</item>
+ <item xsi:type="xsd:string">world</item>
+ </inputStringArray>
+ </test:echoStringArray>
+ </env:Body>
+</env:Envelope>
+EOF;
+include "soap12-test.inc";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope" xmlns:ns1="http://example.org/ts-tests" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:enc="http://www.w3.org/2003/05/soap-encoding" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ns2="http://example.org/ts-tests/xsd"><env:Body xmlns:rpc="http://www.w3.org/2003/05/soap-rpc"><ns1:echoStringArrayResponse env:encodingStyle="http://www.w3.org/2003/05/soap-encoding"><rpc:result>return</rpc:result><return enc:itemType="xsd:string" enc:arraySize="2" xsi:type="ns2:ArrayOfstring"><item xsi:type="xsd:string">hello</item><item xsi:type="xsd:string">world</item></return></ns1:echoStringArrayResponse></env:Body></env:Envelope>
+ok
diff --git a/ext/soap/tests/soap12/T50.phpt b/ext/soap/tests/soap12/T50.phpt
new file mode 100644
index 0000000..e3fcc0c
--- /dev/null
+++ b/ext/soap/tests/soap12/T50.phpt
@@ -0,0 +1,29 @@
+--TEST--
+SOAP 1.2: T50 echoIntegerArray
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+$HTTP_RAW_POST_DATA = <<<EOF
+<?xml version="1.0"?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <env:Body>
+ <test:echoIntegerArray xmlns:test="http://example.org/ts-tests"
+ env:encodingStyle="http://www.w3.org/2003/05/soap-encoding">
+ <inputIntegerArray enc:itemType="xsd:int" enc:arraySize="2"
+ xmlns:enc="http://www.w3.org/2003/05/soap-encoding">
+ <item xsi:type="xsd:int">100</item>
+ <item xsi:type="xsd:int">200</item>
+ </inputIntegerArray>
+ </test:echoIntegerArray>
+ </env:Body>
+</env:Envelope>
+EOF;
+include "soap12-test.inc";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope" xmlns:ns1="http://example.org/ts-tests" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:enc="http://www.w3.org/2003/05/soap-encoding" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ns2="http://example.org/ts-tests/xsd"><env:Body xmlns:rpc="http://www.w3.org/2003/05/soap-rpc"><ns1:echoIntegerArrayResponse env:encodingStyle="http://www.w3.org/2003/05/soap-encoding"><rpc:result>return</rpc:result><return enc:itemType="xsd:int" enc:arraySize="2" xsi:type="ns2:ArrayOfint"><item xsi:type="xsd:int">100</item><item xsi:type="xsd:int">200</item></return></ns1:echoIntegerArrayResponse></env:Body></env:Envelope>
+ok
diff --git a/ext/soap/tests/soap12/T51.phpt b/ext/soap/tests/soap12/T51.phpt
new file mode 100644
index 0000000..9776576
--- /dev/null
+++ b/ext/soap/tests/soap12/T51.phpt
@@ -0,0 +1,27 @@
+--TEST--
+SOAP 1.2: T51 echoBase64
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+$HTTP_RAW_POST_DATA = <<<EOF
+<?xml version="1.0"?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+ <env:Body>
+ <test:echoBase64 xmlns:test="http://example.org/ts-tests"
+ env:encodingStyle="http://www.w3.org/2003/05/soap-encoding">
+ <inputBase64 xsi:type="xsd:base64Binary">
+ YUdWc2JHOGdkMjl5YkdRPQ==
+ </inputBase64>
+ </test:echoBase64>
+ </env:Body>
+</env:Envelope>
+EOF;
+include "soap12-test.inc";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope" xmlns:ns1="http://example.org/ts-tests" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:enc="http://www.w3.org/2003/05/soap-encoding"><env:Body xmlns:rpc="http://www.w3.org/2003/05/soap-rpc"><ns1:echoBase64Response env:encodingStyle="http://www.w3.org/2003/05/soap-encoding"><rpc:result>return</rpc:result><return xsi:type="xsd:base64Binary">YUdWc2JHOGdkMjl5YkdRPQ==</return></ns1:echoBase64Response></env:Body></env:Envelope>
+ok
diff --git a/ext/soap/tests/soap12/T52.phpt b/ext/soap/tests/soap12/T52.phpt
new file mode 100644
index 0000000..9d75fb9
--- /dev/null
+++ b/ext/soap/tests/soap12/T52.phpt
@@ -0,0 +1,25 @@
+--TEST--
+SOAP 1.2: T52 echoBoolean
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+$HTTP_RAW_POST_DATA = <<<EOF
+<?xml version="1.0"?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <env:Body>
+ <test:echoBoolean xmlns:test="http://example.org/ts-tests"
+ env:encodingStyle="http://www.w3.org/2003/05/soap-encoding">
+ <inputBoolean xsi:type="xsd:boolean">1</inputBoolean>
+ </test:echoBoolean>
+ </env:Body>
+</env:Envelope>
+EOF;
+include "soap12-test.inc";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope" xmlns:ns1="http://example.org/ts-tests" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:enc="http://www.w3.org/2003/05/soap-encoding"><env:Body xmlns:rpc="http://www.w3.org/2003/05/soap-rpc"><ns1:echoBooleanResponse env:encodingStyle="http://www.w3.org/2003/05/soap-encoding"><rpc:result>return</rpc:result><return xsi:type="xsd:boolean">true</return></ns1:echoBooleanResponse></env:Body></env:Envelope>
+ok
diff --git a/ext/soap/tests/soap12/T53.phpt b/ext/soap/tests/soap12/T53.phpt
new file mode 100644
index 0000000..c1c8fe6
--- /dev/null
+++ b/ext/soap/tests/soap12/T53.phpt
@@ -0,0 +1,25 @@
+--TEST--
+SOAP 1.2: T53 echoDate
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+$HTTP_RAW_POST_DATA = <<<EOF
+<?xml version="1.0" encoding="UTF-8"?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <env:Body>
+ <test:echoDate xmlns:test="http://example.org/ts-tests"
+ env:encodingStyle="http://www.w3.org/2003/05/soap-encoding">
+ <inputDate xsi:type="xsd:date">1956-10-18T22:20:00-07:00</inputDate>
+ </test:echoDate>
+ </env:Body>
+</env:Envelope>
+EOF;
+include "soap12-test.inc";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope" xmlns:ns1="http://example.org/ts-tests" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:enc="http://www.w3.org/2003/05/soap-encoding"><env:Body xmlns:rpc="http://www.w3.org/2003/05/soap-rpc"><ns1:echoDateResponse env:encodingStyle="http://www.w3.org/2003/05/soap-encoding"><rpc:result>return</rpc:result><return xsi:type="xsd:dateTime">1956-10-18T22:20:00-07:00</return></ns1:echoDateResponse></env:Body></env:Envelope>
+ok
diff --git a/ext/soap/tests/soap12/T54.phpt b/ext/soap/tests/soap12/T54.phpt
new file mode 100644
index 0000000..ba3ed35
--- /dev/null
+++ b/ext/soap/tests/soap12/T54.phpt
@@ -0,0 +1,25 @@
+--TEST--
+SOAP 1.2: T54 echoDecimal
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+$HTTP_RAW_POST_DATA = <<<EOF
+<?xml version="1.0" encoding="UTF-8"?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <env:Body>
+ <test:echoDecimal xmlns:test="http://example.org/ts-tests"
+ env:encodingStyle="http://www.w3.org/2003/05/soap-encoding">
+ <inputDecimal xsi:type="xsd:decimal">123.45678901234567890</inputDecimal>
+ </test:echoDecimal>
+ </env:Body>
+</env:Envelope>
+EOF;
+include "soap12-test.inc";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope" xmlns:ns1="http://example.org/ts-tests" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:enc="http://www.w3.org/2003/05/soap-encoding"><env:Body xmlns:rpc="http://www.w3.org/2003/05/soap-rpc"><ns1:echoDecimalResponse env:encodingStyle="http://www.w3.org/2003/05/soap-encoding"><rpc:result>return</rpc:result><return xsi:type="xsd:decimal">123.45678901234567890</return></ns1:echoDecimalResponse></env:Body></env:Envelope>
+ok
diff --git a/ext/soap/tests/soap12/T55.phpt b/ext/soap/tests/soap12/T55.phpt
new file mode 100644
index 0000000..1c12e50
--- /dev/null
+++ b/ext/soap/tests/soap12/T55.phpt
@@ -0,0 +1,25 @@
+--TEST--
+SOAP 1.2: T55 echoFloat
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+$HTTP_RAW_POST_DATA = <<<EOF
+<?xml version="1.0"?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <env:Body>
+ <test:echoFloat xmlns:test="http://example.org/ts-tests"
+ env:encodingStyle="http://www.w3.org/2003/05/soap-encoding">
+ <inputFloat xsi:type="xsd:float">0.005</inputFloat>
+ </test:echoFloat>
+ </env:Body>
+</env:Envelope>
+EOF;
+include "soap12-test.inc";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope" xmlns:ns1="http://example.org/ts-tests" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:enc="http://www.w3.org/2003/05/soap-encoding"><env:Body xmlns:rpc="http://www.w3.org/2003/05/soap-rpc"><ns1:echoFloatResponse env:encodingStyle="http://www.w3.org/2003/05/soap-encoding"><rpc:result>return</rpc:result><return xsi:type="xsd:float">0.005</return></ns1:echoFloatResponse></env:Body></env:Envelope>
+ok
diff --git a/ext/soap/tests/soap12/T56.phpt b/ext/soap/tests/soap12/T56.phpt
new file mode 100644
index 0000000..ca13427
--- /dev/null
+++ b/ext/soap/tests/soap12/T56.phpt
@@ -0,0 +1,34 @@
+--TEST--
+SOAP 1.2: T56 echoString
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+$HTTP_RAW_POST_DATA = <<<EOF
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:enc="http://www.w3.org/2003/05/soap-encoding">
+ <env:Header>
+ <test:DataHolder xmlns:test="http://example.org/ts-tests"
+ env:encodingStyle="http://www.w3.org/2003/05/soap-encoding">
+ <test:Data enc:id="data-1" xsi:type="xsd:string">
+ hello world
+ </test:Data>
+ </test:DataHolder>
+ </env:Header>
+ <env:Body>
+ <test:echoString xmlns:test="http://example.org/ts-tests"
+ env:encodingStyle="http://www.w3.org/2003/05/soap-encoding">
+ <inputString enc:ref="#data-2" xsi:type="xsd:string" />
+ </test:echoString>
+ </env:Body>
+</env:Envelope>
+EOF;
+include "soap12-test.inc";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"><env:Body><env:Fault><env:Code><env:Value>env:Receiver</env:Value></env:Code><env:Reason><env:Text>SOAP-ERROR: Encoding: Unresolved reference '#data-2'</env:Text></env:Reason></env:Fault></env:Body></env:Envelope>
+
diff --git a/ext/soap/tests/soap12/T57.phpt b/ext/soap/tests/soap12/T57.phpt
new file mode 100644
index 0000000..ad3e9ef
--- /dev/null
+++ b/ext/soap/tests/soap12/T57.phpt
@@ -0,0 +1,32 @@
+--TEST--
+SOAP 1.2: T57 echoString
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+$HTTP_RAW_POST_DATA = <<<EOF
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:enc="http://www.w3.org/2003/05/soap-encoding">
+ <env:Header>
+ <test:DataHolder xmlns:test="http://example.org/ts-tests"
+ env:encodingStyle="http://www.w3.org/2003/05/soap-encoding">
+ <test:Data enc:id="data" xsi:type="xsd:string">hello world</test:Data>
+ </test:DataHolder>
+ </env:Header>
+ <env:Body>
+ <test:echoString xmlns:test="http://example.org/ts-tests"
+ env:encodingStyle="http://www.w3.org/2003/05/soap-encoding">
+ <test:inputString enc:ref="#data" xsi:type="xsd:string" />
+ </test:echoString>
+ </env:Body>
+</env:Envelope>
+EOF;
+include "soap12-test.inc";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope" xmlns:ns1="http://example.org/ts-tests" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:enc="http://www.w3.org/2003/05/soap-encoding"><env:Body xmlns:rpc="http://www.w3.org/2003/05/soap-rpc"><ns1:echoStringResponse env:encodingStyle="http://www.w3.org/2003/05/soap-encoding"><rpc:result>return</rpc:result><return xsi:type="xsd:string">hello world</return></ns1:echoStringResponse></env:Body></env:Envelope>
+ok
diff --git a/ext/soap/tests/soap12/T58.phpt b/ext/soap/tests/soap12/T58.phpt
new file mode 100644
index 0000000..1c3e8ba
--- /dev/null
+++ b/ext/soap/tests/soap12/T58.phpt
@@ -0,0 +1,28 @@
+--TEST--
+SOAP 1.2: T58 echoIntegerArray
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+$HTTP_RAW_POST_DATA = <<<EOF
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <env:Body>
+ <test:echoIntegerArray xmlns:test="http://example.org/ts-tests"
+ env:encodingStyle="http://www.w3.org/2003/05/soap-encoding">
+ <inputIntegerArray enc:itemType="xsd:int" enc:arraySize="1"
+ xmlns:enc="http://www.w3.org/2003/05/soap-encoding">
+ <a><b>1</b></a>
+ </inputIntegerArray>
+ </test:echoIntegerArray>
+ </env:Body>
+</env:Envelope>
+EOF;
+include "soap12-test.inc";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"><env:Body><env:Fault><env:Code><env:Value>env:Receiver</env:Value></env:Code><env:Reason><env:Text>SOAP-ERROR: Encoding: Violation of encoding rules</env:Text></env:Reason></env:Fault></env:Body></env:Envelope>
+
diff --git a/ext/soap/tests/soap12/T59.phpt b/ext/soap/tests/soap12/T59.phpt
new file mode 100644
index 0000000..2ceef32
--- /dev/null
+++ b/ext/soap/tests/soap12/T59.phpt
@@ -0,0 +1,28 @@
+--TEST--
+SOAP 1.2: T59 echoStringArray
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+$HTTP_RAW_POST_DATA = <<<EOF
+<?xml version="1.0"?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <env:Body>
+ <test:echoStringArray xmlns:test="http://example.org/ts-tests"
+ env:encodingStyle="http://www.w3.org/2003/05/soap-encoding">
+ <inputStringArray enc:itemType="xsd:string"
+ xmlns:enc="http://www.w3.org/2003/05/soap-encoding">
+ <item enc:id="data" xsi:type="xsd:string" enc:ref="#data">hello</item>
+ <item>world</item>
+ </inputStringArray>
+ </test:echoStringArray>
+ </env:Body>
+</env:Envelope>
+EOF;
+include "soap12-test.inc";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"><env:Body><env:Fault><env:Code><env:Value>env:Receiver</env:Value></env:Code><env:Reason><env:Text>SOAP-ERROR: Encoding: Violation of id and ref information items '#data'</env:Text></env:Reason></env:Fault></env:Body></env:Envelope>
diff --git a/ext/soap/tests/soap12/T60.phpt b/ext/soap/tests/soap12/T60.phpt
new file mode 100644
index 0000000..234ef4c
--- /dev/null
+++ b/ext/soap/tests/soap12/T60.phpt
@@ -0,0 +1,29 @@
+--TEST--
+SOAP 1.2: T60 countItems
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+$HTTP_RAW_POST_DATA = <<<EOF
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <env:Body>
+ <test:countItems xmlns:test="http://example.org/ts-tests"
+ xmlns:enc="http://www.w3.org/2003/05/soap-encoding"
+ env:encodingStyle="http://www.w3.org/2003/05/soap-encoding">
+ <inputStringArray enc:itemType="xsd:string" enc:arraySize="*">
+ <item xsi:type="xsd:string">hello</item>
+ <item xsi:type="xsd:string">world</item>
+ </inputStringArray>
+ </test:countItems>
+ </env:Body>
+</env:Envelope>
+EOF;
+include "soap12-test.inc";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope" xmlns:ns1="http://example.org/ts-tests" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:enc="http://www.w3.org/2003/05/soap-encoding"><env:Body xmlns:rpc="http://www.w3.org/2003/05/soap-rpc"><ns1:countItemsResponse env:encodingStyle="http://www.w3.org/2003/05/soap-encoding"><rpc:result>return</rpc:result><return xsi:type="xsd:int">2</return></ns1:countItemsResponse></env:Body></env:Envelope>
+ok
diff --git a/ext/soap/tests/soap12/T61.phpt b/ext/soap/tests/soap12/T61.phpt
new file mode 100644
index 0000000..b688a79
--- /dev/null
+++ b/ext/soap/tests/soap12/T61.phpt
@@ -0,0 +1,28 @@
+--TEST--
+SOAP 1.2: T61 countItems
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+$HTTP_RAW_POST_DATA = <<<EOF
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <env:Body>
+ <test:countItems xmlns:test="http://example.org/ts-tests"
+ xmlns:enc="http://www.w3.org/2003/05/soap-encoding"
+ env:encodingStyle="http://www.w3.org/2003/05/soap-encoding">
+ <inputStringArray enc:itemType="xsd:string" enc:arraySize="2 *">
+ <item xsi:type="xsd:string">hello</item>
+ <item xsi:type="xsd:string">world</item>
+ </inputStringArray>
+ </test:countItems>
+ </env:Body>
+</env:Envelope>
+EOF;
+include "soap12-test.inc";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"><env:Body><env:Fault><env:Code><env:Value>env:Receiver</env:Value></env:Code><env:Reason><env:Text>SOAP-ERROR: Encoding: '*' may only be first arraySize value in list</env:Text></env:Reason></env:Fault></env:Body></env:Envelope>
diff --git a/ext/soap/tests/soap12/T63.phpt b/ext/soap/tests/soap12/T63.phpt
new file mode 100644
index 0000000..5a41ef0
--- /dev/null
+++ b/ext/soap/tests/soap12/T63.phpt
@@ -0,0 +1,25 @@
+--TEST--
+SOAP 1.2: T63 validateCountryCode
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+$HTTP_RAW_POST_DATA = <<<EOF
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">
+ <env:Header>
+ <test:validateCountryCode xmlns:test="http://example.org/ts-tests"
+ env:role="http://example.org/ts-tests/C"
+ env:mustUnderstand="1">ABCD</test:validateCountryCode>
+ </env:Header>
+ <env:Body>
+ </env:Body>
+</env:Envelope>
+
+EOF;
+include "soap12-test.inc";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope" xmlns:ns1="http://example.org/ts-tests"><env:Header><ns1:validateCountryCodeFault>Country code must be 2 letters.</ns1:validateCountryCodeFault></env:Header><env:Body><env:Fault><env:Code><env:Value>env:Sender</env:Value></env:Code><env:Reason><env:Text>Not a valid country code</env:Text></env:Reason></env:Fault></env:Body></env:Envelope>
+ok
diff --git a/ext/soap/tests/soap12/T64.phpt b/ext/soap/tests/soap12/T64.phpt
new file mode 100644
index 0000000..24e62ec
--- /dev/null
+++ b/ext/soap/tests/soap12/T64.phpt
@@ -0,0 +1,24 @@
+--TEST--
+SOAP 1.2: T64 echoOk
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+$HTTP_RAW_POST_DATA = <<<EOF
+<?xml version='1.0' ?>
+<!DOCTYPE DOC [
+<!NOTATION application_xml SYSTEM 'http://www.isi.edu/in-notes/iana/assignments/media-types/application/xml'>
+]>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">
+ <env:Body>
+ <test:echoOk xmlns:test="http://example.org/ts-tests">
+ foo
+ </test:echoOk>
+ </env:Body>
+</env:Envelope>
+EOF;
+include "soap12-test.inc";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"><env:Body><env:Fault><env:Code><env:Value>env:Receiver</env:Value></env:Code><env:Reason><env:Text>DTD are not supported by SOAP</env:Text></env:Reason></env:Fault></env:Body></env:Envelope>
diff --git a/ext/soap/tests/soap12/T65.phpt b/ext/soap/tests/soap12/T65.phpt
new file mode 100644
index 0000000..cd96d4a
--- /dev/null
+++ b/ext/soap/tests/soap12/T65.phpt
@@ -0,0 +1,26 @@
+--TEST--
+SOAP 1.2: T65 echoOk
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+$HTTP_RAW_POST_DATA = <<<EOF
+<?xml version='1.0' ?>
+<!DOCTYPE DOC [
+<!ELEMENT Envelope (Body) >
+<!ELEMENT Body (echoOk) >
+<!ELEMENT echoOk (#PCDATA) >
+]>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">
+ <env:Body>
+ <test:echoOk xmlns:test="http://example.org/ts-tests">
+ foo
+ </test:echoOk>
+ </env:Body>
+</env:Envelope>
+EOF;
+include "soap12-test.inc";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"><env:Body><env:Fault><env:Code><env:Value>env:Receiver</env:Value></env:Code><env:Reason><env:Text>DTD are not supported by SOAP</env:Text></env:Reason></env:Fault></env:Body></env:Envelope>
diff --git a/ext/soap/tests/soap12/T66.phpt b/ext/soap/tests/soap12/T66.phpt
new file mode 100644
index 0000000..cc7cc2e
--- /dev/null
+++ b/ext/soap/tests/soap12/T66.phpt
@@ -0,0 +1,23 @@
+--TEST--
+SOAP 1.2: T66 echoOk
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+$HTTP_RAW_POST_DATA = <<<EOF
+<?xml version='1.0' encoding='UTF8'?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">
+ <env:Header>
+ <test:echoOk xmlns:test="http://example.org/ts-tests"
+ env:role="http://www.w3.org/2003/05/soap-envelope/role/next">foo</test:echoOk>
+ </env:Header>
+ <env:Body>
+ </env:Body>
+</env:Envelope>
+EOF;
+include "soap12-test.inc";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope" xmlns:ns1="http://example.org/ts-tests"><env:Header><ns1:responseOk>foo</ns1:responseOk></env:Header><env:Body/></env:Envelope>
+ok
diff --git a/ext/soap/tests/soap12/T67.phpt b/ext/soap/tests/soap12/T67.phpt
new file mode 100644
index 0000000..ddc527a
--- /dev/null
+++ b/ext/soap/tests/soap12/T67.phpt
@@ -0,0 +1,23 @@
+--TEST--
+SOAP 1.2: T67 echoOk
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+$HTTP_RAW_POST_DATA = <<<EOF
+<?xml version='1.0' standalone='yes'?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">
+ <env:Header>
+ <test:echoOk xmlns:test="http://example.org/ts-tests"
+ env:role="http://www.w3.org/2003/05/soap-envelope/role/next">foo</test:echoOk>
+ </env:Header>
+ <env:Body>
+ </env:Body>
+</env:Envelope>
+EOF;
+include "soap12-test.inc";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope" xmlns:ns1="http://example.org/ts-tests"><env:Header><ns1:responseOk>foo</ns1:responseOk></env:Header><env:Body/></env:Envelope>
+ok
diff --git a/ext/soap/tests/soap12/T68.phpt b/ext/soap/tests/soap12/T68.phpt
new file mode 100644
index 0000000..a791519
--- /dev/null
+++ b/ext/soap/tests/soap12/T68.phpt
@@ -0,0 +1,32 @@
+--TEST--
+SOAP 1.2: T68 echoOk
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+$HTTP_RAW_POST_DATA = <<<EOF
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">
+
+
+ <env:Header >
+
+ <test:echoOk xmlns:test="http://example.org/ts-tests"
+ env:role="http://www.w3.org/2003/05/soap-envelope/role/next" >foo</test:echoOk>
+
+
+ </env:Header>
+ <env:Body>
+
+
+ </env:Body>
+
+
+
+</env:Envelope>
+EOF;
+include "soap12-test.inc";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope" xmlns:ns1="http://example.org/ts-tests"><env:Header><ns1:responseOk>foo</ns1:responseOk></env:Header><env:Body/></env:Envelope>
+ok
diff --git a/ext/soap/tests/soap12/T69.phpt b/ext/soap/tests/soap12/T69.phpt
new file mode 100644
index 0000000..0fb02de
--- /dev/null
+++ b/ext/soap/tests/soap12/T69.phpt
@@ -0,0 +1,19 @@
+--TEST--
+SOAP 1.2: T69 echoOk
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+$HTTP_RAW_POST_DATA = <<<EOF
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">
+ <env:Header>
+ <test:echoOk xmlns:test="http://example.org/ts-tests">foo</test:echoOk>
+ </env:Header>
+</env:Envelope>
+EOF;
+include "soap12-test.inc";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"><env:Body><env:Fault><env:Code><env:Value>env:Sender</env:Value></env:Code><env:Reason><env:Text>Body must be present in a SOAP envelope</env:Text></env:Reason></env:Fault></env:Body></env:Envelope>
diff --git a/ext/soap/tests/soap12/T70.phpt b/ext/soap/tests/soap12/T70.phpt
new file mode 100644
index 0000000..3622c32
--- /dev/null
+++ b/ext/soap/tests/soap12/T70.phpt
@@ -0,0 +1,23 @@
+--TEST--
+SOAP 1.2: T70 echoOk
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+$HTTP_RAW_POST_DATA = <<<EOF
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">
+ <env:Header>
+ <test:echoOk xmlns:test="http://example.org/ts-tests">foo</test:echoOk>
+ </env:Header>
+ <env:Body>
+ </env:Body>
+ <Trailer>
+ </Trailer>
+</env:Envelope>
+EOF;
+include "soap12-test.inc";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"><env:Body><env:Fault><env:Code><env:Value>env:Sender</env:Value></env:Code><env:Reason><env:Text>A SOAP 1.2 envelope can contain only Header and Body</env:Text></env:Reason></env:Fault></env:Body></env:Envelope>
diff --git a/ext/soap/tests/soap12/T71.phpt b/ext/soap/tests/soap12/T71.phpt
new file mode 100644
index 0000000..fdb5b8d
--- /dev/null
+++ b/ext/soap/tests/soap12/T71.phpt
@@ -0,0 +1,24 @@
+--TEST--
+SOAP 1.2: T71 echoOk
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+$HTTP_RAW_POST_DATA = <<<EOF
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"
+ attr1="a-value">
+ <env:Header>
+ <test:echoOk xmlns:test="http://example.org/ts-tests">
+ foo
+ </test:echoOk>
+ </env:Header>
+ <env:Body>
+ </env:Body>
+</env:Envelope>
+EOF;
+include "soap12-test.inc";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"><env:Body><env:Fault><env:Code><env:Value>env:Sender</env:Value></env:Code><env:Reason><env:Text>A SOAP Envelope element cannot have non Namespace qualified attributes</env:Text></env:Reason></env:Fault></env:Body></env:Envelope>
diff --git a/ext/soap/tests/soap12/T72.phpt b/ext/soap/tests/soap12/T72.phpt
new file mode 100644
index 0000000..b8f5060
--- /dev/null
+++ b/ext/soap/tests/soap12/T72.phpt
@@ -0,0 +1,22 @@
+--TEST--
+SOAP 1.2: T72 echoOk
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+$HTTP_RAW_POST_DATA = <<<EOF
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"
+ env:encodingStyle="http://www.w3.org/2003/05/soap-encoding">
+ <env:Body>
+ <test:echoOk xmlns:test="http://example.org/ts-tests">
+ foo
+ </test:echoOk>
+ </env:Body>
+</env:Envelope>
+EOF;
+include "soap12-test.inc";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"><env:Body><env:Fault><env:Code><env:Value>env:Sender</env:Value></env:Code><env:Reason><env:Text>encodingStyle cannot be specified on the Envelope</env:Text></env:Reason></env:Fault></env:Body></env:Envelope>
diff --git a/ext/soap/tests/soap12/T73.phpt b/ext/soap/tests/soap12/T73.phpt
new file mode 100644
index 0000000..9143e58
--- /dev/null
+++ b/ext/soap/tests/soap12/T73.phpt
@@ -0,0 +1,26 @@
+--TEST--
+SOAP 1.2: T73 echoString
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+$HTTP_RAW_POST_DATA = <<<EOF
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <env:Body>
+ <test:echoString xmlns:test="http://example.org/ts-tests"
+ env:encodingStyle="http://www.w3.org/2003/05/soap-encoding">
+ <test:inputString xsi:type="xsd:string"
+ env:encodingStyle="http://www.w3.org/2003/05/soap-encoding">hello world</test:inputString>
+ </test:echoString>
+ </env:Body>
+</env:Envelope>
+EOF;
+include "soap12-test.inc";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope" xmlns:ns1="http://example.org/ts-tests" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:enc="http://www.w3.org/2003/05/soap-encoding"><env:Body xmlns:rpc="http://www.w3.org/2003/05/soap-rpc"><ns1:echoStringResponse env:encodingStyle="http://www.w3.org/2003/05/soap-encoding"><rpc:result>return</rpc:result><return xsi:type="xsd:string">hello world</return></ns1:echoStringResponse></env:Body></env:Envelope>
+ok
diff --git a/ext/soap/tests/soap12/T74.phpt b/ext/soap/tests/soap12/T74.phpt
new file mode 100644
index 0000000..703e187
--- /dev/null
+++ b/ext/soap/tests/soap12/T74.phpt
@@ -0,0 +1,28 @@
+--TEST--
+SOAP 1.2: T74 doubleHdr
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+$HTTP_RAW_POST_DATA = <<<EOF
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">
+ <env:Header>
+ <test:echoOk xmlns:test="http://example.org/ts-tests"
+ env:role="http://www.w3.org/2003/05/soap-envelope/role/next">foo</test:echoOk>
+ <test:Unknown xmlns:test="http://example.org/ts-tests">
+ <test:raiseFault env:mustUnderstand="1"
+ env:role="http://www.w3.org/2003/05/soap-envelope/role/next">
+ </test:raiseFault>
+ </test:Unknown>
+ </env:Header>
+ <env:Body>
+ </env:Body>
+</env:Envelope>
+EOF;
+include "soap12-test.inc";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope" xmlns:ns1="http://example.org/ts-tests"><env:Header><ns1:responseOk>foo</ns1:responseOk></env:Header><env:Body/></env:Envelope>
+ok
diff --git a/ext/soap/tests/soap12/T75.phpt b/ext/soap/tests/soap12/T75.phpt
new file mode 100644
index 0000000..3e2166d
--- /dev/null
+++ b/ext/soap/tests/soap12/T75.phpt
@@ -0,0 +1,28 @@
+--TEST--
+SOAP 1.2: T75 echoResolvedRef
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+$HTTP_RAW_POST_DATA = <<<EOF
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">
+ <env:Header>
+ <test:echoResolvedRef xmlns:test="http://example.org/ts-tests"
+ env:role="http://www.w3.org/2003/05/soap-envelope/role/next"
+ env:mustUnderstand="1">
+ <test:RelativeReference xml:base="http://example.org/today/"
+ xlink:href="new.xml"
+ xmlns:xlink="http://www.w3.org/1999/xlink" />
+ </test:echoResolvedRef>
+ </env:Header>
+ <env:Body>
+ </env:Body>
+</env:Envelope>
+EOF;
+include "soap12-test.inc";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope" xmlns:ns1="http://example.org/ts-tests"><env:Header><ns1:responseResolvedRef>http://example.org/today/new.xml</ns1:responseResolvedRef></env:Header><env:Body/></env:Envelope>
+ok
diff --git a/ext/soap/tests/soap12/T76_1.phpt b/ext/soap/tests/soap12/T76_1.phpt
new file mode 100644
index 0000000..e97c179
--- /dev/null
+++ b/ext/soap/tests/soap12/T76_1.phpt
@@ -0,0 +1,25 @@
+--TEST--
+SOAP 1.2: T76.1 echoString
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+$HTTP_RAW_POST_DATA = <<<EOF
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <env:Body>
+ <test:echoString xmlns:test="http://example.org/ts-tests"
+ env:encodingStyle="http://www.w3.org/2003/05/soap-encoding">
+ <inputString xsi:type="xsd:string">hello world</inputString>
+ </test:echoString>
+ </env:Body>
+</env:Envelope>
+EOF;
+include "soap12-test.inc";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope" xmlns:ns1="http://example.org/ts-tests" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:enc="http://www.w3.org/2003/05/soap-encoding"><env:Body xmlns:rpc="http://www.w3.org/2003/05/soap-rpc"><ns1:echoStringResponse env:encodingStyle="http://www.w3.org/2003/05/soap-encoding"><rpc:result>return</rpc:result><return xsi:type="xsd:string">hello world</return></ns1:echoStringResponse></env:Body></env:Envelope>
+ok
diff --git a/ext/soap/tests/soap12/T76_2.phpt b/ext/soap/tests/soap12/T76_2.phpt
new file mode 100644
index 0000000..cc6ea0d
--- /dev/null
+++ b/ext/soap/tests/soap12/T76_2.phpt
@@ -0,0 +1,32 @@
+--TEST--
+SOAP 1.2: T76.2 echoString
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+$HTTP_RAW_POST_DATA = <<<EOF
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:enc="http://www.w3.org/2003/05/soap-encoding">
+ <env:Header>
+ <test:DataHolder xmlns:test="http://example.org/ts-tests"
+ env:encodingStyle="http://www.w3.org/2003/05/soap-encoding">
+ <test:Data enc:id="data" xsi:type="xsd:string">hello world</test:Data>
+ </test:DataHolder>
+ </env:Header>
+ <env:Body>
+ <test:echoString xmlns:test="http://example.org/ts-tests"
+ env:encodingStyle="http://www.w3.org/2003/05/soap-encoding">
+ <inputString enc:ref="data" xsi:type="xsd:string" />
+ </test:echoString>
+ </env:Body>
+</env:Envelope>
+EOF;
+include "soap12-test.inc";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope" xmlns:ns1="http://example.org/ts-tests" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:enc="http://www.w3.org/2003/05/soap-encoding"><env:Body xmlns:rpc="http://www.w3.org/2003/05/soap-rpc"><ns1:echoStringResponse env:encodingStyle="http://www.w3.org/2003/05/soap-encoding"><rpc:result>return</rpc:result><return xsi:type="xsd:string">hello world</return></ns1:echoStringResponse></env:Body></env:Envelope>
+ok
diff --git a/ext/soap/tests/soap12/T77_1.phpt b/ext/soap/tests/soap12/T77_1.phpt
new file mode 100644
index 0000000..d847b6c
--- /dev/null
+++ b/ext/soap/tests/soap12/T77_1.phpt
@@ -0,0 +1,25 @@
+--TEST--
+SOAP 1.2: T77.1 isNil
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+$HTTP_RAW_POST_DATA = <<<EOF
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <env:Body>
+ <test:isNil xmlns:test="http://example.org/ts-tests"
+ env:encodingStyle="http://www.w3.org/2003/05/soap-encoding">
+ <inputString xsi:nil="1" />
+ </test:isNil>
+ </env:Body>
+</env:Envelope>
+EOF;
+include "soap12-test.inc";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope" xmlns:ns1="http://example.org/ts-tests" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:enc="http://www.w3.org/2003/05/soap-encoding"><env:Body xmlns:rpc="http://www.w3.org/2003/05/soap-rpc"><ns1:isNilResponse env:encodingStyle="http://www.w3.org/2003/05/soap-encoding"><rpc:result>return</rpc:result><return xsi:type="xsd:boolean">true</return></ns1:isNilResponse></env:Body></env:Envelope>
+ok
diff --git a/ext/soap/tests/soap12/T77_2.phpt b/ext/soap/tests/soap12/T77_2.phpt
new file mode 100644
index 0000000..c829b57
--- /dev/null
+++ b/ext/soap/tests/soap12/T77_2.phpt
@@ -0,0 +1,24 @@
+--TEST--
+SOAP 1.2: T77.2 isNil
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+$HTTP_RAW_POST_DATA = <<<EOF
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <env:Body>
+ <test:isNil xmlns:test="http://example.org/ts-tests"
+ env:encodingStyle="http://www.w3.org/2003/05/soap-encoding">
+ </test:isNil>
+ </env:Body>
+</env:Envelope>
+EOF;
+include "soap12-test.inc";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope" xmlns:ns1="http://example.org/ts-tests" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:enc="http://www.w3.org/2003/05/soap-encoding"><env:Body xmlns:rpc="http://www.w3.org/2003/05/soap-rpc"><ns1:isNilResponse env:encodingStyle="http://www.w3.org/2003/05/soap-encoding"><rpc:result>return</rpc:result><return xsi:type="xsd:boolean">true</return></ns1:isNilResponse></env:Body></env:Envelope>
+ok
diff --git a/ext/soap/tests/soap12/T77_3.phpt b/ext/soap/tests/soap12/T77_3.phpt
new file mode 100644
index 0000000..0e1355a
--- /dev/null
+++ b/ext/soap/tests/soap12/T77_3.phpt
@@ -0,0 +1,27 @@
+--TEST--
+SOAP 1.2: T77.3 isNul
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+$HTTP_RAW_POST_DATA = <<<EOF
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <env:Body>
+ <test:isNil xmlns:test="http://example.org/ts-tests"
+ env:encodingStyle="http://www.w3.org/2003/05/soap-encoding">
+ <inputString xsi:type="xsd:string">
+ This is a string
+ </inputString>
+ </test:isNil>
+ </env:Body>
+</env:Envelope>
+EOF;
+include "soap12-test.inc";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope" xmlns:ns1="http://example.org/ts-tests" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:enc="http://www.w3.org/2003/05/soap-encoding"><env:Body xmlns:rpc="http://www.w3.org/2003/05/soap-rpc"><ns1:isNilResponse env:encodingStyle="http://www.w3.org/2003/05/soap-encoding"><rpc:result>return</rpc:result><return xsi:type="xsd:boolean">false</return></ns1:isNilResponse></env:Body></env:Envelope>
+ok
diff --git a/ext/soap/tests/soap12/T78.phpt b/ext/soap/tests/soap12/T78.phpt
new file mode 100644
index 0000000..63d13c7
--- /dev/null
+++ b/ext/soap/tests/soap12/T78.phpt
@@ -0,0 +1,23 @@
+--TEST--
+SOAP 1.2: T78 echoOk
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+$HTTP_RAW_POST_DATA = <<<EOF
+<?xml version='1.0' ?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">
+ <env:Header>
+ <test:echoOk xmlns:test="http://example.org/ts-tests"
+ env:role="http://www.w3.org/2003/05/soap-envelope/role/ultimateReceiver">foo</test:echoOk>
+ </env:Header>
+ <env:Body>
+ </env:Body>
+</env:Envelope>
+EOF;
+include "soap12-test.inc";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope" xmlns:ns1="http://example.org/ts-tests"><env:Header><ns1:responseOk>foo</ns1:responseOk></env:Header><env:Body/></env:Envelope>
+ok
diff --git a/ext/soap/tests/soap12/T80.phpt b/ext/soap/tests/soap12/T80.phpt
new file mode 100644
index 0000000..1ac114b
--- /dev/null
+++ b/ext/soap/tests/soap12/T80.phpt
@@ -0,0 +1,19 @@
+--TEST--
+SOAP 1.2: T80 echoOk
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+$HTTP_RAW_POST_DATA = <<<EOF
+<?xml version="1.0"?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">
+ <env:Body>
+ <test:echoOk xmlns:test="http://example.org/ts-tests" env:encodingStyle="http://example.org/PoisonEncoding">foo</test:echoOk>
+ </env:Body>
+</env:Envelope>
+EOF;
+include "soap12-test.inc";
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"><env:Body><env:Fault><env:Code><env:Value>env:DataEncodingUnknown</env:Value></env:Code><env:Reason><env:Text>Unknown Data Encoding Style</env:Text></env:Reason></env:Fault></env:Body></env:Envelope>
diff --git a/ext/soap/tests/soap12/skipif.inc b/ext/soap/tests/soap12/skipif.inc
new file mode 100644
index 0000000..fa8574e
--- /dev/null
+++ b/ext/soap/tests/soap12/skipif.inc
@@ -0,0 +1,3 @@
+<?php
+ if (!extension_loaded('soap')) die('skip soap extension not available');
+?>
diff --git a/ext/soap/tests/soap12/soap12-test.inc b/ext/soap/tests/soap12/soap12-test.inc
new file mode 100644
index 0000000..fbdc855
--- /dev/null
+++ b/ext/soap/tests/soap12/soap12-test.inc
@@ -0,0 +1,131 @@
+<?php
+class Soap12test {
+ public $header;
+
+ function echoOk($x) {
+ return $x;
+ }
+
+ function echoString($inputString) {
+ return $inputString;
+ }
+
+ function echoStringArray($inputStringArray) {
+ return $inputStringArray;
+ }
+
+ function echoInteger($inputInteger) {
+ return $inputInteger;
+ }
+
+ function echoIntegerArray($inputIntegerArray) {
+ return $inputIntegerArray;
+ }
+
+ function echoFloat($inputFloat) {
+ return $inputFloat;
+ }
+
+ function echoFloatArray($inputFloatArray) {
+ return $inputFloatArray;
+ }
+
+ function echoStruct($x) {
+ return $x;
+ }
+
+ function echoStructArray($x) {
+ return $x;
+ }
+
+ function echoVoid() {
+ return NULL;
+ }
+
+ function echoBase64($b_encoded) {
+ return $b_encoded;
+ }
+
+ function echoDate($timeInstant) {
+ return $timeInstant;
+ }
+
+ function echoHexBinary($hb) {
+ return $hb;
+ }
+
+ function echoDecimal($dec) {
+ return $dec;
+ }
+
+ function echoBoolean($boolean) {
+ return $boolean;
+ }
+
+ function echoStructAsSimpleTypes ($struct) {
+ return array('outputString' => $struct->varString,
+ 'outputInteger' => $struct->varInt,
+ 'outputFloat' => $struct->varFloat);
+ }
+
+ function echoSimpleTypesAsStruct($string, $int, $float) {
+ return (object)array("varString" => $string,
+ "varInt" => $int,
+ "varFloat" => $float);
+ }
+
+ function echoNestedStruct($struct) {
+ return $struct;
+ }
+
+ function echo2DStringArray($ary) {
+ return $ary;
+ }
+
+ function echoNestedArray($ary) {
+ return $ary;
+ }
+
+ function countItems($input) {
+ return count($input);
+ }
+
+ function isNil($input) {
+ return is_null($input);
+ }
+
+ function returnVoid() {
+ }
+
+ function emptyBody() {
+ }
+
+ function requiredHeader($x) {
+ $this->header = $x;
+ }
+
+ function echoHeader() {
+ return $this->header;
+ }
+
+ function echoResolvedRef($ref) {
+ return $ref->RelativeReference->base.$ref->RelativeReference->href;
+ }
+
+ function validateCountryCode($code) {
+ if (strlen($code) != 2) {
+ return new SoapFault("Client", "Not a valid country code", NULL, NULL, NULL, new SoapHeader("http://example.org/ts-tests", "validateCountryCodeFault", "Country code must be 2 letters."));
+ } else {
+ return "OK";
+ }
+ }
+
+}
+
+ini_set("soap.wsdl_cache_enabled",0);
+$server = new soapserver(dirname(__FILE__)."/soap12-test.wsdl", array('soap_version'=>SOAP_1_2,'actor'=>"http://example.org/ts-tests/C"));
+$server->setClass("Soap12test");
+
+$server->handle($HTTP_RAW_POST_DATA);
+echo "ok\n";
+?>
diff --git a/ext/soap/tests/soap12/soap12-test.wsdl b/ext/soap/tests/soap12/soap12-test.wsdl
new file mode 100644
index 0000000..d1679b4
--- /dev/null
+++ b/ext/soap/tests/soap12/soap12-test.wsdl
@@ -0,0 +1,771 @@
+<?xml version="1.0"?>
+
+<definitions name="SOAP-12-TestDefinitions"
+ targetNamespace="http://whitemesa.net/wsdl/soap12-test"
+ xmlns="http://schemas.xmlsoap.org/wsdl/"
+ xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:enc="http://www.w3.org/2003/05/soap-encoding"
+ xmlns:tns="http://whitemesa.net/wsdl/soap12-test"
+ xmlns:types="http://example.org/ts-tests/xsd"
+ xmlns:test="http://example.org/ts-tests"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
+ xmlns:enc11="http://schemas.xmlsoap.org/soap/encoding/">
+ <types>
+ <schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://example.org/ts-tests/xsd">
+
+ <import namespace="http://schemas.xmlsoap.org/soap/encoding/" />
+
+ <complexType name="ArrayOfstring">
+ <complexContent>
+ <restriction base="enc11:Array">
+ <attribute ref="enc11:arrayType" wsdl:arrayType="xsd:string[]"/>
+ </restriction>
+ </complexContent>
+ </complexType>
+
+ <complexType name="ArrayOfint">
+ <complexContent>
+ <restriction base="enc11:Array">
+ <attribute ref="enc11:arrayType" wsdl:arrayType="xsd:int[]"/>
+ </restriction>
+ </complexContent>
+ </complexType>
+
+ <complexType name="ArrayOffloat">
+ <complexContent>
+ <restriction base="enc11:Array">
+ <attribute ref="enc11:arrayType" wsdl:arrayType="xsd:float[]"/>
+ </restriction>
+ </complexContent>
+ </complexType>
+
+ <complexType name="ArrayOfSOAPStruct">
+ <complexContent>
+ <restriction base="enc11:Array">
+ <attribute ref="enc11:arrayType" wsdl:arrayType="types:SOAPStruct[]"/>
+ </restriction>
+ </complexContent>
+ </complexType>
+
+ <complexType name="SOAPStruct">
+ <all>
+ <element name="varString" type="xsd:string"/>
+ <element name="varInt" type="xsd:int"/>
+ <element name="varFloat" type="xsd:float"/>
+ </all>
+ </complexType>
+ <complexType name="SOAPStructStruct">
+ <all>
+ <element name="varString" type="xsd:string"/>
+ <element name="varInt" type="xsd:int"/>
+ <element name="varFloat" type="xsd:float"/>
+ <element name="varStruct" type="types:SOAPStruct"/>
+ </all>
+ </complexType>
+
+ <complexType name="SOAPArrayStruct">
+ <all>
+ <element name="varString" type="xsd:string"/>
+ <element name="varInt" type="xsd:int"/>
+ <element name="varFloat" type="xsd:float"/>
+ <element name="varArray" type="types:ArrayOfstring"/>
+ </all>
+ </complexType>
+
+ <!-- unknown header block type -->
+ <complexType name="UnknownType">
+ <sequence>
+ <element minOccurs="0" maxOccurs="1" name="stringValue" type="xsd:string" />
+ </sequence>
+ </complexType>
+
+ </schema>
+
+ <schema xmlns="http://www.w3.org/2001/XMLSchema"
+ elementFormDefault="qualified"
+ targetNamespace="http://example.org/ts-tests">
+
+ <import namespace="http://www.w3.org/1999/xlink" />
+ <import namespace="http://example.org/ts-tests/xsd" />
+
+ <!-- 3.2.1 echoOk -->
+ <element name="echoOk" type="xsd:string"/>
+
+ <!-- 3.2.2 responseOk -->
+ <element name="responseOk" type="xsd:string"/>
+
+ <!-- 3.2.3 Ignore -->
+ <element name="Ignore" type="xsd:string"/>
+
+ <!-- 3.2.4 requiredHeader -->
+ <element name="requiredHeader" type="xsd:string"/>
+
+ <element name="echoHeader" type="xsd:string"/>
+ <element name="echoHeaderResponse" type="xsd:string"/>
+
+ <!-- 3.2.5 DataHolder -->
+ <element name="DataHolder" type="test:DataHolder_t"/>
+ <complexType name="DataHolder_t">
+ <sequence>
+ <element name="Data" type="xsd:string" minOccurs="1" maxOccurs="unbounded"/>
+ </sequence>
+ </complexType>
+
+ <!-- 3.2.6 concatAndForwardEchoOk -->
+ <element name="concatAndForwardEchoOk"/>
+
+ <!-- 3.2.7 concatAndForwardEchoOkArg1 -->
+ <element name="concatAndForwardEchoOkArg1" type="xsd:string"/>
+
+ <!-- 3.2.8 concatAndForwardEchoOkArg2 -->
+ <element name="concatAndForwardEchoOkArg2" type="xsd:string"/>
+
+ <!-- 3.2.9 validateCountryCode -->
+ <element name="validateCountryCode" type="xsd:string"/>
+
+ <element name="validateCountryCodeResponse" type="xsd:string"/>
+
+ <!-- 3.2.10 validateCountryCodeFault -->
+ <element name="validateCountryCodeFault" type="xsd:string"/>
+
+ <!-- 3.2.11 echoResolvedRef -->
+ <element name="RelativeReference" type="test:RelativeReference_t"/>
+ <complexType name="RelativeReference_t">
+ <attribute ref="xml:base"/>
+ <attribute ref="xlink:href"/>
+ </complexType>
+
+ <element name="echoResolvedRef" type="test:echoResolvedRef_t"/>
+ <complexType name="echoResolvedRef_t">
+ <sequence>
+ <element ref="test:RelativeReference" minOccurs="1" maxOccurs="1"/>
+ </sequence>
+ </complexType>
+
+ <!-- 3.2.12 responseResolvedRef -->
+ <element name="responseResolvedRef" type="xsd:string"/>
+
+ <!-- echoOkUltimateReceiver added to support testing of "relay" -->
+ <element name="echoOkUltimateReceiver" type="xsd:string"/>
+
+ <!-- responseOkUltimateReceiver added to support testing of "relay" -->
+ <element name="responseOkUltimateReceiver" type="xsd:string"/>
+
+ <element name="Unknown" type="types:UnknownType" />
+
+ </schema>
+
+ </types>
+
+ <!-- 3.4.1 returnVoid rpc operation -->
+ <message name="returnVoidRequest"/>
+ <message name="returnVoidResponse"/>
+
+ <!-- 3.4.2 echoStruct rpc operation -->
+ <message name="echoStructRequest">
+ <part name="inputStruct" type="types:SOAPStruct"/>
+ </message>
+ <message name="echoStructResponse">
+ <part name="return" type="types:SOAPStruct"/>
+ </message>
+
+ <!-- 3.4.3 echoStructArray rpc operation -->
+ <message name="echoStructArrayRequest">
+ <part name="inputStructArray" type="types:ArrayOfSOAPStruct"/>
+ </message>
+ <message name="echoStructArrayResponse">
+ <part name="return" type="types:ArrayOfSOAPStruct"/>
+ </message>
+
+ <!-- 3.4.4 echoStructAsSimpleTypes rpc operation -->
+ <message name="echoStructAsSimpleTypesRequest">
+ <part name="inputStruct" type="types:SOAPStruct"/>
+ </message>
+ <message name="echoStructAsSimpleTypesResponse">
+ <part name="outputString" type="xsd:string"/>
+ <part name="outputInteger" type="xsd:int"/>
+ <part name="outputFloat" type="xsd:float"/>
+ </message>
+
+ <!-- 3.4.5 echoSimpleTypesAsStruct rpc operation -->
+ <message name="echoSimpleTypesAsStructRequest">
+ <part name="inputString" type="xsd:string"/>
+ <part name="inputInt" type="xsd:int"/>
+ <part name="inputFloat" type="xsd:float"/>
+ </message>
+ <message name="echoSimpleTypesAsStructResponse">
+ <part name="return" type="types:SOAPStruct"/>
+ </message>
+
+ <!-- 3.4.6 echoNestedStruct rpc operation -->
+ <message name="echoNestedStructRequest">
+ <part name="inputStruct" type="types:SOAPStructStruct"/>
+ </message>
+ <message name="echoNestedStructResponse">
+ <part name="return" type="types:SOAPStructStruct"/>
+ </message>
+
+ <!-- 3.4.7 echoNestedArray rpc operation -->
+ <message name="echoNestedArrayRequest">
+ <part name="inputStruct" type="types:SOAPArrayStruct"/>
+ </message>
+ <message name="echoNestedArrayResponse">
+ <part name="return" type="types:SOAPArrayStruct"/>
+ </message>
+
+ <!-- 3.4.8 echoFloatArray rpc operation -->
+ <message name="echoFloatArrayRequest">
+ <part name="inputFloatArray" type="types:ArrayOffloat"/>
+ </message>
+ <message name="echoFloatArrayResponse">
+ <part name="return" type="types:ArrayOffloat"/>
+ </message>
+
+ <!-- 3.4.9 echoStringArray rpc operation -->
+ <message name="echoStringArrayRequest">
+ <part name="inputStringArray" type="types:ArrayOfstring"/>
+ </message>
+ <message name="echoStringArrayResponse">
+ <part name="return" type="types:ArrayOfstring"/>
+ </message>
+
+ <!-- 3.4.10 echoIntegerArray rpc operation -->
+ <message name="echoIntegerArrayRequest">
+ <part name="inputIntegerArray" type="types:ArrayOfint"/>
+ </message>
+ <message name="echoIntegerArrayResponse">
+ <part name="return" type="types:ArrayOfint"/>
+ </message>
+
+ <!-- 3.4.11 echoBase64 rpc operation -->
+ <message name="echoBase64Request">
+ <part name="inputBase64" type="xsd:base64Binary"/>
+ </message>
+ <message name="echoBase64Response">
+ <part name="return" type="xsd:base64Binary"/>
+ </message>
+
+ <!-- 3.4.12 echoBoolean rpc operation -->
+ <message name="echoBooleanRequest">
+ <part name="inputBoolean" type="xsd:boolean"/>
+ </message>
+ <message name="echoBooleanResponse">
+ <part name="return" type="xsd:boolean"/>
+ </message>
+
+ <!-- 3.4.13 echoDate rpc operation -->
+ <message name="echoDateRequest">
+ <part name="inputDate" type="xsd:dateTime"/>
+ </message>
+ <message name="echoDateResponse">
+ <part name="return" type="xsd:dateTime"/>
+ </message>
+
+ <!-- 3.4.14 echoDecimal rpc operation -->
+ <message name="echoDecimalRequest">
+ <part name="inputDecimal" type="xsd:decimal"/>
+ </message>
+ <message name="echoDecimalResponse">
+ <part name="return" type="xsd:decimal"/>
+ </message>
+
+ <!-- 3.4.15 echoFloat rpc operation -->
+ <message name="echoFloatRequest">
+ <part name="inputFloat" type="xsd:float"/>
+ </message>
+ <message name="echoFloatResponse">
+ <part name="return" type="xsd:float"/>
+ </message>
+
+ <!-- 3.4.16 echoString rpc operation -->
+ <message name="echoStringRequest">
+ <part name="inputString" type="xsd:string"/>
+ </message>
+ <message name="echoStringResponse">
+ <part name="return" type="xsd:string"/>
+ </message>
+
+ <!-- 3.4.17 countItems rpc operation -->
+ <message name="countItemsRequest">
+ <part name="inputStringArray" type="types:ArrayOfstring"/>
+ </message>
+ <message name="countItemsResponse">
+ <part name="return" type="xsd:int"/>
+ </message>
+
+ <!-- 3.4.18 isNil rpc operation -->
+ <message name="isNilRequest">
+ <part name="inputString" type="xsd:string"/>
+ </message>
+ <message name="isNilResponse">
+ <part name="return" type="xsd:boolean"/>
+ </message>
+
+ <!-- DataHolder header block -->
+ <message name="DataHolderRequest">
+ <part name="DataHolder" type="test:DataHolder_t"/>
+ </message>
+ <message name="DataHolderResponse">
+ <part name="DataHolder" type="test:DataHolder_t"/>
+ </message>
+
+ <!-- empty message for doc/literal testing -->
+ <message name="emptyBodyRequest"/>
+ <message name="emptyBodyResponse"/>
+
+ <!-- echoOk body/header block -->
+ <message name="echoOkRequest">
+ <part name="echoOk" element="test:echoOk"/>
+ </message>
+ <message name="echoOkResponse">
+ <part name="responseOk" element="test:responseOk"/>
+ </message>
+
+ <message name="requiredHeaderRequest">
+ <part name="requiredHeader" element="test:requiredHeader"/>
+ </message>
+ <message name="echoHeaderRequest">
+ <part name="responseHeader" element="test:echoHeader"/>
+ </message>
+ <message name="echoHeaderResponse">
+ <part name="responseHeader" element="test:echoHeaderResponse"/>
+ </message>
+
+ <message name="echoResolvedRefRequest">
+ <part name="responseHeader" element="test:echoResolvedRef"/>
+ </message>
+ <message name="echoResolvedRefResponse">
+ <part name="responseHeader" element="test:responseResolvedRef"/>
+ </message>
+
+ <!-- "unknown" header block -->
+ <message name="UnknownHdrBlockLit">
+ <part name="Unknown" element="test:Unknown" />
+ </message>
+ <message name="UnknownHdrBlockEnc">
+ <part name="Unknown" type="types:UnknownType" />
+ </message>
+
+ <message name="validateCountryCodeRequest">
+ <part name="validateCountryCode" element="test:validateCountryCode" />
+ </message>
+ <message name="validateCountryCodeFault">
+ <part name="validateCountryCodeFault" element="test:validateCountryCodeFault" />
+ </message>
+ <message name="validateCountryCodeResponse">
+ <part name="validateCountryCodeResponse" element="test:validateCountryCodeResponse" />
+ </message>
+
+
+ <portType name="Soap12TestPortTypeDoc">
+ <operation name="emptyBody">
+ <input message="tns:emptyBodyRequest" />
+ <output message="tns:emptyBodyResponse" />
+ </operation>
+ <operation name="echoOk">
+ <input message="tns:echoOkRequest" />
+ <output message="tns:echoOkResponse" />
+ </operation>
+ <operation name="requiredHeader">
+ <input message="tns:requiredHeaderRequest" />
+ </operation>
+ <operation name="echoHeader">
+ <input message="tns:echoHeaderRequest" />
+ <output message="tns:echoHeaderResponse" />
+ </operation>
+ <operation name="echoResolvedRef">
+ <input message="tns:echoResolvedRefRequest" />
+ <output message="tns:echoResolvedRefResponse" />
+ </operation>
+ </portType>
+
+ <portType name="Soap12TestPortTypeRpc">
+
+ <!-- 3.4.1 returnVoid rpc operation -->
+ <operation name="returnVoid">
+ <input message="tns:returnVoidRequest"/>
+ <output message="tns:returnVoidResponse"/>
+ </operation>
+
+ <!-- 3.4.2 echoStruct rpc operation -->
+ <operation name="echoStruct" parameterOrder="inputStruct">
+ <input message="tns:echoStructRequest"/>
+ <output message="tns:echoStructResponse"/>
+ </operation>
+
+ <!-- 3.4.3 echoStructArray rpc operation -->
+ <operation name="echoStructArray" parameterOrder="inputStructArray">
+ <input message="tns:echoStructArrayRequest"/>
+ <output message="tns:echoStructArrayResponse"/>
+ </operation>
+
+ <!-- 3.4.4 echoStructAsSimpleTypes rpc operation -->
+ <operation name="echoStructAsSimpleTypes" parameterOrder="inputStruct outputString outputInteger outputFloat">
+ <input message="tns:echoStructAsSimpleTypesRequest"/>
+ <output message="tns:echoStructAsSimpleTypesResponse"/>
+ </operation>
+
+ <!-- 3.4.5 echoSimpleTypesAsStruct rpc operation -->
+ <operation name="echoSimpleTypesAsStruct" parameterOrder="inputString inputInteger inputFloat">
+ <input message="tns:echoSimpleTypesAsStructRequest"/>
+ <output message="tns:echoSimpleTypesAsStructResponse"/>
+ </operation>
+
+ <!-- 3.4.6 echoNestedStruct rpc operation -->
+ <operation name="echoNestedStruct" parameterOrder="inputStruct">
+ <input message="tns:echoNestedStructRequest"/>
+ <output message="tns:echoNestedStructResponse"/>
+ </operation>
+
+ <!-- 3.4.7 echoNestedArray rpc operation -->
+ <operation name="echoNestedArray" parameterOrder="inputStruct">
+ <input message="tns:echoNestedArrayRequest"/>
+ <output message="tns:echoNestedArrayResponse"/>
+ </operation>
+
+ <!-- 3.4.8 echoFloatArray rpc operation -->
+ <operation name="echoFloatArray" parameterOrder="inputFloatArray">
+ <input message="tns:echoFloatArrayRequest"/>
+ <output message="tns:echoFloatArrayResponse"/>
+ </operation>
+
+ <!-- 3.4.9 echoStringArray rpc operation -->
+ <operation name="echoStringArray" parameterOrder="inputStringArray">
+ <input message="tns:echoStringArrayRequest"/>
+ <output message="tns:echoStringArrayResponse"/>
+ </operation>
+
+ <!-- 3.4.10 echoIntegerArray rpc operation -->
+ <operation name="echoIntegerArray" parameterOrder="inputIntegerArray">
+ <input message="tns:echoIntegerArrayRequest"/>
+ <output message="tns:echoIntegerArrayResponse"/>
+ </operation>
+
+ <!-- 3.4.11 echoBase64 rpc operation -->
+ <operation name="echoBase64" parameterOrder="inputBase64">
+ <input message="tns:echoBase64Request"/>
+ <output message="tns:echoBase64Response"/>
+ </operation>
+
+ <!-- 3.4.12 echoBoolean rpc operation -->
+ <operation name="echoBoolean" parameterOrder="inputBoolean">
+ <input message="tns:echoBooleanRequest"/>
+ <output message="tns:echoBooleanResponse"/>
+ </operation>
+
+ <!-- 3.4.13 echoDate rpc operation -->
+ <operation name="echoDate" parameterOrder="inputDate">
+ <input message="tns:echoDateRequest"/>
+ <output message="tns:echoDateResponse"/>
+ </operation>
+
+ <!-- 3.4.14 echoDecimal rpc operation -->
+ <operation name="echoDecimal" parameterOrder="inputDecimal">
+ <input message="tns:echoDecimalRequest"/>
+ <output message="tns:echoDecimalResponse"/>
+ </operation>
+
+ <!-- 3.4.15 echoFloat rpc operation -->
+ <operation name="echoFloat" parameterOrder="inputFloat">
+ <input message="tns:echoFloatRequest"/>
+ <output message="tns:echoFloatResponse"/>
+ </operation>
+
+ <!-- 3.4.16 echoString rpc operation -->
+ <operation name="echoString" parameterOrder="inputString">
+ <input message="tns:echoStringRequest"/>
+ <output message="tns:echoStringResponse"/>
+ </operation>
+
+ <!-- 3.4.17 countItems rpc operation -->
+ <operation name="countItems" parameterOrder="inputStringArray">
+ <input message="tns:countItemsRequest"/>
+ <output message="tns:countItemsResponse"/>
+ </operation>
+
+ <!-- 3.4.18 isNil rpc operation -->
+ <operation name="isNil" parameterOrder="inputString">
+ <input message="tns:isNilRequest"/>
+ <output message="tns:isNilResponse"/>
+ </operation>
+
+ </portType>
+
+ <binding name="Soap12TestDocBinding" type="tns:Soap12TestPortTypeDoc">
+ <soap12:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" />
+ <operation name="emptyBody">
+ <soap12:operation/>
+ <input>
+ <soap12:body use="literal" />
+ <soap12:header message="tns:echoOkRequest" part="echoOk" use="literal" />
+ <soap12:header message="tns:UnknownHdrBlockLit" part="Unknown" use="literal" />
+ <soap12:header message="tns:validateCountryCodeRequest" part="validateCountryCode" use="literal">
+ <soap12:headerfault message="tns:validateCountryCodeFault" part="validateCountryCodeFault" use="literal"/>
+ </soap12:header>
+ </input>
+ <output>
+ <soap12:body use="literal" />
+ <soap12:header message="tns:echoOkResponse" part="responseOk" use="literal" />
+ <soap12:header message="tns:validateCountryCodeResponse" part="validateCountryCodeResponse" use="literal"/>
+ </output>
+ </operation>
+ <operation name="echoOk">
+ <soap12:operation/>
+ <input>
+ <soap12:body use="literal" />
+ <soap12:header message="tns:echoOkRequest" part="echoOk" use="literal" />
+ <soap12:header message="tns:UnknownHdrBlockLit" part="Unknown" use="literal" />
+ </input>
+ <output>
+ <soap12:body use="literal" />
+ <soap12:header message="tns:echoOkResponse" part="responseOk" use="literal" />
+ </output>
+ </operation>
+ <operation name="requiredHeader">
+ <soap12:operation/>
+ <input>
+ <soap12:body use="literal" />
+ </input>
+ </operation>
+ <operation name="echoHeader">
+ <soap12:operation/>
+ <input>
+ <soap12:body use="literal" />
+ <soap12:header message="tns:echoOkRequest" part="echoOk" use="literal" />
+ <soap12:header message="tns:UnknownHdrBlockLit" part="Unknown" use="literal" />
+ </input>
+ <output>
+ <soap12:body use="literal" />
+ <soap12:header message="tns:echoOkResponse" part="responseOk" use="literal" />
+ </output>
+ </operation>
+ <operation name="echoResolvedRef">
+ <soap12:operation/>
+ <input>
+ <soap12:body use="literal" />
+ </input>
+ <output>
+ <soap12:body use="literal" />
+ </output>
+ </operation>
+ </binding>
+
+ <binding name="Soap12TestRpcBinding" type="tns:Soap12TestPortTypeRpc">
+ <soap12:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
+
+ <!-- 3.4.1 returnVoid rpc operation -->
+ <operation name="returnVoid">
+ <soap12:operation/>
+ <input>
+ <soap12:body use="encoded" namespace="http://example.org/ts-tests" encodingStyle="http://www.w3.org/2003/05/soap-encoding"/>
+ </input>
+ <output>
+ <soap12:body use="encoded" namespace="http://example.org/ts-tests" encodingStyle="http://www.w3.org/2003/05/soap-encoding"/>
+ </output>
+ </operation>
+
+ <!-- 3.4.2 echoStruct rpc operation -->
+ <operation name="echoStruct">
+ <soap12:operation/>
+ <input>
+ <soap12:body use="encoded" namespace="http://example.org/ts-tests" encodingStyle="http://www.w3.org/2003/05/soap-encoding"/>
+ </input>
+ <output>
+ <soap12:body use="encoded" namespace="http://example.org/ts-tests" encodingStyle="http://www.w3.org/2003/05/soap-encoding"/>
+ </output>
+ </operation>
+
+ <!-- 3.4.3 echoStructArray rpc operation -->
+ <operation name="echoStructArray">
+ <soap12:operation/>
+ <input>
+ <soap12:body use="encoded" namespace="http://example.org/ts-tests" encodingStyle="http://www.w3.org/2003/05/soap-encoding"/>
+ </input>
+ <output>
+ <soap12:body use="encoded" namespace="http://example.org/ts-tests" encodingStyle="http://www.w3.org/2003/05/soap-encoding"/>
+ </output>
+ </operation>
+
+ <!-- 3.4.4 echoStructAsSimpleTypes rpc operation -->
+ <operation name="echoStructAsSimpleTypes">
+ <soap12:operation/>
+ <input>
+ <soap12:body use="encoded" namespace="http://example.org/ts-tests" encodingStyle="http://www.w3.org/2003/05/soap-encoding"/>
+ </input>
+ <output>
+ <soap12:body use="encoded" namespace="http://example.org/ts-tests" encodingStyle="http://www.w3.org/2003/05/soap-encoding"/>
+ </output>
+ </operation>
+
+ <!-- 3.4.5 echoSimpleTypesAsStruct rpc operation -->
+ <operation name="echoSimpleTypesAsStruct">
+ <soap12:operation/>
+ <input>
+ <soap12:body use="encoded" namespace="http://example.org/ts-tests" encodingStyle="http://www.w3.org/2003/05/soap-encoding"/>
+ </input>
+ <output>
+ <soap12:body use="encoded" namespace="http://example.org/ts-tests" encodingStyle="http://www.w3.org/2003/05/soap-encoding"/>
+ </output>
+ </operation>
+
+ <!-- 3.4.6 echoNestedStruct rpc operation -->
+ <operation name="echoNestedStruct">
+ <soap12:operation/>
+ <input>
+ <soap12:body use="encoded" namespace="http://example.org/ts-tests" encodingStyle="http://www.w3.org/2003/05/soap-encoding"/>
+ </input>
+ <output>
+ <soap12:body use="encoded" namespace="http://example.org/ts-tests" encodingStyle="http://www.w3.org/2003/05/soap-encoding"/>
+ </output>
+ </operation>
+
+ <!-- 3.4.7 echoNestedArray rpc operation -->
+ <operation name="echoNestedArray">
+ <soap12:operation/>
+ <input>
+ <soap12:body use="encoded" namespace="http://example.org/ts-tests" encodingStyle="http://www.w3.org/2003/05/soap-encoding"/>
+ </input>
+ <output>
+ <soap12:body use="encoded" namespace="http://example.org/ts-tests" encodingStyle="http://www.w3.org/2003/05/soap-encoding"/>
+ </output>
+ </operation>
+
+ <!-- 3.4.8 echoFloatArray rpc operation -->
+ <operation name="echoFloatArray">
+ <soap12:operation/>
+ <input>
+ <soap12:body use="encoded" namespace="http://example.org/ts-tests" encodingStyle="http://www.w3.org/2003/05/soap-encoding"/>
+ </input>
+ <output>
+ <soap12:body use="encoded" namespace="http://example.org/ts-tests" encodingStyle="http://www.w3.org/2003/05/soap-encoding"/>
+ </output>
+ </operation>
+
+ <!-- 3.4.9 echoStringArray rpc operation -->
+ <operation name="echoStringArray">
+ <soap12:operation/>
+ <input>
+ <soap12:body use="encoded" namespace="http://example.org/ts-tests" encodingStyle="http://www.w3.org/2003/05/soap-encoding"/>
+ </input>
+ <output>
+ <soap12:body use="encoded" namespace="http://example.org/ts-tests" encodingStyle="http://www.w3.org/2003/05/soap-encoding"/>
+ </output>
+ </operation>
+
+ <!-- 3.4.10 echoIntegerArray rpc operation -->
+ <operation name="echoIntegerArray">
+ <soap12:operation/>
+ <input>
+ <soap12:body use="encoded" namespace="http://example.org/ts-tests" encodingStyle="http://www.w3.org/2003/05/soap-encoding"/>
+ </input>
+ <output>
+ <soap12:body use="encoded" namespace="http://example.org/ts-tests" encodingStyle="http://www.w3.org/2003/05/soap-encoding"/>
+ </output>
+ </operation>
+
+ <!-- 3.4.11 echoBase64 rpc operation -->
+ <operation name="echoBase64">
+ <soap12:operation/>
+ <input>
+ <soap12:body use="encoded" namespace="http://example.org/ts-tests" encodingStyle="http://www.w3.org/2003/05/soap-encoding"/>
+ </input>
+ <output>
+ <soap12:body use="encoded" namespace="http://example.org/ts-tests" encodingStyle="http://www.w3.org/2003/05/soap-encoding"/>
+ </output>
+ </operation>
+
+ <!-- 3.4.12 echoBoolean rpc operation -->
+ <operation name="echoBoolean">
+ <soap12:operation/>
+ <input>
+ <soap12:body use="encoded" namespace="http://example.org/ts-tests" encodingStyle="http://www.w3.org/2003/05/soap-encoding"/>
+ </input>
+ <output>
+ <soap12:body use="encoded" namespace="http://example.org/ts-tests" encodingStyle="http://www.w3.org/2003/05/soap-encoding"/>
+ </output>
+ </operation>
+
+ <!-- 3.4.13 echoDate rpc operation -->
+ <operation name="echoDate">
+ <soap12:operation/>
+ <input>
+ <soap12:body use="encoded" namespace="http://example.org/ts-tests" encodingStyle="http://www.w3.org/2003/05/soap-encoding"/>
+ </input>
+ <output>
+ <soap12:body use="encoded" namespace="http://example.org/ts-tests" encodingStyle="http://www.w3.org/2003/05/soap-encoding"/>
+ </output>
+ </operation>
+
+ <!-- 3.4.14 echoDecimal rpc operation -->
+ <operation name="echoDecimal">
+ <soap12:operation/>
+ <input>
+ <soap12:body use="encoded" namespace="http://example.org/ts-tests" encodingStyle="http://www.w3.org/2003/05/soap-encoding"/>
+ </input>
+ <output>
+ <soap12:body use="encoded" namespace="http://example.org/ts-tests" encodingStyle="http://www.w3.org/2003/05/soap-encoding"/>
+ </output>
+ </operation>
+
+ <!-- 3.4.15 echoFloat rpc operation -->
+ <operation name="echoFloat">
+ <soap12:operation/>
+ <input>
+ <soap12:body use="encoded" namespace="http://example.org/ts-tests" encodingStyle="http://www.w3.org/2003/05/soap-encoding"/>
+ </input>
+ <output>
+ <soap12:body use="encoded" namespace="http://example.org/ts-tests" encodingStyle="http://www.w3.org/2003/05/soap-encoding"/>
+ </output>
+ </operation>
+
+ <!-- 3.4.16 echoString rpc operation -->
+ <operation name="echoString">
+ <soap12:operation/>
+ <input>
+ <soap12:body use="encoded" namespace="http://example.org/ts-tests" encodingStyle="http://www.w3.org/2003/05/soap-encoding"/>
+ <soap12:header use="encoded" message="tns:DataHolderRequest" part="DataHolder" namespace="http://example.org/ts-tests" encodingStyle="http://www.w3.org/2003/05/soap-encoding"/>
+ </input>
+ <output>
+ <soap12:body use="encoded" namespace="http://example.org/ts-tests" encodingStyle="http://www.w3.org/2003/05/soap-encoding"/>
+ <soap12:header use="encoded" message="tns:DataHolderResponse" part="DataHolder" namespace="http://example.org/ts-tests" encodingStyle="http://www.w3.org/2003/05/soap-encoding"/>
+ </output>
+ </operation>
+
+ <!-- 3.4.17 countItems rpc operation -->
+ <operation name="countItems">
+ <soap12:operation/>
+ <input>
+ <soap12:body use="encoded" namespace="http://example.org/ts-tests" encodingStyle="http://www.w3.org/2003/05/soap-encoding"/>
+ </input>
+ <output>
+ <soap12:body use="encoded" namespace="http://example.org/ts-tests" encodingStyle="http://www.w3.org/2003/05/soap-encoding"/>
+ </output>
+ </operation>
+
+ <!-- 3.4.18 isNil rpc operation -->
+ <operation name="isNil">
+ <soap12:operation/>
+ <input>
+ <soap12:body use="encoded" namespace="http://example.org/ts-tests" encodingStyle="http://www.w3.org/2003/05/soap-encoding"/>
+ </input>
+ <output>
+ <soap12:body use="encoded" namespace="http://example.org/ts-tests" encodingStyle="http://www.w3.org/2003/05/soap-encoding"/>
+ </output>
+ </operation>
+
+ </binding>
+
+
+ <service name="WhiteMesaSoap12TestSvc">
+ <port name="Soap12TestDocPort" binding="tns:Soap12TestDocBinding">
+ <soap12:address location="http://localhost/soap12/test-doc"/>
+ </port>
+ <port name="Soap12TestRpcPort" binding="tns:Soap12TestRpcBinding">
+ <soap12:address location="http://localhost/soap12/test-rpc"/>
+ </port>
+
+ </service>
+
+</definitions>