[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