use strict; use warnings; use RT::Test tests => undef; use Test::Warn; use_ok "RT::URI::fsck_com_article"; my $uri = RT::URI::fsck_com_article->new( $RT::SystemUser ); ok $uri; isa_ok $uri, 'RT::URI::fsck_com_article'; isa_ok $uri, 'RT::URI::base'; isa_ok $uri, 'RT::Base'; is $uri->LocalURIPrefix, 'fsck.com-article://example.com'; my $class = RT::Class->new( $RT::SystemUser ); $class->Create( Name => 'URItest - '. $$ ); ok $class->id, 'created a class'; my $article = RT::Article->new( $RT::SystemUser ); my ($id, $msg) = $article->Create( Name => 'Testing URI parsing - '. $$, Summary => 'In which this should load', Class => $class->Id ); ok($id,$msg); $uri = RT::URI::fsck_com_article->new( $article->CurrentUser ); is $uri->URIForObject( $article ), 'fsck.com-article://example.com/article/' . $article->id, 'Got correct URIForObject'; my $article_id = $article->Id; ok ($uri->ParseURI("fsck.com-article://example.com/article/$article_id"), 'Parsed URI'); ok ($article->Delete(), 'Deleted article'); my $ret; warning_like { $ret = $uri->ParseURI("fsck.com-article://example.com/article/$article_id"); } qr/Unable to load article for id $article_id. It may have been deleted/, "Warned about missing article"; ok (!$ret, 'Returned false on missing article'); ok (!$uri->ParseURI("fsck.com-article://foo.com/article/$article_id"), 'ParseURI returned false with incorrect Organization'); done_testing();