1# -- 2# Copyright (C) 2001-2020 OTRS AG, https://otrs.com/ 3# -- 4# This software comes with ABSOLUTELY NO WARRANTY. For details, see 5# the enclosed file COPYING for license information (GPL). If you 6# did not receive this file, see https://www.gnu.org/licenses/gpl-3.0.txt. 7# -- 8 9use strict; 10use warnings; 11use utf8; 12 13use vars (qw($Self)); 14 15# get needed objects 16my $GroupObject = $Kernel::OM->Get('Kernel::System::Group'); 17 18# get helper object 19$Kernel::OM->ObjectParamAdd( 20 'Kernel::System::UnitTest::Helper' => { 21 RestoreDatabase => 1, 22 }, 23); 24my $HelperObject = $Kernel::OM->Get('Kernel::System::UnitTest::Helper'); 25 26# 27# Group tests 28# 29my $GroupNameRandomPartBase = $Kernel::OM->Create('Kernel::System::DateTime')->ToEpoch(); 30my %GroupIDByGroupName = ( 31 'test-group-' . $GroupNameRandomPartBase . '-1' => undef, 32 'test-group-' . $GroupNameRandomPartBase . '-2' => undef, 33 'test-group-' . $GroupNameRandomPartBase . '-3' => undef, 34); 35 36# try to add groups 37for my $GroupName ( sort keys %GroupIDByGroupName ) { 38 my $GroupID = $GroupObject->GroupAdd( 39 Name => $GroupName, 40 ValidID => 1, 41 UserID => 1, 42 ); 43 44 $Self->True( 45 $GroupID, 46 'GroupAdd() for new group ' . $GroupName, 47 ); 48 49 if ($GroupID) { 50 $GroupIDByGroupName{$GroupName} = $GroupID; 51 } 52} 53 54# try to add already added groups 55for my $GroupName ( sort keys %GroupIDByGroupName ) { 56 my $GroupID = $GroupObject->GroupAdd( 57 Name => $GroupName, 58 ValidID => 1, 59 UserID => 1, 60 ); 61 62 $Self->False( 63 $GroupID, 64 'GroupAdd() for already existing group ' . $GroupName, 65 ); 66} 67 68# try to fetch data of existing groups 69for my $GroupName ( sort keys %GroupIDByGroupName ) { 70 my $GroupID = $GroupIDByGroupName{$GroupName}; 71 my %Group = $GroupObject->GroupGet( ID => $GroupID ); 72 73 $Self->Is( 74 $Group{Name}, 75 $GroupName, 76 'GroupGet() for group ' . $GroupName, 77 ); 78} 79 80# look up existing groups 81for my $GroupName ( sort keys %GroupIDByGroupName ) { 82 my $GroupID = $GroupIDByGroupName{$GroupName}; 83 84 my $FetchedGroupID = $GroupObject->GroupLookup( Group => $GroupName ); 85 $Self->Is( 86 $FetchedGroupID, 87 $GroupID, 88 'GroupLookup() for group name ' . $GroupName, 89 ); 90 91 my $FetchedGroupName = $GroupObject->GroupLookup( GroupID => $GroupID ); 92 $Self->Is( 93 $FetchedGroupName, 94 $GroupName, 95 'GroupLookup() for group ID ' . $GroupID, 96 ); 97} 98 99# list groups 100my %Groups = $GroupObject->GroupList(); 101for my $GroupName ( sort keys %GroupIDByGroupName ) { 102 my $GroupID = $GroupIDByGroupName{$GroupName}; 103 104 $Self->True( 105 exists $Groups{$GroupID} && $Groups{$GroupID} eq $GroupName, 106 'GroupList() contains the group ' . $GroupName . ' with ID ' . $GroupID, 107 ); 108} 109 110# group data list 111my %GroupDataList = $GroupObject->GroupDataList(); 112for my $GroupName ( sort keys %GroupIDByGroupName ) { 113 my $GroupID = $GroupIDByGroupName{$GroupName}; 114 115 $Self->True( 116 exists $GroupDataList{$GroupID} && $GroupDataList{$GroupID}->{Name} eq $GroupName, 117 'GroupDataList() contains the group ' . $GroupName . ' with ID ' . $GroupID, 118 ); 119} 120 121# change name of a single group 122my $GroupNameToChange = 'test-group-' . $GroupNameRandomPartBase . '-1'; 123my $ChangedGroupName = $GroupNameToChange . '-changed'; 124my $GroupIDToChange = $GroupIDByGroupName{$GroupNameToChange}; 125 126my $GroupUpdateResult = $GroupObject->GroupUpdate( 127 ID => $GroupIDToChange, 128 Name => $ChangedGroupName, 129 ValidID => 1, 130 UserID => 1, 131); 132 133$Self->True( 134 $GroupUpdateResult, 135 'GroupUpdate() for changing name of group ' . $GroupNameToChange . ' to ' . $ChangedGroupName, 136); 137 138$GroupIDByGroupName{$ChangedGroupName} = $GroupIDToChange; 139delete $GroupIDByGroupName{$GroupNameToChange}; 140 141# try to add group with previous name 142my $GroupID = $GroupObject->GroupAdd( 143 Name => $GroupNameToChange, 144 ValidID => 1, 145 UserID => 1, 146); 147 148$Self->True( 149 $GroupID, 150 'GroupAdd() for new group ' . $GroupNameToChange, 151); 152 153if ($GroupID) { 154 $GroupIDByGroupName{$GroupNameToChange} = $GroupID; 155} 156 157# try to add group with changed name 158$GroupID = $GroupObject->GroupAdd( 159 Name => $ChangedGroupName, 160 ValidID => 1, 161 UserID => 1, 162); 163 164$Self->False( 165 $GroupID, 166 'GroupAdd() for new group ' . $ChangedGroupName, 167); 168 169# set created groups to invalid 170GROUPNAME: 171for my $GroupName ( sort keys %GroupIDByGroupName ) { 172 next GROUPNAME if !$GroupIDByGroupName{$GroupName}; 173 174 my $GroupUpdate = $GroupObject->GroupUpdate( 175 ID => $GroupIDByGroupName{$GroupName}, 176 Name => $GroupName, 177 ValidID => 2, 178 UserID => 1, 179 ); 180 181 $Self->True( 182 $GroupUpdate, 183 'GroupUpdate() to set group ' . $GroupName . ' to invalid', 184 ); 185} 186 187# list valid groups 188%Groups = $GroupObject->GroupList( Valid => 1 ); 189for my $GroupName ( sort keys %GroupIDByGroupName ) { 190 my $GroupID = $GroupIDByGroupName{$GroupName}; 191 192 $Self->False( 193 exists $Groups{$GroupID}, 194 'GroupList() does not contain the group ' . $GroupName . ' with ID ' . $GroupID, 195 ); 196} 197 198# list all groups 199%Groups = $GroupObject->GroupList( Valid => 0 ); 200for my $GroupName ( sort keys %GroupIDByGroupName ) { 201 my $GroupID = $GroupIDByGroupName{$GroupName}; 202 203 $Self->True( 204 exists $Groups{$GroupID} && $Groups{$GroupID} eq $GroupName, 205 'GroupList() contains the group ' . $GroupName . ' with ID ' . $GroupID, 206 ); 207} 208 209# Cleanup is done by RestoreDatabase. 210 2111; 212