PageRenderTime 27ms CodeModel.GetById 15ms RepoModel.GetById 0ms app.codeStats 0ms

/lib/gems/gems/libxml-ruby-2.0.6-x86-mingw32/test/tc_namespaces.rb

http://github.com/shouldly/shouldly
Ruby | 210 lines | 158 code | 44 blank | 8 comment | 0 complexity | 544f459290b6a5e3e0db3b28ff03b3bb MD5 | raw file
Possible License(s): GPL-2.0, BSD-3-Clause
  1. # encoding: UTF-8
  2. require './test_helper'
  3. require 'test/unit'
  4. class TestNamespaces < Test::Unit::TestCase
  5. def setup
  6. file = File.join(File.dirname(__FILE__), 'model/soap.xml')
  7. @doc = XML::Document.file(file)
  8. end
  9. def teardown
  10. @doc = nil
  11. end
  12. def test_namespace_node
  13. node = @doc.root
  14. ns = node.namespaces.namespace
  15. assert_equal('soap', ns.prefix)
  16. assert_equal('http://schemas.xmlsoap.org/soap/envelope/', ns.href)
  17. end
  18. def test_namespace_attr
  19. node = @doc.root
  20. attr = node.attributes.get_attribute('encodingStyle')
  21. assert_equal('soap', attr.ns.prefix)
  22. assert_equal('soap', attr.namespaces.namespace.prefix)
  23. end
  24. def test_set_namespace_node
  25. node = XML::Node.new('Envelope')
  26. assert_equal('<Envelope/>', node.to_s)
  27. ns = XML::Namespace.new(node, 'soap', 'http://schemas.xmlsoap.org/soap/envelope/')
  28. assert_equal("<Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\"/>", node.to_s)
  29. assert_nil(node.namespaces.namespace)
  30. # Now put the node in the soap namespace
  31. node.namespaces.namespace = ns
  32. assert_not_nil(node.namespaces.namespace)
  33. assert_equal("<soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\"/>", node.to_s)
  34. end
  35. def test_set_namespace_attribute
  36. # Create node
  37. node = XML::Node.new('Envelope')
  38. assert_equal('<Envelope/>', node.to_s)
  39. # Create attribute
  40. attr = XML::Attr.new(node, "encodingStyle", "http://www.w3.org/2001/12/soap-encoding")
  41. assert_equal('<Envelope encodingStyle="http://www.w3.org/2001/12/soap-encoding"/>',
  42. node.to_s)
  43. # Create namespace attribute
  44. ns = XML::Namespace.new(node, 'soap', 'http://schemas.xmlsoap.org/soap/envelope/')
  45. assert_equal('<Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" encodingStyle="http://www.w3.org/2001/12/soap-encoding"/>',
  46. node.to_s)
  47. assert_nil(node.namespaces.namespace)
  48. # Now put the node in the soap namespace
  49. node.namespaces.namespace = ns
  50. assert_not_nil(node.namespaces.namespace)
  51. assert_equal('<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" encodingStyle="http://www.w3.org/2001/12/soap-encoding"/>',
  52. node.to_s)
  53. # Now put the attribute in the soap namespace
  54. attr.namespaces.namespace = ns
  55. assert_not_nil(node.namespaces.namespace)
  56. assert_equal('<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding"/>',
  57. node.to_s)
  58. end
  59. def test_define_namespace
  60. node = XML::Node.new('Envelope')
  61. assert_equal('<Envelope/>', node.to_s)
  62. XML::Namespace.new(node, 'soap', 'http://schemas.xmlsoap.org/soap/envelope/')
  63. assert_equal("<Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\"/>", node.to_s)
  64. assert_nil(node.namespaces.namespace)
  65. end
  66. def test_define_default_namespace
  67. node = XML::Node.new('Envelope')
  68. assert_equal('<Envelope/>', node.to_s)
  69. XML::Namespace.new(node, nil, 'http://schemas.xmlsoap.org/soap/envelope/')
  70. assert_equal("<Envelope xmlns=\"http://schemas.xmlsoap.org/soap/envelope/\"/>", node.to_s)
  71. # This seems wrong, but appears to be the way libxml works
  72. assert_nil(node.namespaces.namespace)
  73. end
  74. def test_namespaces
  75. node = @doc.find_first('//ns1:IdAndName',
  76. :ns1 => 'http://domain.somewhere.com')
  77. namespaces = node.namespaces.sort
  78. assert_equal(5, namespaces.length)
  79. namespace = namespaces[0]
  80. assert_instance_of(XML::Namespace, namespace)
  81. assert_equal(nil, namespace.prefix)
  82. assert_equal('http://services.somewhere.com', namespace.href)
  83. namespace = namespaces[1]
  84. assert_instance_of(XML::Namespace, namespace)
  85. assert_equal('ns1', namespace.prefix)
  86. assert_equal('http://domain.somewhere.com', namespace.href)
  87. namespace = namespaces[2]
  88. assert_instance_of(XML::Namespace, namespace)
  89. assert_equal('soap', namespace.prefix)
  90. assert_equal('http://schemas.xmlsoap.org/soap/envelope/', namespace.href)
  91. namespace = namespaces[3]
  92. assert_instance_of(XML::Namespace, namespace)
  93. assert_equal('xsd', namespace.prefix)
  94. assert_equal('http://www.w3.org/2001/XMLSchema', namespace.href)
  95. namespace = namespaces[4]
  96. assert_instance_of(XML::Namespace, namespace)
  97. assert_equal('xsi', namespace.prefix)
  98. assert_equal('http://www.w3.org/2001/XMLSchema-instance', namespace.href)
  99. end
  100. def test_namespaces
  101. node = @doc.find_first('//ns1:IdAndName',
  102. :ns1 => 'http://domain.somewhere.com')
  103. node.namespaces.each do |namespace|
  104. assert_instance_of(XML::Namespace, namespace)
  105. end
  106. end
  107. def test_namespace_definitions
  108. ns_defs = @doc.root.namespaces.definitions
  109. assert_equal(3, ns_defs.size)
  110. namespace = ns_defs[0]
  111. assert_instance_of(XML::Namespace, namespace)
  112. assert_equal('soap', namespace.prefix)
  113. assert_equal('http://schemas.xmlsoap.org/soap/envelope/', namespace.href)
  114. namespace = ns_defs[1]
  115. assert_instance_of(XML::Namespace, namespace)
  116. assert_equal('xsd', namespace.prefix)
  117. assert_equal('http://www.w3.org/2001/XMLSchema', namespace.href)
  118. namespace = ns_defs[2]
  119. assert_instance_of(XML::Namespace, namespace)
  120. assert_equal('xsi', namespace.prefix)
  121. assert_equal('http://www.w3.org/2001/XMLSchema-instance', namespace.href)
  122. node = @doc.root.find_first('//ns:getManufacturerNamesResponse',
  123. :ns => 'http://services.somewhere.com')
  124. ns_defs = node.namespaces.definitions
  125. assert_equal(1, ns_defs.size)
  126. namespace = ns_defs[0]
  127. assert_instance_of(XML::Namespace, namespace)
  128. assert_equal(nil, namespace.prefix)
  129. assert_equal('http://services.somewhere.com', namespace.href)
  130. end
  131. def test_find_by_prefix
  132. namespace = @doc.root.namespaces.find_by_prefix('soap')
  133. assert_instance_of(XML::Namespace, namespace)
  134. assert_equal('soap', namespace.prefix)
  135. assert_equal('http://schemas.xmlsoap.org/soap/envelope/', namespace.href)
  136. end
  137. def test_find_default_ns
  138. namespace = @doc.root.namespaces.find_by_prefix(nil)
  139. assert_nil(namespace)
  140. node = @doc.find_first('//ns1:getManufacturerNamesResponse',
  141. :ns1 => 'http://services.somewhere.com')
  142. namespace = node.namespaces.find_by_prefix(nil)
  143. assert_instance_of(XML::Namespace, namespace)
  144. assert_equal(nil, namespace.prefix)
  145. assert_equal('http://services.somewhere.com', namespace.href)
  146. end
  147. def test_find_ns_by_href
  148. node = @doc.find_first('//ns1:getManufacturerNamesResponse',
  149. :ns1 => 'http://services.somewhere.com')
  150. namespace = node.namespaces.find_by_href('http://schemas.xmlsoap.org/soap/envelope/')
  151. assert_instance_of(XML::Namespace, namespace)
  152. assert_equal('soap', namespace.prefix)
  153. assert_equal('http://schemas.xmlsoap.org/soap/envelope/', namespace.href)
  154. end
  155. def test_default_namespace
  156. doc = XML::Document.string('<Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/"/>')
  157. ns = doc.root.namespaces.default
  158. assert_equal(ns.href, 'http://schemas.xmlsoap.org/soap/envelope/')
  159. end
  160. def test_default_prefix
  161. doc = XML::Document.string('<Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/"/>')
  162. doc.root.namespaces.default_prefix = 'soap'
  163. node = doc.root.find_first('/soap:Envelope')
  164. assert_not_nil(node)
  165. end
  166. end