|
Revision 1956, 1.0 kB
(checked in by nahi, 1 year ago)
|
- soap4r's XML namespace handler did not handle xmlns="" correctly. it means 'no default namespace'. closes #421.
|
| Line | |
|---|
| 1 |
require 'test/unit' |
|---|
| 2 |
require 'soap/marshal' |
|---|
| 3 |
|
|---|
| 4 |
|
|---|
| 5 |
module XSD |
|---|
| 6 |
|
|---|
| 7 |
|
|---|
| 8 |
class TestNS < Test::Unit::TestCase |
|---|
| 9 |
def test_xmllang |
|---|
| 10 |
@file = File.join(File.dirname(File.expand_path(__FILE__)), 'xmllang.xml') |
|---|
| 11 |
obj = SOAP::Marshal.load(File.open(@file) { |f| f.read }) |
|---|
| 12 |
assert_equal("12345", obj.partyDataLine.gln) |
|---|
| 13 |
lang = obj.partyDataLine.__xmlattr[ |
|---|
| 14 |
XSD::QName.new(XSD::NS::Namespace, "lang")] |
|---|
| 15 |
assert_equal("EN", lang) |
|---|
| 16 |
end |
|---|
| 17 |
|
|---|
| 18 |
def test_no_default_namespace |
|---|
| 19 |
env = SOAP::Processor.unmarshal(NO_DEFAULT_NAMESPACE) |
|---|
| 20 |
array = env.body.root_node["array"] |
|---|
| 21 |
item = array["item"] |
|---|
| 22 |
assert_equal("urn:ns", array.elename.namespace) |
|---|
| 23 |
assert_equal(nil, item.elename.namespace) |
|---|
| 24 |
end |
|---|
| 25 |
|
|---|
| 26 |
NO_DEFAULT_NAMESPACE = <<__XML__ |
|---|
| 27 |
<?xml version="1.0" encoding="utf-8"?> |
|---|
| 28 |
<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"> |
|---|
| 29 |
<env:Body> |
|---|
| 30 |
<response xmlns="urn:ns"> |
|---|
| 31 |
<array> |
|---|
| 32 |
<item attr="1" xmlns=""/> |
|---|
| 33 |
</array> |
|---|
| 34 |
</response> |
|---|
| 35 |
</env:Body> |
|---|
| 36 |
</env:Envelope> |
|---|
| 37 |
__XML__ |
|---|
| 38 |
end |
|---|
| 39 |
|
|---|
| 40 |
|
|---|
| 41 |
end |
|---|