first pass RT4 merge, RT#13852
[freeside.git] / rt / t / api / has_rights.t
1 use RT::Test nodata => 1, tests => 9;
2
3 use strict;
4 use warnings;
5
6 my $queue = RT::Test->load_or_create_queue( Name => 'A' );
7 ok $queue && $queue->id, 'loaded or created queue_a';
8 my $qid = $queue->id;
9
10 my $user = RT::Test->load_or_create_user(
11     Name => 'user',
12     Password => 'password',
13     EmailAddress => 'test@example.com',
14 );
15 ok $user && $user->id, 'loaded or created user';
16
17 {
18     cleanup();
19     RT::Test->set_rights(
20         { Principal => 'Everyone', Right => [qw(SeeQueue)] },
21         { Principal => 'Cc',       Right => [qw(ShowTicket)] },
22     );
23     my ($t) = RT::Test->create_tickets(
24         { Queue => $queue->id },
25         { },
26     );
27     my $rights = $user->PrincipalObj->HasRights( Object => $t );
28     is_deeply( $rights, { SeeQueue => 1 }, 'got it' );
29
30     ($t) = RT::Test->create_tickets(
31         { Queue => $queue->id },
32         { Cc => $user->EmailAddress },
33     );
34     ok($t->Cc->HasMember( $user->id ), 'user is cc');
35     $rights = $user->PrincipalObj->HasRights( Object => $t );
36     is_deeply( $rights, { SeeQueue => 1, ShowTicket => 1 }, 'got it' )
37 }
38
39 sub cleanup {
40     RT::Test->delete_tickets( "Queue = $qid" );
41     RT::Test->delete_queue_watchers( $queue );
42 }; 
43