--- trunk/t/2_soap.t 2005/05/17 22:23:40 39 +++ trunk/t/2_soap.t 2005/05/18 12:32:56 44 @@ -3,7 +3,7 @@ use strict; use blib; -use Test::More tests => 11; +use Test::More tests => 22; BEGIN { use_ok('Nos'); @@ -15,13 +15,20 @@ ok(my $daemon = new SOAP::Transport::HTTP::Daemon(LocalAddr => 'localhost')->dispatch_to('Nos::SOAP'), "SOAP daemon"); -my $pid; -$SIG{CHLD} = 'IGNORE'; +# start server +my $pid; unless ($pid = fork) { + + local $SIG{HUP} = sub { + diag "exiting SOAP server"; + exit 0; + }; + diag "SOAP server at ", $daemon->url; $daemon->handle; + } diag "child pid: $pid"; @@ -31,40 +38,83 @@ ->uri('http://localhost/Nos/SOAP/') ->proxy($daemon->url); +# NewList + ok(my $list_id = $soap->NewList({ list => 'SOAP test', email => 'soap-test@example.com', -})->result, "NewList"); +})->result, "NewList named"); + +ok(my $list_id2 = $soap->NewList( + 'SOAP test', + 'soap-test@example.com', +)->result, "NewList positional"); -diag "list_id: $list_id"; +cmp_ok($list_id, '==', $list_id2, "list_id $list_id"); + + +# AddMemberToList ok(my $member_id = $soap->AddMemberToList({ list => 'SOAP test', email => 'dpavlin@rot13.org', name => 'Dobrica Pavlinusic', -})->result, "AddMemberToList"); +})->result, "AddMemberToList named"); -diag "member_id: $member_id"; +ok(my $member_id2 = $soap->AddMemberToList( + 'SOAP test', + 'dpavlin@rot13.org', + 'Dobrica Pavlinusic', +)->result, "AddMemberToList positional"); -ok(my $message_id = $soap->AddMessageToList({ - list => 'SOAP test', - message => 'To: member@example.com +cmp_ok($member_id, '==', $member_id2, "member_id: $member_id"); + + +# AddMessageToList + +my $msg = 'To: member@example.com From: mylist@example.com Subject: text This is a dummy test -', -})->result, "AddMessageToList"); +'; -diag "message_id: $message_id"; +ok(my $message_id = $soap->AddMessageToList({ + list => 'SOAP test', + message => $msg, +})->result, "AddMessageToList named"); -ok(kill('TERM' => $pid), "kill $pid"); +ok(my $message_id2 = $soap->AddMessageToList( + 'SOAP test', + $msg, +)->result, "AddMessageToList positional"); -sleep 1; -print `ps ax`; +cmp_ok($message_id, '==', $message_id2, "message_id: $message_id"); -ok(! kill(0, $pid), "child dead"); + +# ListMembers + +ok(my @arr = $soap->ListMembers({ + list => 'SOAP test', +})->result, "ListMembers named"); + +ok(my @arr2 = $soap->ListMembers( + 'SOAP test', +)->result, "ListMembers positional"); + +eq_array(\@arr, \@arr2, "members lists same"); + +cmp_ok($#arr, '==', 0, "member count ok"); + +cmp_ok($arr[0]->{'full_name'}, '==', 'Dobrica Pavlinusic', "full_name"); +cmp_ok($arr[0]->{'email'}, '==', 'dpavlin@rot13.org', "email"); + +# kill server + +ok(kill('HUP' => $pid), "kill $pid"); ok(waitpid($pid,0), "waitpid"); +ok(! kill(0, $pid), "child dead"); + exit 1;