root/branches/boomer/t/28-xmlrpc.t @ 1100

Revision 1100, 7.0 kB (checked in by hachi, 2 years ago)

Merging release-20 to boomer branch: svn merge -r62323:63659 http://svn.sixapart.com/repos/eng/movabletype/branches/release-20 .

  • Property svn:mime-type set to text/plain
  • Property svn:keywords set to Author Date Id Revision
Line 
1# $Id$
2
3BEGIN { unshift @INC, 't/' }
4
5use lib 't/lib';
6use lib 'lib';
7use lib 'extlib';
8
9use Test;
10use XMLRPC::Lite;
11use MT;
12use MT::Blog;
13use MT::Author;
14use MT::Entry;
15use MT::Util qw( format_ts );
16use strict;
17
18BEGIN { plan tests => 85 }
19
20for (my $i = 0; $i < 85; $i++)
21{
22    skip(1);
23}
24exit(0);
25
26use vars qw( $DB_DIR $T_CFG $BASE );
27require 'test-common.pl';
28my $mt = MT->new( Config => $T_CFG ) or die MT->errstr;
29
30my $script = "$BASE/t/mt-test-rpc.cgi";
31
32open my $fh, ">$script" or die $!;
33print $fh <<SCRIPT;
34#!/usr/bin/perl -w
35use strict;
36
37use XMLRPC::Transport::HTTP;
38use File::Spec;
39
40use lib File::Spec->catdir('$BASE', 'lib');
41
42use MT::XMLRPCServer;
43
44\$MT::XMLRPCServer::MT_DIR = File::Spec->catfile('$BASE', 't');
45
46local \$SIG{__WARN__} = sub { };
47my \$server = XMLRPC::Transport::HTTP::CGI->new;
48\$server->dispatch_to('blogger', 'metaWeblog', 'mt');
49\$server->handle;
50SCRIPT
51close $fh;
52chmod 0755, $script;
53
54# TODO: get this script 'running'
55
56my $rpc = XMLRPC::Lite->new;
57$rpc->proxy("http://localhost/mt-test-rpc.cgi");
58
59my $som;
60
61my $blog = MT::Blog->load(1);
62
63$som = $rpc->call('blogger.getUsersBlogs', '', 'Chuck D', 'bass');
64ok($som && $som->result);
65ok(scalar @{ $som->result }, 1);
66ok($som->result->[0]{url}, $blog->site_url);
67ok($som->result->[0]{blogid}, $blog->id);
68ok($som->result->[0]{blogName}, $blog->name);
69
70my $author = MT::Author->load({ name => 'Chuck D' });
71
72$som = $rpc->call('blogger.getUserInfo', '', 'Chuck D', 'bass');
73ok($som && $som->result);
74ok($som->result->{userid}, $author->id);
75ok($som->result->{firstname}, (split /\s+/, $author->name)[0]);
76ok($som->result->{lastname}, (split /\s+/, $author->name)[1]);
77ok($som->result->{nickname}, $author->nickname || '');
78ok($som->result->{email}, $author->email || '');
79ok($som->result->{url}, $author->url || '');
80
81$som = $rpc->call('blogger.getUserInfo', '', 'Chuck D', 'wrong');
82ok(!$som->result);
83ok($som->fault);
84ok($som->faultstring, 'Invalid login');
85ok($som->faultcode, 1);
86
87$som = $rpc->call('blogger.getUsersBlogs', '', 'Chuck D', 'wrong');
88ok(!$som->result);
89ok($som->fault);
90ok($som->faultstring, 'Invalid login');
91ok($som->faultcode, 1);
92
93my $entry1 = MT::Entry->load(1);
94ok($entry1);
95
96$som = $rpc->call('blogger.getRecentPosts', '', $blog->id, 'Chuck D', 'bass', 2);
97ok($som && $som->result);
98ok(scalar @{ $som->result }, 1);
99ok($som->result->[0]{userid}, $author->id);
100ok($som->result->[0]{postid}, $entry1->id);
101ok($som->result->[0]{dateCreated}, format_ts("%Y%m%dT%H:%M:%S", $entry1->created_on));
102ok($som->result->[0]{content}, $entry1->text);
103
104$som = $rpc->call('metaWeblog.getRecentPosts', $blog->id, 'Chuck D', 'bass', 2);
105ok($som && $som->result);
106ok(scalar @{ $som->result }, 1);
107ok($som->result->[0]{userid}, $author->id);
108ok($som->result->[0]{postid}, $entry1->id);
109ok($som->result->[0]{dateCreated}, format_ts("%Y%m%dT%H:%M:%S", $entry1->created_on));
110ok($som->result->[0]{description}, $entry1->text);
111ok($som->result->[0]{title}, $entry1->title);
112ok($som->result->[0]{link}, $entry1->permalink);
113ok($som->result->[0]{permaLink}, $entry1->permalink);
114ok($som->result->[0]{mt_excerpt}, $entry1->excerpt);
115ok($som->result->[0]{mt_text_more}, $entry1->text_more);
116ok($som->result->[0]{mt_allow_comments}, $entry1->allow_comments);
117ok($som->result->[0]{mt_allow_pings}, $entry1->allow_pings || 0);
118ok($som->result->[0]{mt_convert_breaks}, $entry1->convert_breaks || '');
119ok($som->result->[0]{mt_keywords}, $entry1->keywords || '');
120
121$som = $rpc->call('blogger.editPost', '', $entry1->id, 'Chuck D', 'bass', 'Foo Bar', 0);
122ok($som->result, 1);
123$entry1 = MT::Entry->load($entry1->id);
124ok($entry1->text, 'Foo Bar');
125
126$som = $rpc->call('metaWeblog.editPost', $entry1->id, 'Chuck D', 'bass', {
127    title => 'Title',
128    description => 'Description',
129    mt_convert_breaks => 'wiki',
130    mt_allow_comments => 1,
131    mt_allow_pings => 1,
132    mt_excerpt => 'Excerpt',
133    mt_text_more => 'Extended Entry',
134    mt_keywords => 'Keywords',
135    mt_tb_ping_urls => [ 'http://127.0.0.1/' ],
136    dateCreated => '19770922T15:30:00',
137}, 0);
138ok($som->result, 1);
139$entry1 = MT::Entry->load($entry1->id);
140ok($entry1->title, 'Title');
141ok($entry1->text, 'Description');
142ok($entry1->convert_breaks, 'wiki');
143ok($entry1->allow_comments, 1);
144ok($entry1->allow_pings, 1);
145ok($entry1->excerpt, 'Excerpt');
146ok($entry1->text_more, 'Extended Entry');
147ok($entry1->keywords, 'Keywords');
148ok($entry1->to_ping_urls, 'http://127.0.0.1/');
149ok($entry1->to_ping_url_list->[0], 'http://127.0.0.1/');
150ok($entry1->created_on, '19770922153000');
151
152$som = $rpc->call('metaWeblog.editPost', $entry1->id, 'Chuck D', 'bass', {
153    mt_allow_comments => 2,
154}, 0);
155ok($som->result, 1);
156
157$som = $rpc->call('metaWeblog.editPost', $entry1->id, 'Chuck D', 'bass', {
158    mt_convert_breaks => '',
159    mt_text_more => '',
160    mt_excerpt => '',
161}, 0);
162ok($som->result, 1);
163$entry1 = MT::Entry->load($entry1->id);
164ok($entry1->convert_breaks, '');
165ok($entry1->text_more, '');
166ok($entry1->excerpt, '');
167
168my $cat1 = MT::Category->load(1);
169my $cat2 = MT::Category->load(2);
170
171$som = $rpc->call('mt.getCategoryList', $blog->id, 'Chuck D', 'bass');
172ok($som && $som->result);
173ok(scalar @{ $som->result }, 2);
174ok($som->result->[0]{categoryId}, $cat1->id);
175ok($som->result->[0]{categoryName}, $cat1->label);
176ok($som->result->[1]{categoryId}, $cat2->id);
177ok($som->result->[1]{categoryName}, $cat2->label);
178
179$som = $rpc->call('mt.getPostCategories', $entry1->id, 'Chuck D', 'bass');
180ok($som && $som->result);
181ok(!scalar @{ $som->result });
182
183$mt->{cfg}->NoPlacementCache(1);
184
185$entry1->{__categories} = undef;
186$entry1->{__category} = undef;
187$som = $rpc->call('mt.setPostCategories', $entry1->id, 'Chuck D', 'bass', [
188    { categoryId => $cat1->id },
189]);
190ok($som->result, 1);
191my $cats = $entry1->categories;
192ok(scalar @$cats, 1);
193ok($cats->[0]->label, $cat1->label);
194ok($entry1->category->label, $cat1->label);
195
196$entry1->{__categories} = undef;
197$entry1->{__category} = undef;
198$som = $rpc->call('mt.setPostCategories', $entry1->id, 'Chuck D', 'bass', [
199    { categoryId => $cat1->id },
200    { categoryId => $cat2->id },
201]);
202ok($som->result, 1);
203$cats = $entry1->categories;
204ok(scalar @$cats, 2);
205ok($entry1->category->label, $cat1->label);
206
207$entry1->{__categories} = undef;
208$entry1->{__category} = undef;
209$som = $rpc->call('mt.setPostCategories', $entry1->id, 'Chuck D', 'bass', [
210    { categoryId => $cat1->id, isPrimary => 1 },
211    { categoryId => $cat2->id, isPrimary => 0 },
212]);
213ok($som->result, 1);
214$cats = $entry1->categories;
215ok(scalar @$cats, 2);
216ok($entry1->category->label, $cat1->label);
217
218$entry1->{__categories} = undef;
219$entry1->{__category} = undef;
220$som = $rpc->call('mt.setPostCategories', $entry1->id, 'Chuck D', 'bass', [
221    { categoryId => $cat1->id, isPrimary => 0 },
222    { categoryId => $cat2->id, isPrimary => 1 },
223]);
224ok($som->result, 1);
225$cats = $entry1->categories;
226ok(scalar @$cats, 2);
227ok($entry1->category->label, $cat2->label);
228
229$entry1->{__categories} = undef;
230$entry1->{__category} = undef;
231$som = $rpc->call('mt.setPostCategories', $entry1->id, 'Chuck D', 'bass', [ ]);
232ok($som->result, 1);
233$cats = $entry1->categories;
234ok(!scalar @$cats);
235ok(!$entry1->category);
Note: See TracBrowser for help on using the browser.