summaryrefslogtreecommitdiff
path: root/rt/t/api/rights_show_ticket.t
diff options
context:
space:
mode:
Diffstat (limited to 'rt/t/api/rights_show_ticket.t')
-rw-r--r--rt/t/api/rights_show_ticket.t262
1 files changed, 0 insertions, 262 deletions
diff --git a/rt/t/api/rights_show_ticket.t b/rt/t/api/rights_show_ticket.t
deleted file mode 100644
index 3e1d0740f..000000000
--- a/rt/t/api/rights_show_ticket.t
+++ /dev/null
@@ -1,262 +0,0 @@
-#!/usr/bin/perl -w
-
-use RT::Test tests => 264;
-
-use strict;
-use warnings;
-
-
-my $queue_a = RT::Test->load_or_create_queue( Name => 'A' );
-ok $queue_a && $queue_a->id, 'loaded or created queue_a';
-my $qa_id = $queue_a->id;
-
-my $queue_b = RT::Test->load_or_create_queue( Name => 'B' );
-ok $queue_b && $queue_b->id, 'loaded or created queue_b';
-my $qb_id = $queue_b->id;
-
-my $user_a = RT::Test->load_or_create_user(
- Name => 'user_a', Password => 'password',
-);
-ok $user_a && $user_a->id, 'loaded or created user';
-
-my $user_b = RT::Test->load_or_create_user(
- Name => 'user_b', Password => 'password',
-);
-ok $user_b && $user_b->id, 'loaded or created user';
-
-foreach my $option (0 .. 1 ) { RT->Config->Set( 'UseSQLForACLChecks' => $option );
-
-diag "Testing with UseSQLForACLChecks => $option";
-
-# Global Cc has right, a User is nobody
-{
- cleanup();
- RT::Test->set_rights(
- { Principal => 'Everyone', Right => [qw(SeeQueue)] },
- { Principal => 'Cc', Right => [qw(ShowTicket)] },
- );
- create_tickets_set();
- have_no_rights($user_a, $user_b);
-}
-
-# Global Cc has right, a User is Queue Cc
-{
- cleanup();
- RT::Test->set_rights(
- { Principal => 'Everyone', Right => [qw(SeeQueue)] },
- { Principal => 'Cc', Right => [qw(ShowTicket)] },
- );
- create_tickets_set();
- have_no_rights($user_a, $user_b);
-
- my ($status, $msg) = $queue_a->AddWatcher( Type => 'Cc', PrincipalId => $user_a->id );
- ok($status, "user A is now queue A watcher");
-
- foreach my $q (
- '',
- "Queue = $qa_id OR Queue = $qb_id",
- "Queue = $qb_id OR Queue = $qa_id",
- ) {
- my $tickets = RT::Tickets->new( RT::CurrentUser->new( $user_a ) );
- $q? $tickets->FromSQL($q) : $tickets->UnLimit;
- my $found = 0;
- while ( my $t = $tickets->Next ) {
- $found++;
- is( $t->Queue, $queue_a->id, "user sees tickets only in queue A" );
- }
- is($found, 2, "user sees tickets");
- }
- have_no_rights( $user_b );
-}
-
-# global Cc has right, a User is ticket Cc
-{
- cleanup();
- RT::Test->set_rights(
- { Principal => 'Everyone', Right => [qw(SeeQueue)] },
- { Principal => 'Cc', Right => [qw(ShowTicket)] },
- );
- my @tickets = create_tickets_set();
- have_no_rights($user_a, $user_b);
-
- my ($status, $msg) = $tickets[1]->AddWatcher( Type => 'Cc', PrincipalId => $user_a->id );
- ok($status, "user A is now queue A watcher");
-
- foreach my $q (
- '',
- "Queue = $qa_id OR Queue = $qb_id",
- "Queue = $qb_id OR Queue = $qa_id",
- ) {
- my $tickets = RT::Tickets->new( RT::CurrentUser->new( $user_a ) );
- $q? $tickets->FromSQL($q) : $tickets->UnLimit;
- my $found = 0;
- while ( my $t = $tickets->Next ) {
- $found++;
- is( $t->Queue, $queue_a->id, "user sees tickets only in queue A" );
- is( $t->id, $tickets[1]->id, "correct ticket");
- }
- is($found, 1, "user sees tickets");
- }
- have_no_rights($user_b);
-}
-
-# Queue Cc has right, a User is nobody
-{
- cleanup();
- RT::Test->set_rights(
- { Principal => 'Everyone', Right => [qw(SeeQueue)] },
- { Principal => 'Cc', Object => $queue_a, Right => [qw(ShowTicket)] },
- );
- create_tickets_set();
- have_no_rights($user_a, $user_b);
-}
-
-# Queue Cc has right, Users are Queue Ccs
-{
- cleanup();
- RT::Test->set_rights(
- { Principal => 'Everyone', Right => [qw(SeeQueue)] },
- { Principal => 'Cc', Object => $queue_a, Right => [qw(ShowTicket)] },
- );
- create_tickets_set();
- have_no_rights($user_a, $user_b);
-
- my ($status, $msg) = $queue_a->AddWatcher( Type => 'Cc', PrincipalId => $user_a->id );
- ok($status, "user A is now queue A watcher");
-
- ($status, $msg) = $queue_b->AddWatcher( Type => 'Cc', PrincipalId => $user_b->id );
- ok($status, "user B is now queue B watcher");
-
- foreach my $q (
- '',
- "Queue = $qa_id OR Queue = $qb_id",
- "Queue = $qb_id OR Queue = $qa_id",
- ) {
- my $tickets = RT::Tickets->new( RT::CurrentUser->new( $user_a ) );
- $q? $tickets->FromSQL($q) : $tickets->UnLimit;
- my $found = 0;
- while ( my $t = $tickets->Next ) {
- $found++;
- is( $t->Queue, $queue_a->id, "user sees tickets only in queue A" );
- }
- is($found, 2, "user sees tickets");
- }
- have_no_rights( $user_b );
-}
-
-# Queue Cc has right, Users are ticket Ccs
-{
- cleanup();
- RT::Test->set_rights(
- { Principal => 'Everyone', Right => [qw(SeeQueue)] },
- { Principal => 'Cc', Object => $queue_a, Right => [qw(ShowTicket)] },
- );
- my @tickets = create_tickets_set();
- have_no_rights($user_a, $user_b);
-
- my ($status, $msg) = $tickets[1]->AddWatcher( Type => 'Cc', PrincipalId => $user_a->id );
- ok($status, "user A is now Cc on a ticket in queue A");
-
- ($status, $msg) = $tickets[2]->AddWatcher( Type => 'Cc', PrincipalId => $user_b->id );
- ok($status, "user B is now Cc on a ticket in queue B");
-
- foreach my $q (
- '',
- "Queue = $qa_id OR Queue = $qb_id",
- "Queue = $qb_id OR Queue = $qa_id",
- ) {
- my $tickets = RT::Tickets->new( RT::CurrentUser->new( $user_a ) );
- $q? $tickets->FromSQL($q) : $tickets->UnLimit;
- my $found = 0;
- while ( my $t = $tickets->Next ) {
- $found++;
- is( $t->Queue, $queue_a->id, "user sees tickets only in queue A" );
- is( $t->id, $tickets[1]->id, )
- }
- is($found, 1, "user sees tickets");
- }
- have_no_rights( $user_b );
-}
-
-# Users has direct right on queue
-{
- cleanup();
- RT::Test->set_rights(
- { Principal => 'Everyone', Right => [qw(SeeQueue)] },
- { Principal => $user_a, Object => $queue_a, Right => [qw(ShowTicket)] },
- );
- my @tickets = create_tickets_set();
-
- foreach my $q (
- '',
- "Queue = $qa_id OR Queue = $qb_id",
- "Queue = $qb_id OR Queue = $qa_id",
- ) {
- my $tickets = RT::Tickets->new( RT::CurrentUser->new( $user_a ) );
- $q? $tickets->FromSQL($q) : $tickets->UnLimit;
- my $found = 0;
- while ( my $t = $tickets->Next ) {
- $found++;
- is( $t->Queue, $queue_a->id, "user sees tickets only in queue A" );
- }
- is($found, 2, "user sees tickets");
- }
- have_no_rights( $user_b );
-}
-
-
-}
-
-sub have_no_rights {
- $SIG{'INT'} = $SIG{'TERM'} = sub { print STDERR Carp::longmess('boo'); exit 1 };
- local $Test::Builder::Level = $Test::Builder::Level + 1;
- foreach my $u ( @_ ) {
- foreach my $q (
- '',
- "Queue = $qa_id OR Queue = $qb_id",
- "Queue = $qb_id OR Queue = $qa_id",
- ) {
- my $tickets = RT::Tickets->new( RT::CurrentUser->new( $u ) );
- $q? $tickets->FromSQL($q) : $tickets->UnLimit;
- ok(!$tickets->First, "no tickets");
- }
- }
-}
-
-sub create_tickets_set{
- local $Test::Builder::Level = $Test::Builder::Level + 1;
- my @res;
- foreach my $q ($queue_a, $queue_b) {
- foreach my $n (1 .. 2) {
- my $ticket = RT::Ticket->new( $RT::SystemUser );
- my ($tid) = $ticket->Create(
- Queue => $q->id, Subject => $q->Name .' - '. $n
- );
- ok( $tid, "created ticket #$tid");
- push @res, $ticket;
- }
- }
- return @res;
-}
-
-sub cleanup { delete_tickets(); delete_watchers() };
-
-sub delete_tickets {
- my $tickets = RT::Tickets->new( $RT::SystemUser );
- $tickets->FromSQL( "Queue = $qa_id OR Queue = $qb_id" );
- while ( my $ticket = $tickets->Next ) {
- $ticket->Delete;
- }
-}
-
-sub delete_watchers {
- foreach my $q ($queue_a, $queue_b) {
- foreach my $u ($user_a, $user_b) {
- foreach my $t (qw(Cc AdminCc) ) {
- $q->DeleteWatcher( Type => $t, PrincipalId => $u->id )
- if $q->IsWatcher( Type => $t, PrincipalId => $u->id );
- }
- }
- }
-}
-