--- trunk/t/2_soap.t 2005/05/18 12:32:56 44 +++ trunk/t/2_soap.t 2006/12/19 15:04:05 93 @@ -3,18 +3,34 @@ use strict; use blib; -use Test::More tests => 22; +use Test::More tests => 44; BEGIN { use_ok('Nos'); use_ok('SOAP::Transport::HTTP'); use_ok('SOAP::Lite'); + use_ok('Cwd'); }; -ok(my $nos = new Nos::SOAP('dsn' => 'dbi:Pg:dbname=notices'), "new"); +use Data::Dump qw/dump/; -ok(my $daemon = new SOAP::Transport::HTTP::Daemon(LocalAddr => 'localhost')->dispatch_to('Nos::SOAP'), "SOAP daemon"); +my $debug = 0; +my $list_name = 'SOAP test'; + +$debug = 1 if (@ARGV); + +my $aliases = Cwd::abs_path($0); +$aliases =~ s#/[^/]*$#/#; +$aliases .= 'aliases'; + +ok($aliases, "using aliases file $aliases"); + +ok(my $nos = new Nos::SOAP( + 'dsn' => 'dbi:Pg:dbname=notices', + 'aliases' => $aliases, +), "new Nos::SOAP"); +ok(my $daemon = new SOAP::Transport::HTTP::Daemon(LocalAddr => 'localhost')->dispatch_to('Nos::SOAP'), "SOAP daemon"); # start server @@ -38,17 +54,21 @@ ->uri('http://localhost/Nos/SOAP/') ->proxy($daemon->url); -# NewList +$soap->on_debug(sub{print "## ", join("\n## ",@_), "\n";}) if ($debug); -ok(my $list_id = $soap->NewList({ - list => 'SOAP test', - email => 'soap-test@example.com', -})->result, "NewList named"); +# CreateList -ok(my $list_id2 = $soap->NewList( - 'SOAP test', +ok(my $list_id = $soap->CreateList({ + list => $list_name, + from => 'SOAP list', + email => 'soap-test@example.com', +})->result, "CreateList named"); + +ok(my $list_id2 = $soap->CreateList( + $list_name, + 'SOAP test list', 'soap-test@example.com', -)->result, "NewList positional"); +)->result, "CreateList positional"); cmp_ok($list_id, '==', $list_id2, "list_id $list_id"); @@ -56,20 +76,34 @@ # AddMemberToList ok(my $member_id = $soap->AddMemberToList({ - list => 'SOAP test', + list => $list_name, email => 'dpavlin@rot13.org', name => 'Dobrica Pavlinusic', + ext_id => 42, })->result, "AddMemberToList named"); ok(my $member_id2 = $soap->AddMemberToList( - 'SOAP test', + $list_name, 'dpavlin@rot13.org', 'Dobrica Pavlinusic', + 42, )->result, "AddMemberToList positional"); cmp_ok($member_id, '==', $member_id2, "member_id: $member_id"); +ok($member_id = $soap->AddMemberToList({ + list => $list_name, + email => 'nobody@example.com', +})->result, "AddMemberToList named"); + +ok($member_id2 = $soap->AddMemberToList( + $list_name, + 'nobody@example.com', +)->result, "AddMemberToList positional"); + +cmp_ok($member_id, '==', $member_id2, "member_id: $member_id"); + # AddMessageToList my $msg = 'To: member@example.com @@ -80,34 +114,106 @@ '; ok(my $message_id = $soap->AddMessageToList({ - list => 'SOAP test', + list => $list_name, message => $msg, })->result, "AddMessageToList named"); ok(my $message_id2 = $soap->AddMessageToList( - 'SOAP test', + $list_name, $msg, )->result, "AddMessageToList positional"); cmp_ok($message_id, '==', $message_id2, "message_id: $message_id"); +ok(my $message_id3 = $soap->AddMessageToList({ + list => $list_name, + message => "$msg\n and another one", +})->result, "AddMessageToList named"); + +cmp_ok($message_id, '!=', $message_id3, "new message_id: $message_id3"); # ListMembers -ok(my @arr = $soap->ListMembers({ - list => 'SOAP test', +ok(my $arr = $soap->ListMembers({ + list => $list_name, })->result, "ListMembers named"); -ok(my @arr2 = $soap->ListMembers( - 'SOAP test', +ok(my $arr2 = $soap->ListMembers( + $list_name, )->result, "ListMembers positional"); -eq_array(\@arr, \@arr2, "members lists same"); +eq_array($arr, $arr2, "members lists same"); + +cmp_ok($#{$arr}, '==', 1, "member count ok"); + +diag "arr = ", dump($arr) if ($debug); +cmp_ok($arr->[0]->{'name'}, 'eq', 'Dobrica Pavlinusic', "name"); +cmp_ok($arr->[0]->{'email'}, 'eq', 'dpavlin@rot13.org', "email"); + +cmp_ok($arr->[1]->{'email'}, 'eq', 'nobody@example.com', "email"); + +# test sending + +ok(my $sent = $soap->SendTest({ + list => $list_name, + driver => 'Test', + sleep => 0, +})->result, "send_queued_messages for $list_name"); -cmp_ok($#arr, '==', 0, "member count ok"); +cmp_ok($sent, '==', 4, 'messages sent'); -cmp_ok($arr[0]->{'full_name'}, '==', 'Dobrica Pavlinusic', "full_name"); -cmp_ok($arr[0]->{'email'}, '==', 'dpavlin@rot13.org', "email"); +# replay to messages + +ok(my $received = $soap->MessagesReceived( + list => $list_name +)->result, "MessagesReceived for $list_name"); + +diag "received = ", dump($received) if ($debug); +cmp_ok( $received, '==', 0, 'no messages' ); + +# DeleteMember + +ok($soap->DeleteMemberFromList({ + list => $list_name, + email => $arr->[0]->{'email'}, +})->result, "DeleteMemberFromList ".$arr->[0]->{'email'}); + + +ok($arr = $soap->ListMembers({ + list => $list_name, +})->result, "ListMembers named"); + +cmp_ok($#{$arr}, '==', 0, "member deleted"); + +# DropList + +ok($soap->DropList({ + list => $list_name, +})->result, "DropList named"); + +ok(my $has_members = $soap->ListMembers({ + list => $list_name, +})->result, "ListMembers for $list_name"); + +cmp_ok($#{$has_members}, '==', -1, "ok, no members"); + +ok($list_id = $soap->CreateList({ + list => $list_name, + from => 'SOAP list', + email => 'soap-test@example.com', +})->result, "CreateList $list_name (recreated)"); + +ok($soap->DropList( + $list_name, +)->result, "DropList positional"); + +ok($has_members = $soap->ListMembers({ + list => $list_name, +})->result, "ListMembers for $list_name"); + +cmp_ok($#{$has_members}, '==', -1, "ok, no members"); + +diag "I should add e-mail send test!"; # kill server @@ -118,3 +224,4 @@ ok(! kill(0, $pid), "child dead"); exit 1; +