[Rt-commit] rt branch, 4.4/select-object-always-include-valid-default, updated. rt-4.4.2-75-g3c054c992
? sunnavy
sunnavy at bestpractical.com
Fri Feb 9 16:46:28 EST 2018
The branch, 4.4/select-object-always-include-valid-default has been updated
via 3c054c992735cbdbf21b78023e2739aa8d93e018 (commit)
from 8eefca32bad3f7b4943fc1beddc81320a932a6ad (commit)
Summary of changes:
t/web/queue_caching.t | 132 ++++++++++++++++++++++++++++++++++++++++++++++----
1 file changed, 123 insertions(+), 9 deletions(-)
- Log -----------------------------------------------------------------
commit 3c054c992735cbdbf21b78023e2739aa8d93e018
Author: sunnavy <sunnavy at bestpractical.com>
Date: Sat Feb 10 05:40:19 2018 +0800
more queue cache tests
including tests for separated SeeQueue and CreateTicket, and also
ShowTicket&ModifyTicket but without SeeQueue/CreateTicket.
diff --git a/t/web/queue_caching.t b/t/web/queue_caching.t
index d4857115e..0f226e900 100644
--- a/t/web/queue_caching.t
+++ b/t/web/queue_caching.t
@@ -1,6 +1,6 @@
use strict;
use warnings;
-use RT::Test tests => 48;
+use RT::Test tests => undef;
# make an initial queue, so we have more than 1
my $original_test_queue = new_queue("Test$$");
@@ -63,6 +63,110 @@ check_queues($a_m);
}
+diag( "Test a user who has only CreateTicket right" );
+{
+ my $user_b = RT::Test->load_or_create_user(
+ Name => 'user_b',
+ Password => 'password',
+ );
+ ok $user_b && $user_b->id, 'loaded or created user';
+
+ ok(
+ RT::Test->add_rights(
+ { Principal => $user_b, Right => [qw(CreateTicket)] },
+ ),
+ 'add global queue CreateTicket right'
+ );
+
+ my $b_m = RT::Test::Web->new;
+ ok $b_m->login( 'user_b', 'password' ), 'logged in as user B';
+
+ check_queues( $b_m, [], [] );
+}
+
+diag( "Test a user who has only SeeQueue right" );
+{
+ my $user_c = RT::Test->load_or_create_user(
+ Name => 'user_c',
+ Password => 'password',
+ );
+ ok $user_c && $user_c->id, 'loaded or created user';
+
+ ok(
+ RT::Test->add_rights(
+ { Principal => $user_c, Right => [qw(SeeQueue)] },
+ ),
+ 'add global queue SeeQueue right'
+ );
+
+ my $c_m = RT::Test::Web->new;
+ ok $c_m->login( 'user_c', 'password' ), 'logged in as user C';
+
+ check_queues( $c_m, [], [] );
+}
+
+diag( "Test a user starting with ShowTicket and ModifyTicket rights" );
+{
+ my $user_d = RT::Test->load_or_create_user(
+ Name => 'user_d',
+ Password => 'password',
+ );
+ ok $user_d && $user_d->id, 'loaded or created user';
+
+ ok(
+ RT::Test->add_rights(
+ { Principal => $user_d, Right => [qw(ShowTicket ModifyTicket)] },
+ ),
+ 'add global queue ShowTicket/ModifyTicket rights'
+ );
+
+ my $d_m = RT::Test::Web->new;
+ ok $d_m->login( 'user_d', 'password' ), 'logged in as user D';
+
+ for my $queue ( 1, $original_test_queue->id ) {
+ RT::Test->create_ticket(
+ Queue => $queue,
+ Subject => "Ticket in queue $queue",
+ );
+
+ check_queues( $d_m, [], [] );
+
+ $d_m->follow_link_ok( { text => "Ticket in queue $queue" } );
+ $d_m->follow_link_ok( { text => 'Basics' } );
+ check_queues( $d_m, [$queue], ["#$queue"], $d_m->uri, 'TicketModify' );
+ }
+
+ ok(
+ RT::Test->add_rights(
+ { Principal => $user_d, Right => [qw(SeeQueue)] },
+ ),
+ 'add global queue SeeQueue right'
+ );
+
+ for my $queue ( 1, $original_test_queue->id ) {
+
+ check_queues( $d_m, [], [] );
+
+ $d_m->follow_link_ok( { text => "Ticket in queue $queue" } );
+ $d_m->follow_link_ok( { text => 'Basics' } );
+ check_queues( $d_m, undef, undef, $d_m->uri, 'TicketModify' );
+ }
+
+ ok(
+ RT::Test->add_rights(
+ { Principal => $user_d, Right => [qw(CreateTicket)] },
+ ),
+ 'add global queue CreateTicket right'
+ );
+
+ for my $queue ( 1, $original_test_queue->id ) {
+ check_queues( $d_m );
+ $d_m->follow_link_ok( { text => "Ticket in queue $queue" } );
+ $d_m->follow_link_ok( { text => 'Basics' } );
+ check_queues( $d_m, undef, undef, $d_m->uri, 'TicketModify' );
+ }
+}
+
sub new_queue {
my $name = shift;
my $new_queue = RT::Queue->new(RT->SystemUser);
@@ -84,13 +188,21 @@ sub internal_queues {
# takes a WWW::Mech object and two optional arrayrefs of queue ids and names
# compares the list of ids and names to the dropdown of Queues for the New Ticket In form
sub check_queues {
- my ($browser, $queue_id_list, $queue_name_list) = @_;
- $browser->get_ok($baseurl,"Navigated to homepage");
- ok(my $form = $browser->form_name('CreateTicketInQueue'), "Found New Ticket In form");
- ok(my $queuelist = $form->find_input('Queue','option'), "Found queue select");
-
- my @queue_ids = $queuelist->possible_values;
- my @queue_names = $queuelist->value_names;
+ my ($browser, $queue_id_list, $queue_name_list, $url, $form_name) = @_;
+ $url ||= $baseurl;
+ $form_name ||= 'CreateTicketInQueue';
+
+ $browser->get_ok( $url, "Navigated to $url" );
+ ok( my $form = $browser->form_name( $form_name ), "Found form $form_name" );
+ my ( @queue_ids, @queue_names );
+ if ( !$queue_id_list || @$queue_id_list > 0 ) {
+ ok(my $queuelist = $form->find_input('Queue','option'), "Found queue select");
+ @queue_ids = $queuelist->possible_values;
+ @queue_names = $queuelist->value_names;
+ }
+ else {
+ ok( !$form->find_input( 'Queue', 'option' ), "No queue select options" );
+ }
my $full_queue_list = internal_queues();
$queue_id_list = [keys %$full_queue_list] unless $queue_id_list;
@@ -98,5 +210,7 @@ sub check_queues {
is_deeply([sort @queue_ids],[sort @$queue_id_list],
"Queue list contains the expected queue ids");
is_deeply([sort @queue_names],[sort @$queue_name_list],
- "Queue list contains the expected queue namess");
+ "Queue list contains the expected queue names");
}
+
+done_testing;
-----------------------------------------------------------------------
More information about the rt-commit
mailing list