From 74a5ab4599c0ea408c35b8c72a281a9ac86b08dd Mon Sep 17 00:00:00 2001 From: Jackie Fraser Date: Wed, 14 Jul 2021 07:47:54 -0400 Subject: [PATCH 1/2] Add SAML provider model scope and finder for User Adds the `by_saml_provider_id` model scope and db finder to query User. --- ee/app/finders/ee/users_finder.rb | 10 +++++++++- ee/spec/finders/users_finder_spec.rb | 23 +++++++++++++++++++++++ 2 files changed, 32 insertions(+), 1 deletion(-) diff --git a/ee/app/finders/ee/users_finder.rb b/ee/app/finders/ee/users_finder.rb index c434d792acc6d4..f91966a717284d 100644 --- a/ee/app/finders/ee/users_finder.rb +++ b/ee/app/finders/ee/users_finder.rb @@ -6,7 +6,8 @@ module UsersFinder override :execute def execute - by_non_ldap(super) + users = by_non_ldap(super) + by_saml_provider_id(users) end def by_non_ldap(users) @@ -14,5 +15,12 @@ def by_non_ldap(users) users.non_ldap end + + def by_saml_provider_id(users) + saml_provider_id = params[:by_saml_provider_id] + return users unless saml_provider_id + + users.limit_to_saml_provider(saml_provider_id) + end end end diff --git a/ee/spec/finders/users_finder_spec.rb b/ee/spec/finders/users_finder_spec.rb index b833c2372002f1..6cc7b122ac5e61 100644 --- a/ee/spec/finders/users_finder_spec.rb +++ b/ee/spec/finders/users_finder_spec.rb @@ -22,6 +22,29 @@ expect(users).to contain_exactly(normal_user, blocked_user, omniauth_user, external_user, internal_user, admin_user) end end + + context 'with SAML users' do + let(:group) { create(:group) } + let(:saml_provider) { create(:saml_provider, group: group, enabled: true, enforced_sso: true) } + let!(:saml_user) { create(:user) } + let!(:non_saml_user) { create(:user) } + + before do + create(:identity, provider: 'group_saml1', saml_provider_id: saml_provider.id, user: saml_user) + end + + it 'returns all users by default' do + users = described_class.new(normal_user).execute + + expect(users).to contain_exactly(normal_user, blocked_user, omniauth_user, external_user, internal_user, admin_user, saml_user, non_saml_user) + end + + it 'returns only saml users from the provided saml_provider_id' do + users = described_class.new(normal_user, by_saml_provider_id: saml_provider.id).execute + + expect(users).to contain_exactly(saml_user) + end + end end end end -- GitLab From c237c59c36a967142c3946c2d74cee1baac657a2 Mon Sep 17 00:00:00 2001 From: Jackie Fraser Date: Mon, 19 Jul 2021 20:05:23 -0400 Subject: [PATCH 2/2] Add review feedback: replace lets --- ee/spec/finders/users_finder_spec.rb | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/ee/spec/finders/users_finder_spec.rb b/ee/spec/finders/users_finder_spec.rb index 6cc7b122ac5e61..362dba1a209013 100644 --- a/ee/spec/finders/users_finder_spec.rb +++ b/ee/spec/finders/users_finder_spec.rb @@ -8,7 +8,7 @@ context 'with a normal user' do context 'with LDAP users' do - let!(:ldap_user) { create(:omniauth_user, provider: 'ldap') } + let_it_be(:ldap_user) { create(:omniauth_user, provider: 'ldap') } it 'returns ldap users by default' do users = described_class.new(normal_user).execute @@ -24,10 +24,10 @@ end context 'with SAML users' do - let(:group) { create(:group) } - let(:saml_provider) { create(:saml_provider, group: group, enabled: true, enforced_sso: true) } - let!(:saml_user) { create(:user) } - let!(:non_saml_user) { create(:user) } + let_it_be(:group) { create(:group) } + let_it_be(:saml_provider) { create(:saml_provider, group: group, enabled: true, enforced_sso: true) } + let_it_be(:saml_user) { create(:user) } + let_it_be(:non_saml_user) { create(:user) } before do create(:identity, provider: 'group_saml1', saml_provider_id: saml_provider.id, user: saml_user) -- GitLab