Commit 5c0fbe2

mo <mo.khan@gmail.com>
2019-06-16 03:43:17
check if filter is blank
1 parent 270e2f1
Changed files (4)
app
controllers
models
spec
models
requests
app/controllers/scim/v2/users_controller.rb
@@ -10,12 +10,7 @@ module Scim
       end
 
       def index
-        @users =
-          if params[:filter].present?
-            User.order(:created_at).scim_search(params[:filter])
-          else
-            User.order(:created_at)
-          end
+        @users = User.order(:created_at).scim_search(params[:filter])
         @users = paginate(@users, page: page - 1, page_size: page_size)
         render formats: :scim, status: :ok
       end
app/models/scim/search.rb
@@ -51,6 +51,8 @@ module Scim
     end
 
     def for(filter)
+      return @clazz.all if filter.blank?
+
       node = Scim::Search::Node.new(::Scim::Kit::V2::Filter.new.parse(filter))
       node.accept(Scim::Visitor.new(@clazz, @clazz.scim_mapper))
     end
spec/models/user_spec.rb
@@ -17,6 +17,9 @@ RSpec.describe User do
     let!(:users) { create_list(:user, 10) }
     let(:random_user) { users.sample }
 
+    specify { expect(subject.scim_search("")).to match_array(users) }
+    specify { expect(subject.scim_search(nil)).to match_array(users) }
+
     specify do
       results = subject.scim_search("userName pr")
       expect(results.to_sql).to eql(subject.where.not(email: nil).to_sql)
spec/requests/scim/v2/users_spec.rb
@@ -231,7 +231,7 @@ describe '/scim/v2/users' do
         specify { expect(json[:startIndex]).to be(1) }
         specify { expect(json[:itemsPerPage]).to be(25) }
         specify { expect(json[:Resources]).to be_present }
-        specify { expect(json[:Resources].map { |x| x[:id] }).to match_array([first_matching_user.to_param, second_matching_user.to_param]) }
+        specify { expect(json[:Resources].map { |x| x[:id] }.uniq).to match_array([first_matching_user.to_param, second_matching_user.to_param].uniq) }
       end
     end