| 313 | | #TODO Add more XML-RPC API |
| | 316 | { |
| | 317 | api => 'blogger.newPost', |
| | 318 | params => [ '', 1, $username, $password, 'This is a new post.', 0 ], |
| | 319 | result => sub { |
| | 320 | my ( $som ) = @_; |
| | 321 | my $result = $som->result; |
| | 322 | my $entry = MT::Entry->load($result); |
| | 323 | ok($entry); |
| | 324 | is($entry->text, 'This is a new post.'); |
| | 325 | # RELEASE unless NoPublishMeansDraft |
| | 326 | is($entry->status, MT::Entry::RELEASE()); |
| | 327 | }, |
| | 328 | }, |
| | 329 | { |
| | 330 | api => 'metaWeblog.newPost', |
| | 331 | params => [ 1, $username, $password, { |
| | 332 | title => 'MetaWeblog Post', |
| | 333 | description => 'This is a new post via metaWeblog API.' |
| | 334 | }, 1 ], |
| | 335 | result => sub { |
| | 336 | my ( $som ) = @_; |
| | 337 | my $result = $som->result; |
| | 338 | my $entry = MT::Entry->load($result); |
| | 339 | ok($entry); |
| | 340 | is($entry->title, 'MetaWeblog Post'); |
| | 341 | is($entry->text, 'This is a new post via metaWeblog API.'); |
| | 342 | # RELEASE unless NoPublishMeansDraft |
| | 343 | is($entry->status, MT::Entry::RELEASE()); |
| | 344 | }, |
| | 345 | }, |
| | 346 | { |
| | 347 | api => 'blogger.deletePost', |
| | 348 | params => [ '', 25, $username, $password, 0 ], |
| | 349 | pre => sub { |
| | 350 | my ( $e1 ) = MT::Entry->load(undef, |
| | 351 | { sort => 'created_on', direction => 'descend', limit => 1 } |
| | 352 | ); |
| | 353 | is( $e1->id, 25 ); |
| | 354 | return $e1; |
| | 355 | }, |
| | 356 | result => sub { |
| | 357 | my ( $som, $data ) = @_; |
| | 358 | my $result = $som->result; |
| | 359 | MT::Entry->driver->Disabled(1); |
| | 360 | my $entry = MT::Entry->load($data->id); |
| | 361 | is( $entry, undef ); |
| | 362 | MT::Entry->driver->Disabled(0); |
| | 363 | }, |
| | 364 | }, |
| | 365 | { |
| | 366 | api => 'blogger.deletePost', |
| | 367 | params => [ '', 24, $username, $password, 0 ], |
| | 368 | pre => sub { |
| | 369 | my ( $e2 ) = MT::Entry->load(undef, |
| | 370 | { sort => 'created_on', direction => 'descend', limit => 1 } |
| | 371 | ); |
| | 372 | is( $e2->id, 24 ); |
| | 373 | return $e2; |
| | 374 | }, |
| | 375 | result => sub { |
| | 376 | my ( $som, $data ) = @_; |
| | 377 | my $result = $som->result; |
| | 378 | MT::Entry->driver->Disabled(1); |
| | 379 | my $entry = MT::Entry->load($data->id); |
| | 380 | is( $entry, undef ); |
| | 381 | MT::Entry->driver->Disabled(0); |
| | 382 | }, |
| | 383 | }, |
| | 384 | { |
| | 385 | api => 'metaWeblog.newMediaObject', |
| | 386 | params => [ 1, $username, $password, { |
| | 387 | name => 'movable-type-logo.gif', |
| | 388 | type => 'image/gif', |
| | 389 | bits => sub { |
| | 390 | return MIME::Base64::decode_base64($logo); |
| | 391 | }, |
| | 392 | } ], |
| | 393 | result => sub { |
| | 394 | my ( $som ) = @_; |
| | 395 | my $result = $som->result; |
| | 396 | my $url = $result->{url}; |
| | 397 | is( $url, 'http://narnia.na/nana/movable-type-logo.gif' ); |
| | 398 | my $asset = MT::Asset->load(undef, { sort => 'created_on', direction => 'descend', limit => 1 }); |
| | 399 | ok($asset, 'asset loaded'); |
| | 400 | is( $asset->mime_type, 'image/gif' ); |
| | 401 | is( $asset->file_name, 'movable-type-logo.gif' ); |
| | 402 | local $/; |
| | 403 | open my $fh, '<', $asset->file_path; |
| | 404 | my $image = <$fh>; |
| | 405 | close $fh; |
| | 406 | require MIME::Base64; |
| | 407 | is( $logo, MIME::Base64::encode_base64($image, '') ); |
| | 408 | }, |
| | 409 | post => sub { |
| | 410 | my $asset = MT::Asset->load(undef, { sort => 'created_on', direction => 'descend', limit => 1 }); |
| | 411 | $asset->remove(); |
| | 412 | } |
| | 413 | }, |
| | 414 | #TODO Add these tests |
| | 415 | #'blogger.deletePost', |
| | 416 | #'metaWeblog.getPost', |
| | 417 | #'metaWeblog.newPost', |
| | 418 | #'metaWeblog.getCategories', |
| | 419 | #'metaWeblog.deletePost', |
| | 420 | #'metaWeblog.getUsersBlogs', |
| | 421 | #'wp.newPage', 'wp.getPages', 'wp.getPage', 'wp.editPage', 'wp.deletePage', |
| | 422 | #'mt.getTrackbackPings', 'mt.supportedTextFilters', |
| | 423 | #'mt.getRecentPostTitles', 'mt.publishPost', 'mt.getTagList' |