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