/[notice-sender]/trunk/t/2_soap.t
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Annotation of /trunk/t/2_soap.t

Parent Directory Parent Directory | Revision Log Revision Log


Revision 93 - (hide annotations)
Tue Dec 19 15:04:05 2006 UTC (17 years, 4 months ago) by dpavlin
File MIME type: application/x-troff
File size: 4792 byte(s)
added verbose to send_queued_messages so that SOAP call (SendTest, used for tests) doesn't
produce any output (and thus confuse SOAP CGI server)
1 dpavlin 39 #!/usr/bin/perl -w
2    
3     use strict;
4     use blib;
5    
6 dpavlin 93 use Test::More tests => 44;
7 dpavlin 39
8     BEGIN {
9     use_ok('Nos');
10     use_ok('SOAP::Transport::HTTP');
11     use_ok('SOAP::Lite');
12 dpavlin 67 use_ok('Cwd');
13 dpavlin 39 };
14    
15 dpavlin 90 use Data::Dump qw/dump/;
16    
17 dpavlin 68 my $debug = 0;
18 dpavlin 62 my $list_name = 'SOAP test';
19    
20 dpavlin 70 $debug = 1 if (@ARGV);
21    
22 dpavlin 67 my $aliases = Cwd::abs_path($0);
23     $aliases =~ s#/[^/]*$#/#;
24     $aliases .= 'aliases';
25    
26     ok($aliases, "using aliases file $aliases");
27    
28 dpavlin 90 ok(my $nos = new Nos::SOAP(
29 dpavlin 66 'dsn' => 'dbi:Pg:dbname=notices',
30 dpavlin 67 'aliases' => $aliases,
31 dpavlin 90 ), "new Nos::SOAP");
32 dpavlin 39
33     ok(my $daemon = new SOAP::Transport::HTTP::Daemon(LocalAddr => 'localhost')->dispatch_to('Nos::SOAP'), "SOAP daemon");
34    
35 dpavlin 41 # start server
36    
37 dpavlin 39 my $pid;
38 dpavlin 40 unless ($pid = fork) {
39 dpavlin 39
40 dpavlin 40 local $SIG{HUP} = sub {
41     diag "exiting SOAP server";
42     exit 0;
43     };
44    
45 dpavlin 39 diag "SOAP server at ", $daemon->url;
46     $daemon->handle;
47 dpavlin 40
48 dpavlin 39 }
49    
50     diag "child pid: $pid";
51    
52     my $soap = SOAP::Lite
53     ->readable(1)
54     ->uri('http://localhost/Nos/SOAP/')
55     ->proxy($daemon->url);
56    
57 dpavlin 70 $soap->on_debug(sub{print "## ", join("\n## ",@_), "\n";}) if ($debug);
58 dpavlin 68
59 dpavlin 72 # CreateList
60 dpavlin 41
61 dpavlin 72 ok(my $list_id = $soap->CreateList({
62 dpavlin 67 list => $list_name,
63     from => 'SOAP list',
64     email => 'soap-test@example.com',
65 dpavlin 72 })->result, "CreateList named");
66 dpavlin 39
67 dpavlin 72 ok(my $list_id2 = $soap->CreateList(
68 dpavlin 62 $list_name,
69     'SOAP test list',
70 dpavlin 41 'soap-test@example.com',
71 dpavlin 72 )->result, "CreateList positional");
72 dpavlin 39
73 dpavlin 41 cmp_ok($list_id, '==', $list_id2, "list_id $list_id");
74    
75    
76     # AddMemberToList
77    
78 dpavlin 39 ok(my $member_id = $soap->AddMemberToList({
79 dpavlin 62 list => $list_name,
80 dpavlin 39 email => 'dpavlin@rot13.org',
81     name => 'Dobrica Pavlinusic',
82 dpavlin 58 ext_id => 42,
83 dpavlin 41 })->result, "AddMemberToList named");
84 dpavlin 39
85 dpavlin 41 ok(my $member_id2 = $soap->AddMemberToList(
86 dpavlin 62 $list_name,
87 dpavlin 41 'dpavlin@rot13.org',
88     'Dobrica Pavlinusic',
89 dpavlin 58 42,
90 dpavlin 41 )->result, "AddMemberToList positional");
91 dpavlin 39
92 dpavlin 41 cmp_ok($member_id, '==', $member_id2, "member_id: $member_id");
93    
94    
95 dpavlin 62 ok($member_id = $soap->AddMemberToList({
96     list => $list_name,
97     email => 'nobody@example.com',
98     })->result, "AddMemberToList named");
99    
100     ok($member_id2 = $soap->AddMemberToList(
101     $list_name,
102     'nobody@example.com',
103     )->result, "AddMemberToList positional");
104    
105     cmp_ok($member_id, '==', $member_id2, "member_id: $member_id");
106    
107 dpavlin 41 # AddMessageToList
108    
109     my $msg = 'To: member@example.com
110 dpavlin 39 From: mylist@example.com
111     Subject: text
112    
113     This is a dummy test
114 dpavlin 41 ';
115 dpavlin 39
116 dpavlin 41 ok(my $message_id = $soap->AddMessageToList({
117 dpavlin 62 list => $list_name,
118 dpavlin 41 message => $msg,
119     })->result, "AddMessageToList named");
120 dpavlin 39
121 dpavlin 41 ok(my $message_id2 = $soap->AddMessageToList(
122 dpavlin 62 $list_name,
123 dpavlin 41 $msg,
124     )->result, "AddMessageToList positional");
125    
126     cmp_ok($message_id, '==', $message_id2, "message_id: $message_id");
127    
128 dpavlin 93 ok(my $message_id3 = $soap->AddMessageToList({
129     list => $list_name,
130     message => "$msg\n and another one",
131     })->result, "AddMessageToList named");
132 dpavlin 41
133 dpavlin 93 cmp_ok($message_id, '!=', $message_id3, "new message_id: $message_id3");
134    
135 dpavlin 43 # ListMembers
136    
137 dpavlin 62 ok(my $arr = $soap->ListMembers({
138     list => $list_name,
139 dpavlin 43 })->result, "ListMembers named");
140    
141 dpavlin 62 ok(my $arr2 = $soap->ListMembers(
142     $list_name,
143 dpavlin 43 )->result, "ListMembers positional");
144    
145 dpavlin 62 eq_array($arr, $arr2, "members lists same");
146 dpavlin 43
147 dpavlin 62 cmp_ok($#{$arr}, '==', 1, "member count ok");
148 dpavlin 44
149 dpavlin 90 diag "arr = ", dump($arr) if ($debug);
150     cmp_ok($arr->[0]->{'name'}, 'eq', 'Dobrica Pavlinusic', "name");
151     cmp_ok($arr->[0]->{'email'}, 'eq', 'dpavlin@rot13.org', "email");
152 dpavlin 44
153 dpavlin 90 cmp_ok($arr->[1]->{'email'}, 'eq', 'nobody@example.com', "email");
154 dpavlin 62
155 dpavlin 93 # test sending
156    
157     ok(my $sent = $soap->SendTest({
158     list => $list_name,
159     driver => 'Test',
160     sleep => 0,
161     })->result, "send_queued_messages for $list_name");
162    
163     cmp_ok($sent, '==', 4, 'messages sent');
164    
165     # replay to messages
166    
167     ok(my $received = $soap->MessagesReceived(
168     list => $list_name
169     )->result, "MessagesReceived for $list_name");
170    
171     diag "received = ", dump($received) if ($debug);
172     cmp_ok( $received, '==', 0, 'no messages' );
173    
174 dpavlin 62 # DeleteMember
175    
176     ok($soap->DeleteMemberFromList({
177     list => $list_name,
178     email => $arr->[0]->{'email'},
179     })->result, "DeleteMemberFromList ".$arr->[0]->{'email'});
180    
181    
182     ok($arr = $soap->ListMembers({
183     list => $list_name,
184     })->result, "ListMembers named");
185    
186     cmp_ok($#{$arr}, '==', 0, "member deleted");
187    
188 dpavlin 72 # DropList
189 dpavlin 63
190 dpavlin 72 ok($soap->DropList({
191 dpavlin 63 list => $list_name,
192 dpavlin 72 })->result, "DropList named");
193 dpavlin 63
194     ok(my $has_members = $soap->ListMembers({
195     list => $list_name,
196     })->result, "ListMembers for $list_name");
197    
198     cmp_ok($#{$has_members}, '==', -1, "ok, no members");
199    
200 dpavlin 72 ok($list_id = $soap->CreateList({
201 dpavlin 63 list => $list_name,
202     from => 'SOAP list',
203     email => 'soap-test@example.com',
204 dpavlin 72 })->result, "CreateList $list_name (recreated)");
205 dpavlin 63
206 dpavlin 72 ok($soap->DropList(
207 dpavlin 63 $list_name,
208 dpavlin 72 )->result, "DropList positional");
209 dpavlin 63
210     ok($has_members = $soap->ListMembers({
211     list => $list_name,
212     })->result, "ListMembers for $list_name");
213    
214     cmp_ok($#{$has_members}, '==', -1, "ok, no members");
215    
216 dpavlin 78 diag "I should add e-mail send test!";
217    
218 dpavlin 41 # kill server
219    
220 dpavlin 40 ok(kill('HUP' => $pid), "kill $pid");
221 dpavlin 39
222 dpavlin 40 ok(waitpid($pid,0), "waitpid");
223 dpavlin 39
224     ok(! kill(0, $pid), "child dead");
225    
226     exit 1;
227 dpavlin 67

Properties

Name Value
svn:executable *

  ViewVC Help
Powered by ViewVC 1.1.26