diff options
Diffstat (limited to 'rt/t/web/attachments.t')
-rw-r--r-- | rt/t/web/attachments.t | 586 |
1 files changed, 499 insertions, 87 deletions
diff --git a/rt/t/web/attachments.t b/rt/t/web/attachments.t index b518ec1..0ae407d 100644 --- a/rt/t/web/attachments.t +++ b/rt/t/web/attachments.t @@ -1,94 +1,506 @@ use strict; use warnings; -use RT::Test tests => 33; +use RT::Test tests => 159; -use constant LogoFile => $RT::MasonComponentRoot .'/NoAuth/images/bpslogo.png'; -use constant FaviconFile => $RT::MasonComponentRoot .'/NoAuth/images/favicon.png'; -use constant TextFile => $RT::MasonComponentRoot .'/NoAuth/css/print.css'; +use constant LogoFile => $RT::StaticPath .'/images/bpslogo.png'; +use constant FaviconFile => $RT::StaticPath .'/images/favicon.png'; +use constant TextFile => $RT::StaticPath .'/css/mobile.css'; -my ($baseurl, $m) = RT::Test->started_ok; +my ($url, $m) = RT::Test->started_ok; ok $m->login, 'logged in'; -my $queue = RT::Queue->new(RT->Nobody); -my $qid = $queue->Load('General'); -ok( $qid, "Loaded General queue" ); - -$m->form_name('CreateTicketInQueue'); -$m->field('Queue', $qid); -$m->submit; -is($m->status, 200, "request successful"); -$m->content_contains("Create a new ticket", 'ticket create page'); - -$m->form_name('TicketCreate'); -$m->field('Subject', 'Attachments test'); -$m->field('Attach', LogoFile); -$m->field('Content', 'Some content'); -$m->submit; -is($m->status, 200, "request successful"); - -$m->content_contains('Attachments test', 'we have subject on the page'); -$m->content_contains('Some content', 'and content'); -$m->content_contains('Download bpslogo.png', 'page has file name'); - -open LOGO, "<", LogoFile or die "Can't open logo file: $!"; -binmode LOGO; -my $logo_contents = do {local $/; <LOGO>}; -close LOGO; -$m->follow_link_ok({text => "Download bpslogo.png"}); -is($m->content_type, "image/png"); -is($m->content, $logo_contents, "Binary content matches"); - -$m->back; -$m->follow_link_ok({text => 'Reply'}, "reply to the ticket"); -$m->form_name('TicketUpdate'); -$m->field('Attach', TextFile); -$m->click('AddMoreAttach'); -is($m->status, 200, "request successful"); - -$m->form_name('TicketUpdate'); -$m->field('Attach', FaviconFile); -$m->field('UpdateContent', 'Message'); -$m->click('SubmitTicket'); -is($m->status, 200, "request successful"); - -$m->content_contains('Download bpslogo.png', 'page has file name'); -$m->content_contains('Download favicon.png', 'page has file name'); -$m->content_contains('Download print.css', 'page has file name'); - -$m->follow_link_ok( { text => 'Download bpslogo.png' } ); -is( $m->response->header('Content-Type'), 'image/png', 'Content-Type of png lacks charset' ); - -$m->back; - -$m->follow_link_ok( { text => 'Download print.css' } ); -is( $m->response->header('Content-Type'), - 'text/css;charset=UTF-8', 'Content-Type of text has charset' ); - -diag "test mobile ui"; -$m->get_ok( $baseurl . '/m/ticket/create?Queue=' . $qid ); - -$m->form_name('TicketCreate'); -$m->field('Subject', 'Attachments test'); -$m->field('Attach', LogoFile); -$m->field('Content', 'Some content'); -$m->submit; -is($m->status, 200, "request successful"); - -$m->content_contains('Attachments test', 'we have subject on the page'); -$m->content_contains('bpslogo.png', 'page has file name'); - -$m->follow_link_ok({text => 'Reply'}, "reply to the ticket"); -$m->form_name('TicketUpdate'); -$m->field('Attach', LogoFile); -$m->click('AddMoreAttach'); -is($m->status, 200, "request successful"); - -$m->form_name('TicketUpdate'); -$m->field('Attach', FaviconFile); -$m->field('UpdateContent', 'Message'); -$m->click('SubmitTicket'); -is($m->status, 200, "request successful"); - -$m->content_contains('bpslogo.png', 'page has file name'); -$m->content_contains('favicon.png', 'page has file name'); +my $queue = RT::Test->load_or_create_queue( Name => 'General' ); +ok( $queue && $queue->id, "Loaded General queue" ); + +diag "create a ticket in full interface"; +diag "w/o attachments"; +{ + $m->goto_create_ticket( $queue ); + is($m->status, 200, "request successful"); + + $m->form_name('TicketCreate'); + $m->content_contains("Create a new ticket", 'ticket create page'); + $m->submit; + is($m->status, 200, "request successful"); +} + +diag "with one attachment"; +{ + $m->goto_create_ticket( $queue ); + + $m->form_name('TicketCreate'); + $m->field('Subject', 'Attachments test'); + $m->field('Attach', LogoFile); + $m->field('Content', 'Some content'); + + $m->submit; + is($m->status, 200, "request successful"); + + $m->content_contains('Attachments test', 'we have subject on the page'); + $m->content_contains('Some content', 'and content'); + $m->content_contains('Download bpslogo.png', 'page has file name'); +} + +diag "with two attachments"; +{ + $m->goto_create_ticket( $queue ); + + $m->form_name('TicketCreate'); + $m->field('Attach', LogoFile); + $m->click('AddMoreAttach'); + is($m->status, 200, "request successful"); + + $m->form_name('TicketCreate'); + $m->field('Attach', FaviconFile); + $m->field('Subject', 'Attachments test'); + $m->field('Content', 'Some content'); + + $m->submit; + is($m->status, 200, "request successful"); + + $m->content_contains('Attachments test', 'we have subject on the page'); + $m->content_contains('Some content', 'and content'); + $m->content_contains('Download bpslogo.png', 'page has file name'); + $m->content_contains('Download favicon.png', 'page has file name'); +} + +diag "with one attachment, but delete one along the way"; +{ + $m->goto_create_ticket( $queue ); + + $m->form_name('TicketCreate'); + $m->field('Attach', LogoFile); + $m->click('AddMoreAttach'); + is($m->status, 200, "request successful"); + + $m->form_name('TicketCreate'); + $m->field('Attach', FaviconFile); + $m->tick( 'DeleteAttach', LogoFile ); + $m->field('Subject', 'Attachments test'); + $m->field('Content', 'Some content'); + + $m->submit; + is($m->status, 200, "request successful"); + + $m->content_contains('Attachments test', 'we have subject on the page'); + $m->content_contains('Some content', 'and content'); + $m->content_lacks('Download bpslogo.png', 'page has file name'); + $m->content_contains('Download favicon.png', 'page has file name'); +} + +diag "with one attachment, but delete one along the way"; +{ + $m->goto_create_ticket( $queue ); + + $m->form_name('TicketCreate'); + $m->field('Attach', LogoFile); + $m->click('AddMoreAttach'); + is($m->status, 200, "request successful"); + + $m->form_name('TicketCreate'); + $m->tick( 'DeleteAttach', LogoFile ); + $m->click('AddMoreAttach'); + is($m->status, 200, "request successful"); + + $m->form_name('TicketCreate'); + $m->field('Attach', FaviconFile); + $m->click('AddMoreAttach'); + is($m->status, 200, "request successful"); + + $m->form_name('TicketCreate'); + $m->field('Subject', 'Attachments test'); + $m->field('Content', 'Some content'); + + $m->submit; + is($m->status, 200, "request successful"); + + $m->content_contains('Attachments test', 'we have subject on the page'); + $m->content_contains('Some content', 'and content'); + $m->content_lacks('Download bpslogo.png', 'page has file name'); + $m->content_contains('Download favicon.png', 'page has file name'); +} + +diag "reply to a ticket in full interface"; +diag "with one attachment"; +{ + my $ticket = RT::Test->create_ticket( + Queue => $queue, + Subject => 'Attachments test', + Content => 'Some content', + ); + + $m->goto_ticket( $ticket->id ); + $m->follow_link_ok({text => 'Reply'}, "reply to the ticket"); + $m->form_name('TicketUpdate'); + $m->field('Attach', LogoFile); + $m->field('UpdateContent', 'Message'); + $m->click('SubmitTicket'); + is($m->status, 200, "request successful"); + + $m->content_contains('Download bpslogo.png', 'page has file name'); +} + +diag "with two attachments"; +{ + my $ticket = RT::Test->create_ticket( + Queue => $queue, + Subject => 'Attachments test', + Content => 'Some content', + ); + + $m->goto_ticket( $ticket->id ); + $m->follow_link_ok({text => 'Reply'}, "reply to the ticket"); + $m->form_name('TicketUpdate'); + $m->field('Attach', LogoFile); + $m->click('AddMoreAttach'); + is($m->status, 200, "request successful"); + + $m->form_name('TicketUpdate'); + $m->field('Attach', FaviconFile); + $m->field('UpdateContent', 'Message'); + $m->click('SubmitTicket'); + is($m->status, 200, "request successful"); + + $m->content_contains('Download bpslogo.png', 'page has file name'); + $m->content_contains('Download favicon.png', 'page has file name'); +} + +diag "with one attachment, delete one along the way"; +{ + my $ticket = RT::Test->create_ticket( + Queue => $queue, + Subject => 'Attachments test', + Content => 'Some content', + ); + + $m->goto_ticket( $ticket->id ); + $m->follow_link_ok({text => 'Reply'}, "reply to the ticket"); + $m->form_name('TicketUpdate'); + $m->field('Attach', LogoFile); + $m->click('AddMoreAttach'); + is($m->status, 200, "request successful"); + + $m->form_name('TicketUpdate'); + $m->tick('DeleteAttach', LogoFile); + $m->field('Attach', FaviconFile); + $m->field('UpdateContent', 'Message'); + $m->click('SubmitTicket'); + is($m->status, 200, "request successful"); + + $m->content_lacks('Download bpslogo.png', 'page has file name'); + $m->content_contains('Download favicon.png', 'page has file name'); +} + +diag "jumbo interface"; +diag "with one attachment"; +{ + my $ticket = RT::Test->create_ticket( + Queue => $queue, + Subject => 'Attachments test', + Content => 'Some content', + ); + + $m->goto_ticket( $ticket->id ); + $m->follow_link_ok({text => 'Jumbo'}, "jumbo the ticket"); + $m->form_name('TicketModifyAll'); + $m->field('Attach', LogoFile); + $m->field('UpdateContent', 'Message'); + $m->click('SubmitTicket'); + is($m->status, 200, "request successful"); + + $m->goto_ticket( $ticket->id ); + $m->content_contains('Download bpslogo.png', 'page has file name'); +} + +diag "with two attachments"; +{ + my $ticket = RT::Test->create_ticket( + Queue => $queue, + Subject => 'Attachments test', + Content => 'Some content', + ); + + $m->goto_ticket( $ticket->id ); + $m->follow_link_ok({text => 'Jumbo'}, "jumbo the ticket"); + $m->form_name('TicketModifyAll'); + $m->field('Attach', LogoFile); + $m->click('AddMoreAttach'); + is($m->status, 200, "request successful"); + + $m->form_name('TicketModifyAll'); + $m->field('Attach', FaviconFile); + $m->field('UpdateContent', 'Message'); + $m->click('SubmitTicket'); + is($m->status, 200, "request successful"); + + $m->goto_ticket( $ticket->id ); + $m->content_contains('Download bpslogo.png', 'page has file name'); + $m->content_contains('Download favicon.png', 'page has file name'); +} + +diag "with one attachment, delete one along the way"; +{ + my $ticket = RT::Test->create_ticket( + Queue => $queue, + Subject => 'Attachments test', + Content => 'Some content', + ); + + $m->goto_ticket( $ticket->id ); + $m->follow_link_ok({text => 'Jumbo'}, "jumbo the ticket"); + $m->form_name('TicketModifyAll'); + $m->field('Attach', LogoFile); + $m->click('AddMoreAttach'); + is($m->status, 200, "request successful"); + + $m->form_name('TicketModifyAll'); + $m->tick('DeleteAttach', LogoFile); + $m->field('Attach', FaviconFile); + $m->field('UpdateContent', 'Message'); + $m->click('SubmitTicket'); + is($m->status, 200, "request successful"); + + $m->goto_ticket( $ticket->id ); + $m->content_lacks('Download bpslogo.png', 'page has file name'); + $m->content_contains('Download favicon.png', 'page has file name'); +} + +diag "bulk update"; +diag "one attachment"; +{ + my @tickets = RT::Test->create_tickets( + { + Queue => $queue, + Subject => 'Attachments test', + Content => 'Some content', + }, + {}, + {}, + ); + my $query = join ' OR ', map "id=$_", map $_->id, @tickets; + $query =~ s/ /%20/g; + $m->get_ok( $url . "/Search/Bulk.html?Query=$query&Rows=10" ); + + $m->form_name('BulkUpdate'); + $m->field('Attach', FaviconFile); + $m->field('UpdateContent', 'Message'); + $m->submit; + is($m->status, 200, "request successful"); + + foreach my $ticket ( @tickets ) { + $m->goto_ticket( $ticket->id ); + $m->content_lacks('Download bpslogo.png', 'page has file name'); + $m->content_contains('Download favicon.png', 'page has file name'); + } +} + +diag "two attachments"; +{ + my @tickets = RT::Test->create_tickets( + { + Queue => $queue, + Subject => 'Attachments test', + Content => 'Some content', + }, + {}, + {}, + ); + my $query = join ' OR ', map "id=$_", map $_->id, @tickets; + $query =~ s/ /%20/g; + $m->get_ok( $url . "/Search/Bulk.html?Query=$query&Rows=10" ); + + $m->form_name('BulkUpdate'); + $m->field('Attach', LogoFile); + $m->click('AddMoreAttach'); + is($m->status, 200, "request successful"); + + $m->form_name('BulkUpdate'); + $m->field('Attach', FaviconFile); + $m->field('UpdateContent', 'Message'); + $m->submit; + is($m->status, 200, "request successful"); + + foreach my $ticket ( @tickets ) { + $m->goto_ticket( $ticket->id ); + $m->content_contains('Download bpslogo.png', 'page has file name'); + $m->content_contains('Download favicon.png', 'page has file name'); + } +} + +diag "one attachment, delete one along the way"; +{ + my @tickets = RT::Test->create_tickets( + { + Queue => $queue, + Subject => 'Attachments test', + Content => 'Some content', + }, + {}, + {}, + ); + my $query = join ' OR ', map "id=$_", map $_->id, @tickets; + $query =~ s/ /%20/g; + $m->get_ok( $url . "/Search/Bulk.html?Query=$query&Rows=10" ); + + $m->form_name('BulkUpdate'); + $m->field('Attach', LogoFile); + $m->click('AddMoreAttach'); + is($m->status, 200, "request successful"); + + $m->form_name('BulkUpdate'); + $m->tick('DeleteAttach', LogoFile); + $m->field('Attach', FaviconFile); + $m->field('UpdateContent', 'Message'); + $m->submit; + is($m->status, 200, "request successful"); + + foreach my $ticket ( @tickets ) { + $m->goto_ticket( $ticket->id ); + $m->content_lacks('Download bpslogo.png', 'page has file name'); + $m->content_contains('Download favicon.png', 'page has file name'); + } +} + +diag "self service"; +diag "create with attachment"; +{ + $m->get_ok( $url . "/SelfService/Create.html?Queue=". $queue->id ); + + $m->form_name('TicketCreate'); + $m->field('Attach', FaviconFile); + $m->field('Subject', 'Subject'); + $m->field('Content', 'Message'); + ok($m->current_form->find_input('AddMoreAttach'), "more than one attachment"); + $m->submit; + is($m->status, 200, "request successful"); + + $m->content_contains('Download favicon.png', 'page has file name'); +} + +diag "update with attachment"; +{ + my $ticket = RT::Test->create_ticket( + Queue => $queue, + Subject => 'Attachments test', + Content => 'Some content', + ); + + $m->get_ok( $url . "/SelfService/Update.html?id=". $ticket->id ); + $m->form_name('TicketUpdate'); + $m->field('Attach', FaviconFile); + $m->field('UpdateContent', 'Message'); + ok($m->current_form->find_input('AddMoreAttach'), "more than one attachment"); + $m->click('SubmitTicket'); + is($m->status, 200, "request successful"); + + $m->content_contains('Download favicon.png', 'page has file name'); +} + +diag "mobile ui"; + +diag "simple create + reply"; +{ + $m->get_ok( $url . '/m/ticket/create?Queue=' . $queue->id ); + + $m->form_name('TicketCreate'); + $m->field('Subject', 'Attachments test'); + $m->field('Attach', LogoFile); + $m->field('Content', 'Some content'); + $m->submit; + is($m->status, 200, "request successful"); + + $m->content_contains('Attachments test', 'we have subject on the page'); + $m->content_contains('bpslogo.png', 'page has file name'); + + $m->follow_link_ok({text => 'Reply'}, "reply to the ticket"); + $m->form_name('TicketUpdate'); + $m->field('Attach', LogoFile); + $m->click('AddMoreAttach'); + is($m->status, 200, "request successful"); + + $m->form_name('TicketUpdate'); + $m->field('Attach', FaviconFile); + $m->field('UpdateContent', 'Message'); + $m->click('SubmitTicket'); + is($m->status, 200, "request successful"); + + $m->content_contains('bpslogo.png', 'page has file name'); + $m->content_contains('favicon.png', 'page has file name'); +} + + +diag "check content type and content"; +{ + $m->goto_create_ticket( $queue ); + + $m->form_name('TicketCreate'); + $m->field('Attach', LogoFile); + $m->click('AddMoreAttach'); + is($m->status, 200, "request successful"); + + $m->form_name('TicketCreate'); + $m->field('Attach', TextFile); + $m->field('Subject', 'Attachments test'); + $m->field('Content', 'Some content'); + + $m->submit; + is($m->status, 200, "request successful"); + + $m->content_contains('Attachments test', 'we have subject on the page'); + $m->content_contains('Some content', 'and content'); + $m->content_contains('Download bpslogo.png', 'page has file name'); + $m->content_contains('Download mobile.css', 'page has file name'); + + $m->follow_link_ok({text => "Download bpslogo.png"}); + is($m->response->header('Content-Type'), 'image/png', 'Content-Type of png lacks charset' ); + is($m->content_type, "image/png"); + is($m->content, RT::Test->file_content(LogoFile), "Binary content matches"); + $m->back; + + $m->follow_link_ok( { text => 'Download mobile.css' } ); + is( $m->response->header('Content-Type'), + 'text/css;charset=UTF-8', + 'Content-Type of text has charset', + ); + is($m->content_type, "text/css"); + is($m->content, RT::Test->file_content(TextFile), "Text content matches"); +} + +diag "concurent actions"; +my $m2 = RT::Test::Web->new; +ok $m2->login, 'second login'; + +diag "update and create"; +{ + my $ticket = RT::Test->create_ticket( + Queue => $queue, + Subject => 'Attachments test', + Content => 'Some content', + ); + + $m2->goto_ticket( $ticket->id ); + $m2->follow_link_ok({text => 'Reply'}, "reply to the ticket"); + $m2->form_name('TicketUpdate'); + $m2->field('Attach', LogoFile); + $m2->click('AddMoreAttach'); + is($m2->status, 200, "request successful"); + + $m->goto_create_ticket( $queue ); + + $m->form_name('TicketCreate'); + $m->field('Attach', FaviconFile); + $m->field('Subject', 'Attachments test'); + $m->field('Content', 'Some content'); + $m->submit; + is($m->status, 200, "request successful"); + + $m->content_lacks('Download bpslogo.png', 'page has file name'); + $m->content_contains('Download favicon.png', 'page has file name'); + + $m2->form_name('TicketUpdate'); + $m2->click('SubmitTicket'); + $m2->content_contains('Download bpslogo.png', 'page has file name'); + $m2->content_lacks('Download favicon.png', 'page has no file name'); +} + |