[Rt-commit] rt branch, 4.2/reminder-permissions, updated. rt-4.0.0rc4-93-g8d1bf0c

? sunnavy sunnavy at bestpractical.com
Fri Feb 11 11:09:07 EST 2011


The branch, 4.2/reminder-permissions has been updated
       via  8d1bf0cd24b093335dfbd0f2a62a89f35586e6d1 (commit)
       via  f0236bc2e857c51b8407f64e25d067bdbe9f088e (commit)
       via  38381771271e951a1763e43aa7183bad9044ba47 (commit)
       via  93ef97e3a051a54819f7ca5c1a094554591cb52b (commit)
      from  624f62112c4667b654974da3ed6193e1aa81ef4a (commit)

Summary of changes:
 t/api/reminder-permissions.t  |   50 ++++++++++++
 t/web/reminder-permissions.t  |  179 +++++++++++++++++++++++++++++++++++++++++
 t/web/reminders-permissions.t |   56 -------------
 3 files changed, 229 insertions(+), 56 deletions(-)
 create mode 100644 t/api/reminder-permissions.t
 create mode 100644 t/web/reminder-permissions.t
 delete mode 100644 t/web/reminders-permissions.t

- Log -----------------------------------------------------------------
commit 93ef97e3a051a54819f7ca5c1a094554591cb52b
Author: sunnavy <sunnavy at bestpractical.com>
Date:   Fri Feb 11 16:59:39 2011 +0800

    more reminder permission tests

diff --git a/t/web/reminders-permissions.t b/t/web/reminders-permissions.t
index 46f7d5c..6517e8d 100644
--- a/t/web/reminders-permissions.t
+++ b/t/web/reminders-permissions.t
@@ -1,7 +1,7 @@
 #!/usr/bin/env perl
 use strict;
 use warnings;
