1use lib "t/lib";
2use Test::More tests=>132;
3
4BEGIN{ use_ok( "Net::XMPP" ); }
5
6require "t/mytestlib.pl";
7
8my $debug = Net::XMPP::Debug->new(setdefault=>1,
9                                 level=>-1,
10                                 file=>"stdout",
11                                 header=>"test",
12                                );
13
14#------------------------------------------------------------------------------
15# presence
16#------------------------------------------------------------------------------
17my $presence = Net::XMPP::Presence->new();
18ok( defined($presence), "new()");
19isa_ok( $presence, "Net::XMPP::Presence");
20
21testScalar($presence, "Error", "error");
22testScalar($presence, "ErrorCode", "401");
23testJID($presence, "From", "user1", "server1", "resource1");
24testScalar($presence, "ID", "id");
25testScalar($presence, "Priority", "priority");
26testScalar($presence, "Show", "show");
27testScalar($presence, "Status", "status");
28testJID($presence, "To", "user2", "server2", "resource2");
29testScalar($presence, "Type", "Type");
30
31#------------------------------------------------------------------------------
32# X
33#------------------------------------------------------------------------------
34my $xoob = $presence->NewChild("__netxmpptest__:child:test");
35ok( defined( $xoob ), "NewX - __netxmpptest__:child:test" );
36isa_ok( $xoob, "Net::XMPP::Stanza" );
37
38#------------------------------------------------------------------------------
39# X
40#------------------------------------------------------------------------------
41my @x = $presence->GetChild();
42is( $x[0], $xoob, "Is the first x the oob?");
43
44#------------------------------------------------------------------------------
45# X
46#------------------------------------------------------------------------------
47my $xroster = $presence->NewChild("__netxmpptest__:child:test:two");
48ok( defined( $xoob ), "NewX - __netxmpptest__:child:test:two" );
49isa_ok( $xoob, "Net::XMPP::Stanza" );
50
51#------------------------------------------------------------------------------
52# X
53#------------------------------------------------------------------------------
54my @x2 = $presence->GetChild();
55is( $x2[0], $xoob, "Is the first child test?");
56is( $x2[1], $xroster, "Is the second child test two?");
57
58#------------------------------------------------------------------------------
59# X
60#------------------------------------------------------------------------------
61my @x3 = $presence->GetChild("__netxmpptest__:child:test");
62is( $#x3, 0, "filter on xmlns - only one child... right?");
63is( $x3[0], $xoob, "Is the first child the oob?");
64
65#------------------------------------------------------------------------------
66# X
67#------------------------------------------------------------------------------
68my @x4 = $presence->GetChild("__netxmpptest__:child:test:two");
69is( $#x4, 0, "filter on xmlns - only one x... right?");
70is( $x4[0], $xroster, "Is the first x the roster?");
71
72ok( $presence->DefinedChild(), "DefinedChild - yes");
73ok( $presence->DefinedChild("__netxmpptest__:child:test:two"), "DefinedChild - __netxmpptest__:child:test:two - yes");
74ok( $presence->DefinedChild("__netxmpptest__:child:test"), "DefinedChild - __netxmpptest__:child:test - yes");
75ok( !$presence->DefinedChild("foo:bar"), "DefinedChild - foo:bar - no");
76
77#------------------------------------------------------------------------------
78# presence
79#------------------------------------------------------------------------------
80my $presence2 = Net::XMPP::Presence->new();
81ok( defined($presence2), "new()");
82isa_ok( $presence2, "Net::XMPP::Presence");
83
84#------------------------------------------------------------------------------
85# defined
86#------------------------------------------------------------------------------
87is( $presence2->DefinedError(), '', "error not defined" );
88is( $presence2->DefinedErrorCode(), '', "errorcode not defined" );
89is( $presence2->DefinedFrom(), '', "from not defined" );
90is( $presence2->DefinedID(), '', "id not defined" );
91is( $presence2->DefinedPriority(), '', "priority not defined" );
92is( $presence2->DefinedShow(), '', "show not defined" );
93is( $presence2->DefinedStatus(), '', "status not defined" );
94is( $presence2->DefinedTo(), '', "to not defined" );
95is( $presence2->DefinedType(), '', "type not defined" );
96
97#------------------------------------------------------------------------------
98# set it
99#------------------------------------------------------------------------------
100$presence2->SetPresence(error=>"error",
101                        errorcode=>"401",
102                        from=>"user1\@server1/resource1",
103                        id=>"id",
104                        priority=>"priority",
105                        show=>"show",
106                        status=>"status",
107                        to=>"user2\@server2/resource2",
108                        type=>"type");
109
110testPostScalar($presence2, "Error", "error");
111testPostScalar($presence2, "ErrorCode", "401");
112testPostJID($presence2, "From", "user1", "server1", "resource1");
113testPostScalar($presence2, "ID", "id");
114testPostScalar($presence2, "Priority", "priority");
115testPostScalar($presence2, "Show", "show");
116testPostScalar($presence2, "Status", "status");
117testPostJID($presence2, "To", "user2", "server2", "resource2");
118testPostScalar($presence2, "Type", "type");
119
120is( $presence2->GetXML(), "<presence from='user1\@server1/resource1' id='id' to='user2\@server2/resource2' type='type'><error code='401'>error</error><priority>priority</priority><show>show</show><status>status</status></presence>", "Full presence");
121
122#------------------------------------------------------------------------------
123# Reply
124#------------------------------------------------------------------------------
125my $reply = $presence2->Reply();
126isa_ok($reply,"Net::XMPP::Presence");
127
128testPostJID($reply, "From", "user2", "server2", "resource2");
129testPostScalar($reply, "ID", "id");
130testPostJID($reply, "To", "user1", "server1", "resource1");
131
132is($reply->GetXML(),"<presence from='user2\@server2/resource2' id='id' to='user1\@server1/resource1'/>","Reply - GetXML()");
133
134
135#------------------------------------------------------------------------------
136# Remove it
137#------------------------------------------------------------------------------
138testRemove($presence2, "ErrorCode");
139testRemove($presence2, "Error");
140testRemove($presence2, "From");
141testRemove($presence2, "ID");
142testRemove($presence2, "Priority");
143testRemove($presence2, "Show");
144testRemove($presence2, "Status");
145testRemove($presence2, "To");
146testRemove($presence2, "Type");
147
148is( $presence2->GetXML(), "<presence/>", "Empty presence");
149
150