Skip to content

Commit c9193de

Browse files
committed
Use role Name/GroupType in case corresponding role groups do not exist yet
Custom role groups could be absent if the corresponding custom roles were created/applied after some assets or the lazy option is enabled.
1 parent eeb33b2 commit c9193de

File tree

2 files changed

+86
-2
lines changed

2 files changed

+86
-2
lines changed

share/html/Asset/Elements/EditRoleMembers

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,14 +52,14 @@ $Recursively => 0
5252
</%args>
5353
<%init>
5454
my $Group = $Object->RoleGroup($Role);
55-
my $field_name = "RemoveRoleMember-" . $Group->Name;
55+
my $field_name = "RemoveRoleMember-" . $Role;
5656
</%init>
5757
<ul class="role-members list-group list-group-compact">
5858
% my $Users = $Group->UserMembersObj( Recursively => $Recursively );
5959
% if ($Object->Role($Role)->{Single}) {
6060
% my $user = $Users->First || RT->Nobody;
6161
<li class="list-group-item">
62-
<input class="form-control selectpicker" type="text" value="<% $user->Name %>" name="SetRoleMember-<% $Group->Name %>" id="SetRoleMember-<% $Group->Name %>" data-autocomplete="Users" data-autocomplete-return="Name" />
62+
<input class="form-control selectpicker" type="text" value="<% $user->Name %>" name="SetRoleMember-<% $Role %>" id="SetRoleMember-<% $Role %>" data-autocomplete="Users" data-autocomplete-return="Name" />
6363
</li>
6464
% } else {
6565
% while ( my $user = $Users->Next ) {

t/assets/web.t

Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,90 @@ diag "Bulk update";
145145
# TODO: test more bulk update actions
146146
}
147147

148+
diag "People update";
149+
{
150+
my $asset = create_asset( Name => "Test asset", Catalog => $catalog->Id );
151+
$m->get_ok( '/Asset/Display.html?id=' . $asset->Id );
152+
$m->follow_link_ok( { text => 'People' } );
153+
154+
my $form = $m->form_id('ModifyAssetPeople');
155+
my $owner_input = $form->find_input('SetRoleMember-Owner');
156+
ok( $owner_input, 'Found owner input' );
157+
is( $owner_input->value, 'Nobody', 'Default owner is Nobody' );
158+
$m->submit_form_ok(
159+
{
160+
fields => {
161+
'SetRoleMember-Owner' => 'root',
162+
},
163+
button => 'Update',
164+
},
165+
'Submit form ModifyAssetPeople'
166+
);
167+
$m->text_contains('Owner set to root');
168+
169+
$form = $m->form_id('ModifyAssetPeople');
170+
$owner_input = $form->find_input('SetRoleMember-Owner');
171+
ok( $owner_input, 'Found owner input' );
172+
is( $owner_input->value, 'root', 'Input value of owner is root' );
173+
174+
my $staff = RT::Test->load_or_create_group('Staff');
175+
$m->submit_form_ok(
176+
{
177+
fields => {
178+
'AddUserRoleMember-Role' => 'Contact',
179+
AddUserRoleMember => 'alice@localhost',
180+
'AddGroupRoleMember-Role' => 'HeldBy',
181+
AddGroupRoleMember => 'Staff',
182+
},
183+
button => 'Update',
184+
},
185+
'Submit form ModifyAssetPeople'
186+
);
187+
$m->text_contains('Member added: alice@localhost');
188+
$m->text_contains('Member added: Staff');
189+
190+
$form = $m->form_id('ModifyAssetPeople');
191+
my $alice = RT::Test->load_or_create_user( Name => 'alice@localhost' );
192+
$m->tick('RemoveRoleMember-Contact', $alice->Id);
193+
$m->tick('RemoveRoleMember-HeldBy', $staff->Id);
194+
195+
$m->submit_form_ok(
196+
{
197+
button => 'Update',
198+
},
199+
'Submit form ModifyAssetPeople'
200+
);
201+
$m->text_contains('Member deleted');
202+
203+
204+
# Add manager later to test if the page works with absent role groups.
205+
my $manager = RT::CustomRole->new( RT->SystemUser );
206+
ok(
207+
$manager->Create(
208+
Name => 'Manager',
209+
LookupType => RT::Asset->CustomFieldLookupType,
210+
MaxValues => 1,
211+
)
212+
);
213+
ok( $manager->AddToObject( $catalog->Id ) );
214+
215+
$m->reload;
216+
$form = $m->form_id('ModifyAssetPeople');
217+
my $manager_input = $form->find_input( 'SetRoleMember-' . $manager->GroupType );
218+
ok( $manager_input, 'Found manager input' );
219+
is( $manager_input->value, 'Nobody', 'Default manager is Nobody' );
220+
$m->submit_form_ok(
221+
{
222+
fields => {
223+
'SetRoleMember-' . $manager->GroupType => 'root',
224+
},
225+
button => 'Update',
226+
},
227+
'Submit form ModifyAssetPeople'
228+
);
229+
$m->text_contains('Manager set to root');
230+
}
231+
148232
# XXX TODO: test other modify pages
149233

150234
done_testing;

0 commit comments

Comments
 (0)