import rt 3.8.7
[freeside.git] / rt / t / api / users.t
1
2 use strict;
3 use warnings;
4 use RT;
5 use RT::Test tests => 11;
6
7
8 {
9
10 ok(require RT::Users);
11
12
13 }
14
15 {
16     no warnings qw(redefine once);
17
18 ok(my $users = RT::Users->new($RT::SystemUser));
19 $users->WhoHaveRight(Object =>$RT::System, Right =>'SuperUser');
20 is($users->Count , 1, "There is one privileged superuser - Found ". $users->Count );
21 # TODO: this wants more testing
22
23 my $RTxUser = RT::User->new($RT::SystemUser);
24 my ($id, $msg) = $RTxUser->Create( Name => 'RTxUser', Comments => "RTx extension user", Privileged => 1);
25 ok ($id,$msg);
26
27 my $group = RT::Group->new($RT::SystemUser);
28 $group->LoadACLEquivalenceGroup($RTxUser->PrincipalObj);
29
30 my $RTxSysObj = {};
31 bless $RTxSysObj, 'RTx::System';
32 *RTx::System::Id = sub { 1; };
33 *RTx::System::id = *RTx::System::Id;
34 my $ace = RT::Record->new($RT::SystemUser);
35 $ace->Table('ACL');
36 $ace->_BuildTableAttributes unless ($RT::Record::_TABLE_ATTR->{ref($ace)});
37 ($id, $msg) = $ace->Create( PrincipalId => $group->id, PrincipalType => 'Group', RightName => 'RTxUserRight', ObjectType => 'RTx::System', ObjectId  => 1 );
38 ok ($id, "ACL for RTxSysObj created");
39
40 my $RTxObj = {};
41 bless $RTxObj, 'RTx::System::Record';
42 *RTx::System::Record::Id = sub { 4; };
43 *RTx::System::Record::id = *RTx::System::Record::Id;
44
45 $users = RT::Users->new($RT::SystemUser);
46 $users->WhoHaveRight(Right => 'RTxUserRight', Object => $RTxSysObj);
47 is($users->Count, 1, "RTxUserRight found for RTxSysObj");
48
49 $users = RT::Users->new($RT::SystemUser);
50 $users->WhoHaveRight(Right => 'RTxUserRight', Object => $RTxObj);
51 is($users->Count, 0, "RTxUserRight not found for RTxObj");
52
53 $users = RT::Users->new($RT::SystemUser);
54 $users->WhoHaveRight(Right => 'RTxUserRight', Object => $RTxObj, EquivObjects => [ $RTxSysObj ]);
55 is($users->Count, 1, "RTxUserRight found for RTxObj using EquivObjects");
56
57 $ace = RT::Record->new($RT::SystemUser);
58 $ace->Table('ACL');
59 $ace->_BuildTableAttributes unless ($RT::Record::_TABLE_ATTR->{ref($ace)});
60 ($id, $msg) = $ace->Create( PrincipalId => $group->id, PrincipalType => 'Group', RightName => 'RTxUserRight', ObjectType => 'RTx::System::Record', ObjectId => 5 );
61 ok ($id, "ACL for RTxObj created");
62
63 my $RTxObj2 = {};
64 bless $RTxObj2, 'RTx::System::Record';
65 *RTx::System::Record::Id = sub { 5; };
66 *RTx::System::Record::id = sub { 5; };
67
68 $users = RT::Users->new($RT::SystemUser);
69 $users->WhoHaveRight(Right => 'RTxUserRight', Object => $RTxObj2);
70 is($users->Count, 1, "RTxUserRight found for RTxObj2");
71
72 $users = RT::Users->new($RT::SystemUser);
73 $users->WhoHaveRight(Right => 'RTxUserRight', Object => $RTxObj2, EquivObjects => [ $RTxSysObj ]);
74 is($users->Count, 1, "RTxUserRight found for RTxObj2");
75
76
77
78 }
79
80 1;