Skip to content

Commit e590c5c

Browse files
authored
Merge pull request tractionguest#20 from tractionguest/bugfix/member-id-to-int
[SST-15759] convert member list ids to integers
2 parents bf6f561 + a6a3c3e commit e590c5c

File tree

2 files changed

+31
-1
lines changed

2 files changed

+31
-1
lines changed

app/controllers/scim_rails/scim_groups_controller.rb

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -164,9 +164,11 @@ def put_error_check
164164
end
165165

166166
def add_members(group, member_ids)
167+
member_ids = member_ids.map{ |id| id.to_i }
168+
167169
new_member_ids = member_ids - group.public_send(ScimRails.config.scim_group_member_scope).pluck(:id)
168170
new_members = @company.public_send(ScimRails.config.scim_users_scope).find(new_member_ids)
169-
171+
170172
group.public_send(ScimRails.config.scim_group_member_scope) << new_members if new_members.present?
171173
end
172174

spec/controllers/scim_rails/scim_groups_controller_spec.rb

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -686,6 +686,34 @@
686686
expect(response.status).to eq(404)
687687
end
688688
end
689+
690+
context "with repeated member additions" do
691+
let(:patch_value) { [ { value: new_user.id } ] }
692+
693+
let(:alt_patch_value) { [ { value: new_user.id.to_s } ] }
694+
let(:alt_params) do
695+
{
696+
id: patch_id,
697+
Operations: [
698+
{
699+
op: patch_operation,
700+
path: patch_path,
701+
value: alt_patch_value
702+
}
703+
]
704+
}
705+
end
706+
707+
let(:alt_patch) { patch :patch_update, params: alt_params, as: :json }
708+
709+
it "only adds member to group once" do
710+
expect(response.status).to eq(200)
711+
expect(updated_user_list.length).to eq(user_list_length + 1)
712+
expect(updated_user_ids).to include(new_user.id)
713+
714+
expect{ alt_patch }.to_not change{ updated_user_list.length }
715+
end
716+
end
689717
end
690718

691719
context "when path not set to 'members'" do

0 commit comments

Comments
 (0)