-use RT::Test tests => 19;
+use RT::Test tests => 36;
 
 my $user_a = RT::Test->load_or_create_user(
     Name     => 'user_a',
@@ -13,14 +13,22 @@ ok(
     RT::Test->add_rights(
         {
             Principal => $user_a,
-            Right     => [
-                qw/SeeQueue CreateTicket ShowTicket/
-            ]
+            Right     => [qw/SeeQueue CreateTicket ShowTicket OwnTicket/]
         },
     ),
     'add basic rights for user_a'
 );
 
+ok(
+    RT::Test->add_rights(
+        {
+            Principal => 'Owner',
+            Right     => [qw/ModifyTicket/],
+        },
+    ),
+    'add basic rights for owner'
+);
+
 my $ticket = RT::Test->create_ticket(
     Subject => 'test reminder permission',
     Queue   => 'General',
@@ -28,29 +36,119 @@ my $ticket = RT::Test->create_ticket(
 
 ok( $ticket->id, 'created a ticket' );
 
-my ($baseurl, $m) = RT::Test->started_ok;
-ok($m->login( user_a => 'password'), 'logged in as user_a');
+my ( $baseurl, $m ) = RT::Test->started_ok;
+$m->login;
 
-$m->goto_ticket($ticket->id);
-$m->content_lacks('New reminder:', 'can not create a new reminder');
-$m->follow_link_ok({id => 'page-reminders'});
-$m->get_ok( $baseurl . '/Ticket/Reminders.html?id=' . $ticket->id );
-$m->title_is("Reminders for ticket #" . $ticket->id);
-$m->content_lacks('New reminder:', 'can not create a new reminder');
+my ( $root_reminder_id, $user_a_reminder_id );
+diag "create two reminders, with owner root and user_a, respectively";
+{
+    $m->goto_ticket( $ticket->id );
+    $m->text_contains( 'New reminder:', 'can create a new reminder' );
+    $m->form_name('UpdateReminders');
+    $m->field( 'NewReminder-Subject' => "root reminder" );
+    $m->submit;
+    $m->text_contains( "Reminder 'root reminder': Created",
+        'created root reminder' );
+
+    $m->form_name('UpdateReminders');
+    $m->field( 'NewReminder-Subject' => "user_a reminder", );
+    $m->field( 'NewReminder-Owner'   => $user_a->id, );
+    $m->submit;
+    $m->text_contains( "Reminder 'user_a reminder': Created",
+        'created user_a reminder' );
+
+    my $reminders = RT::Reminders->new($user_a);
+    $reminders->Ticket( $ticket->id );
+    my $col = $reminders->Collection;
+    while ( my $c = $col->Next ) {
+        if ( $c->Subject eq 'root reminder' ) {
+            $root_reminder_id = $c->id;
+        }
+        elsif ( $c->Subject eq 'user_a reminder' ) {
+            $user_a_reminder_id = $c->id;
+        }
+    }
+}
+
+diag "check root_a can update user_a reminder but not root reminder";
+my $m_a = RT::Test::Web->new;
+{
+    ok( $m_a->login( user_a => 'password' ), 'logged in as user_a' );
+    $m_a->goto_ticket( $ticket->id );
+    $m_a->content_lacks( 'New reminder:', 'can not create a new reminder' );
+    $m_a->content_contains( 'root reminder',   'can see root reminder' );
+    $m_a->content_contains( 'user_a reminder', 'can see user_a reminder' );
+    $m_a->content_like(
+qr!<input[^/]+name="Complete-Reminder-$root_reminder_id"[^/]+disabled="disabled"!,
+        "root reminder checkbox is disabled"
+    );
+    $m_a->form_name('UpdateReminders');
+    $m_a->tick( "Complete-Reminder-$user_a_reminder_id" => 1 );
+    $m_a->submit;
+    $m_a->text_contains(
+        "Reminder 'user_a reminder': Status changed from 'new' to 'resolved'",
+        'complete user_a reminder' );
+
+    $m_a->follow_link_ok( { id => 'page-reminders' } );
+    $m_a->get_ok( $baseurl . '/Ticket/Reminders.html?id=' . $ticket->id );
+    $m_a->title_is( "Reminders for ticket #" . $ticket->id );
+    $m_a->content_contains( 'root reminder',   'can see root reminder' );
+    $m_a->content_contains( 'user_a reminder', 'can see user_a reminder' );
+    $m_a->content_lacks( 'New reminder:', 'can not create a new reminder' );
+    $m_a->content_like(
+qr!<input[^/]+name="Complete-Reminder-$root_reminder_id"[^/]+disabled="disabled"!,
+        "root reminder checkbox is disabled"
+    );
+
+    $m_a->form_name('UpdateReminders');
+    $m_a->untick( "Complete-Reminder-$user_a_reminder_id", 1 );
+    $m_a->submit;
+    $m_a->text_contains(
+        "Reminder 'user_a reminder': Status changed from 'resolved' to 'open'",
+        'reopen user_a reminder'
+    );
+}
+
+diag "set ticket owner to user_a to let user_a grant modify ticket right";
+{
+    $ticket->SetOwner( $user_a->id );
+
+    $m_a->goto_ticket( $ticket->id );
+    $m_a->content_contains( 'New reminder:', 'can create a new reminder' );
+    $m_a->content_like(
+qr!<input[^/]+name="Complete-Reminder-$root_reminder_id"[^/]+disabled="disabled"!,
+        "root reminder checkbox is still disabled"
+    );
+    $m_a->follow_link_ok( { id => 'page-reminders' } );
+    $m_a->title_is( "Reminders for ticket #" . $ticket->id );
+    $m_a->content_contains( 'New reminder:', 'can create a new reminder' );
+    $m_a->content_like(
+qr!<input[^/]+name="Complete-Reminder-$root_reminder_id"[^/]+disabled="disabled"!,
+        "root reminder checkbox is still disabled"
+    );
+}
+
+diag "grant user_a with ModifyTicket globally";
+{
+    ok(
+        RT::Test->add_rights(
+            {
+                Principal => $user_a,
+                Right     => [qw/ModifyTicket/],
+            },
+        ),
+        'add ModifyTicket rights to user_a'
+    );
+
+    $m_a->goto_ticket( $ticket->id );
+    $m_a->content_unlike(
+qr!<input[^/]+name="Complete-Reminder-$root_reminder_id"[^/]+disabled="disabled"!,
+        "root reminder checkbox is enabled"
+    );
+    $m_a->follow_link_ok( { id => 'page-reminders' } );
+    $m_a->content_unlike(
+qr!<input[^/]+name="Complete-Reminder-$root_reminder_id"[^/]+disabled="disabled"!,
+        "root reminder checkbox is enabled"
+    );
+}
 
-ok(
-    RT::Test->add_rights(
-        {
-            Principal => $user_a,
-            Right     => [
-                qw/ModifyTicket/
-            ]
-        },
-    ),
-    'add basic rights for user_a'
-);
-$m->goto_ticket($ticket->id);
-$m->content_contains('New reminder:', 'can create a new reminder');
-$m->follow_link_ok({id => 'page-reminders'});
-$m->title_is("Reminders for ticket #" . $ticket->id);
-$m->content_contains('New reminder:', 'can create a new reminder');

commit 38381771271e951a1763e43aa7183bad9044ba47
Author: sunnavy <sunnavy at bestpractical.com>
Date:   Fri Feb 11 17:00:08 2011 +0800

    better test file name

diff --git a/t/web/reminders-permissions.t b/t/web/reminder-permissions.t
similarity index 100%
rename from t/web/reminders-permissions.t
rename to t/web/reminder-permissions.t

commit f0236bc2e857c51b8407f64e25d067bdbe9f088e
Author: sunnavy <sunnavy at bestpractical.com>
Date:   Fri Feb 11 17:14:07 2011 +0800

    reminder permissions test in api level

diff --git a/t/api/reminder-permissions.t b/t/api/reminder-permissions.t
new file mode 100644
index 0000000..8c068fb
--- /dev/null
+++ b/t/api/reminder-permissions.t
@@ -0,0 +1,50 @@
+#!/usr/bin/env perl
+use strict;
+use warnings;
+use RT::Test tests => 8;
+
+my $user_a = RT::Test->load_or_create_user(
+    Name     => 'user_a',
+    Password => 'password',
+);
+
+ok( $user_a && $user_a->id, 'created user_a' );
+ok(
+    RT::Test->add_rights(
+        {
+            Principal => $user_a,
+            Right     => [qw/SeeQueue CreateTicket ShowTicket OwnTicket/]
+        },
+    ),
+    'add basic rights for user_a'
+);
+
+my $ticket = RT::Test->create_ticket(
+    Subject => 'test reminder permission',
+    Queue   => 'General',
+);
+ok( $ticket->id, 'created a ticket' );
+$ticket->CurrentUser($user_a);
+
+my ( $status, $msg ) = $ticket->Reminders->Add(
+    Subject => 'user a reminder',
+    Owner   => $user_a->id,
+);
+ok( !$status, "couldn't create reminders without ModifyTicket: $msg" );
+
+ok(
+    RT::Test->add_rights(
+        {
+            Principal => $user_a,
+            Right     => [qw/ModifyTicket/]
+        },
+    ),
+    'add ModifyTicket right for user_a'
+);
+
+( $status, $msg ) = $ticket->Reminders->Add(
+    Subject => 'user a reminder',
+    Owner   => $user_a->id,
+);
+ok( $status, "created a reminder with ModifyTicket: $msg" );
+

commit 8d1bf0cd24b093335dfbd0f2a62a89f35586e6d1
Author: sunnavy <sunnavy at bestpractical.com>
Date:   Fri Feb 11 17:32:07 2011 +0800

    more reminder permission tests

diff --git a/t/web/reminder-permissions.t b/t/web/reminder-permissions.t
index 6517e8d..7fdcafd 100644
--- a/t/web/reminder-permissions.t
+++ b/t/web/reminder-permissions.t
@@ -1,7 +1,7 @@
 #!/usr/bin/env perl
 use strict;
 use warnings;
-use RT::Test tests => 36;
+use RT::Test tests => 39;
 
 my $user_a = RT::Test->load_or_create_user(
     Name     => 'user_a',
@@ -82,6 +82,7 @@ my $m_a = RT::Test::Web->new;
 qr!<input[^/]+name="Complete-Reminder-$root_reminder_id"[^/]+disabled="disabled"!,
         "root reminder checkbox is disabled"
     );
+
     $m_a->form_name('UpdateReminders');
     $m_a->tick( "Complete-Reminder-$user_a_reminder_id" => 1 );
     $m_a->submit;
@@ -90,7 +91,6 @@ qr!<input[^/]+name="Complete-Reminder-$root_reminder_id"[^/]+disabled="disabled"
         'complete user_a reminder' );
 
     $m_a->follow_link_ok( { id => 'page-reminders' } );
-    $m_a->get_ok( $baseurl . '/Ticket/Reminders.html?id=' . $ticket->id );
     $m_a->title_is( "Reminders for ticket #" . $ticket->id );
     $m_a->content_contains( 'root reminder',   'can see root reminder' );
     $m_a->content_contains( 'user_a reminder', 'can see user_a reminder' );
@@ -107,6 +107,7 @@ qr!<input[^/]+name="Complete-Reminder-$root_reminder_id"[^/]+disabled="disabled"
         "Reminder 'user_a reminder': Status changed from 'resolved' to 'open'",
         'reopen user_a reminder'
     );
+
 }
 
 diag "set ticket owner to user_a to let user_a grant modify ticket right";
