import rt 3.8.7
[freeside.git] / rt / t / api / group.t
1
2 use strict;
3 use warnings;
4 use RT;
5 use RT::Test tests => 38;
6
7
8 {
9
10 # {{{ Tests
11 ok (require RT::Group);
12
13 ok (my $group = RT::Group->new($RT::SystemUser), "instantiated a group object");
14 ok (my ($id, $msg) = $group->CreateUserDefinedGroup( Name => 'TestGroup', Description => 'A test group',
15                     ), 'Created a new group');
16 isnt ($id , 0, "Group id is $id");
17 is ($group->Name , 'TestGroup', "The group's name is 'TestGroup'");
18 my $ng = RT::Group->new($RT::SystemUser);
19
20 ok($ng->LoadUserDefinedGroup('TestGroup'), "Loaded testgroup");
21 is($ng->id , $group->id, "Loaded the right group");
22
23
24 ok (($id,$msg) = $ng->AddMember('1'), "Added a member to the group");
25 ok($id, $msg);
26 ok (($id,$msg) = $ng->AddMember('2' ), "Added a member to the group");
27 ok($id, $msg);
28 ok (($id,$msg) = $ng->AddMember('3' ), "Added a member to the group");
29 ok($id, $msg);
30
31 # Group 1 now has members 1, 2 ,3
32
33 my $group_2 = RT::Group->new($RT::SystemUser);
34 ok (my ($id_2, $msg_2) = $group_2->CreateUserDefinedGroup( Name => 'TestGroup2', Description => 'A second test group'), , 'Created a new group');
35 isnt ($id_2 , 0, "Created group 2 ok- $msg_2 ");
36 ok (($id,$msg) = $group_2->AddMember($ng->PrincipalId), "Made TestGroup a member of testgroup2");
37 ok($id, $msg);
38 ok (($id,$msg) = $group_2->AddMember('1' ), "Added  member RT_System to the group TestGroup2");
39 ok($id, $msg);
40
41 # Group 2 how has 1, g1->{1, 2,3}
42
43 my $group_3 = RT::Group->new($RT::SystemUser);
44 ok (my ($id_3, $msg_3) = $group_3->CreateUserDefinedGroup( Name => 'TestGroup3', Description => 'A second test group'), 'Created a new group');
45 isnt ($id_3 , 0, "Created group 3 ok - $msg_3");
46 ok (($id,$msg) =$group_3->AddMember($group_2->PrincipalId), "Made TestGroup a member of testgroup2");
47 ok($id, $msg);
48
49 # g3 now has g2->{1, g1->{1,2,3}}
50
51 my $principal_1 = RT::Principal->new($RT::SystemUser);
52 $principal_1->Load('1');
53
54 my $principal_2 = RT::Principal->new($RT::SystemUser);
55 $principal_2->Load('2');
56
57 ok (($id,$msg) = $group_3->AddMember('1' ), "Added  member RT_System to the group TestGroup2");
58 ok($id, $msg);
59
60 # g3 now has 1, g2->{1, g1->{1,2,3}}
61
62 is($group_3->HasMember($principal_2), undef, "group 3 doesn't have member 2");
63 ok($group_3->HasMemberRecursively($principal_2), "group 3 has member 2 recursively");
64 ok($ng->HasMember($principal_2) , "group ".$ng->Id." has member 2");
65 my ($delid , $delmsg) =$ng->DeleteMember($principal_2->Id);
66 isnt ($delid ,0, "Sucessfully deleted it-".$delid."-".$delmsg);
67
68 #Gotta reload the group objects, since we've been messing with various internals.
69 # we shouldn't need to do this.
70 #$ng->LoadUserDefinedGroup('TestGroup');
71 #$group_2->LoadUserDefinedGroup('TestGroup2');
72 #$group_3->LoadUserDefinedGroup('TestGroup');
73
74 # G1 now has 1, 3
75 # Group 2 how has 1, g1->{1, 3}
76 # g3 now has  1, g2->{1, g1->{1, 3}}
77
78 ok(!$ng->HasMember($principal_2)  , "group ".$ng->Id." no longer has member 2");
79 is($group_3->HasMemberRecursively($principal_2), undef, "group 3 doesn't have member 2");
80 is($group_2->HasMemberRecursively($principal_2), undef, "group 2 doesn't have member 2");
81 is($ng->HasMember($principal_2), undef, "group 1 doesn't have member 2");
82 is($group_3->HasMemberRecursively($principal_2), undef, "group 3 has member 2 recursively");
83
84 # }}}
85
86
87 }
88
89 {
90
91 ok(my $u = RT::Group->new($RT::SystemUser));
92 ok($u->Load(4), "Loaded the first user");
93 is($u->PrincipalObj->ObjectId , 4, "user 4 is the fourth principal");
94 is($u->PrincipalObj->PrincipalType , 'Group' , "Principal 4 is a group");
95
96
97 }
98
99 1;