# OK I give up! # This test is disabled because it won't run on windows due to a bug in # XML::Stream # It should fail on Net::XMPP 1.0.1 and earlier # and is the primary reason for bothering to release 1.0.2 use Test::More tests=>25; #use Data::Dump qw(pp); use XML::Stream qw(Tree); BEGIN{ use_ok( "Net::XMPP" ); } my $debug_level = 100; my $debug = new Net::XMPP::Debug(setdefault=>1, level=>$debug_level, file=>"stdout", header=>"test", ); require "t/mytestlib.pl"; my $message_node = new XML::Stream::Node("message"); ok( defined($message_node), "new()"); isa_ok( $message_node, "XML::Stream::Node" ); $message_node->put_attrib(to=>"jer\@jabber.org", from=>"reatmon\@jabber.org", type=>'groupchat', 'xml:lang'=>'en'); my $body_node = $message_node->add_child("body"); $body_node->add_cdata("body"); my $html_node = $message_node->add_child("html"); $html_node->put_attrib(xmlns=>"http://jabber.org/protocol/xhtml-im"); my $html_node_body = $html_node->add_child("body"); $html_node_body->put_attrib( 'xmlns' => "http://www.w3.org/1999/xhtml", ); my $html_node_span = $html_node_body->add_child("span"); $html_node_span->put_attrib( 'style' => "font-weight: normal; font-size: 10pt; color: #ff0000; font-style: normal; font-family: arial black", ); $html_node_span->add_cdata("body"); my $x0038_node = $message_node->add_child("x"); $x0038_node->put_attrib(xmlns=>"jisp:x:jep-0038", ); my $name_38_node = $x0038_node->add_child("name"); $name_38_node->add_cdata("shinyicons"); is( $message_node->GetXML(), "bodybodyshinyicons", "GetXML()" ); #diag "Message Node ". pp($message_node); my $message = new Net::XMPP::Message($message_node); ok( defined($message), "new()" ); isa_ok( $message, "Net::XMPP::Message" ); is( $message->GetTo(), "jer\@jabber.org", "GetTo"); is( $message->GetFrom(), "reatmon\@jabber.org", "GetFrom"); is( $message->GetBody(), "body", "GetBody"); my @xdelays = $message->GetChild("jabber:x:delay"); is( @xdelays, 0, "no delays"); my $timestamp = $message->GetTimeStamp(); ok($timestamp, "GetTimeStamp"); #diag "Message ". pp($message); my $message_node2 = new XML::Stream::Node("message"); ok( defined($message_node2), "new()"); isa_ok( $message_node2, "XML::Stream::Node" ); $message_node2->put_attrib(to=>"jer\@jabber.org", from=>"reatmon\@jabber.org", type=>'groupchat', 'xml:lang'=>'en'); my $body_node2 = $message_node2->add_child("body"); $body_node2->add_cdata("body"); my $html_node2 = $message_node2->add_child("html"); $html_node2->put_attrib(xmlns=>"http://jabber.org/protocol/xhtml-im"); my $html_node2_body = $html_node2->add_child("body"); $html_node2_body->put_attrib( 'xmlns' => "http://www.w3.org/1999/xhtml", ); my $html_node2_span = $html_node2_body->add_child("span"); $html_node2_span->put_attrib( 'style' => "font-weight: normal; font-size: 10pt; color: #ff0000; font-style: normal; font-family: arial black", ); $html_node2_span->add_cdata("body"); my $x0038_node2 = $message_node2->add_child("x"); $x0038_node2->put_attrib(xmlns=>"jisp:x:jep-0038", ); my $name_38_node2 = $x0038_node2->add_child("name"); $name_38_node2->add_cdata("shinyicons"); #diag "Message Node2 ". $message_node2->GetXML; my $client = Net::XMPP::Client->new( 'debuglevel' => $debug_level, 'debugfile' => 'stderr', ); my $stream = new XML::Stream(style=>"node", 'debug' =>"stdout", 'debuglevel'=>$debug_level, ); $stream->SetCallBacks(node=>\&noder); $stream->OpenFile("t/node1.xml"); # What if there was a custom namespace $client->AddNamespace( ns => "tcli:request", tag => "tcli", xpath => { 'Version' => { 'path' => 'version/text()' }, 'Yaml' => { 'path' => 'yaml/text()' }, 'Request' => { 'type' => 'master'}, } ); $stream->OpenFile("t/node1.xml"); # What if there was a custom namespace that's in the node $client->AddNamespace( ns => "jisp:x:jep-0038", tag => "x", xpath => { 'Name' => { 'path' => 'name/text()' }, } ); $stream->OpenFile("t/node1.xml"); #$stream->OpenFile('./t/node2.xml'); sub noder { my ($sid,$node) = @_; #diag "Sid1 ".$sid." ".pp($node); is_deeply($node,$message_node2, " Nodes the same"); my $message = $client->BuildObject("message",$node); ok( defined($message), "new()" ); isa_ok( $message, "Net::XMPP::Message" ); my $timestamp = $message->GetTimeStamp(); #diag "Message ". pp($message); ok($timestamp, "GetTimeStamp"); }