@@ -119,6 +120,12 @@ diag "set ticket owner to user_a to let user_a grant modify ticket right";
 qr!<input[^/]+name="Complete-Reminder-$root_reminder_id"[^/]+disabled="disabled"!,
         "root reminder checkbox is still disabled"
     );
+    $m_a->form_name('UpdateReminders');
+    $m_a->field( 'NewReminder-Subject' => "user_a from display reminder" );
+    $m_a->submit;
+    $m_a->text_contains( "Reminder 'user_a from display reminder': Created",
+        'created user_a from display reminder' );
+
     $m_a->follow_link_ok( { id => 'page-reminders' } );
     $m_a->title_is( "Reminders for ticket #" . $ticket->id );
     $m_a->content_contains( 'New reminder:', 'can create a new reminder' );
@@ -126,6 +133,11 @@ qr!<input[^/]+name="Complete-Reminder-$root_reminder_id"[^/]+disabled="disabled"
 qr!<input[^/]+name="Complete-Reminder-$root_reminder_id"[^/]+disabled="disabled"!,
         "root reminder checkbox is still disabled"
     );
+    $m_a->form_name('UpdateReminders');
+    $m_a->field( 'NewReminder-Subject' => "user_a from reminders reminder" );
+    $m_a->submit;
+    $m_a->text_contains( "Reminder 'user_a from reminders reminder': Created",
+        'created user_a from reminders reminder' );
 }
 
 diag "grant user_a with ModifyTicket globally";
@@ -145,10 +157,23 @@ diag "grant user_a with ModifyTicket globally";
 qr!<input[^/]+name="Complete-Reminder-$root_reminder_id"[^/]+disabled="disabled"!,
         "root reminder checkbox is enabled"
     );
+    $m_a->form_name('UpdateReminders');
+    $m_a->tick( "Complete-Reminder-$root_reminder_id" => 1 );
+    $m_a->submit;
+    $m_a->text_contains(
+        "Reminder 'root reminder': Status changed from 'new' to 'resolved'",
+        'complete root reminder' );
+
     $m_a->follow_link_ok( { id => 'page-reminders' } );
     $m_a->content_unlike(
 qr!<input[^/]+name="Complete-Reminder-$root_reminder_id"[^/]+disabled="disabled"!,
         "root reminder checkbox is enabled"
     );
+    $m_a->form_name('UpdateReminders');
+    $m_a->untick( "Complete-Reminder-$root_reminder_id" => 1 );
+    $m_a->submit;
+    $m_a->text_contains(
+        "Reminder 'root reminder': Status changed from 'resolved' to 'open'",
+        'reopen root reminder' );
 }
 

-----------------------------------------------------------------------


More information about the Rt-commit mailing list