diff --git a/lib/rbvmomi/connection.rb b/lib/rbvmomi/connection.rb index f4313db2..378a3e65 100644 --- a/lib/rbvmomi/connection.rb +++ b/lib/rbvmomi/connection.rb @@ -132,10 +132,10 @@ def obj2xml xml, name, type, is_array, o, attrs={} end end when BasicTypes::ManagedObject - fail "expected #{expected.wsdl_name}, got #{o.class.wsdl_name} for field #{name.inspect}" if expected and not expected >= o.class + fail "expected #{expected.wsdl_name}, got #{o.class.wsdl_name} for field #{name.inspect}" if expected and not expected >= o.class and not expected == BasicTypes::AnyType xml.tag! name, o._ref, :type => o.class.wsdl_name when BasicTypes::DataObject - fail "expected #{expected.wsdl_name}, got #{o.class.wsdl_name} for field #{name.inspect}" if expected and not expected >= o.class + fail "expected #{expected.wsdl_name}, got #{o.class.wsdl_name} for field #{name.inspect}" if expected and not expected >= o.class and not expected == BasicTypes::AnyType xml.tag! name, attrs.merge("xsi:type" => o.class.wsdl_name) do o.class.full_props_desc.each do |desc| if o.props.member? desc['name'].to_sym diff --git a/test/test_serialization.rb b/test/test_serialization.rb index cd2f3540..c036e4ec 100644 --- a/test/test_serialization.rb +++ b/test/test_serialization.rb @@ -292,4 +292,20 @@ def test_time 2011-11-16T13:36:08-08:00 EOS end + + # TODO test all types + def test_any_type + obj = 1 + check <<-EOS, obj, 'xsd:anyType', false +1 + EOS + + obj = VIM::HostAccountSpec(:id => 'root', :password => 'foo') + check <<-EOS, obj, 'xsd:anyType', false + + root + foo + + EOS + end end