Commit d3148e9
Changed files (3)
app/models/scim/visitor.rb
@@ -31,6 +31,8 @@ module Scim
@clazz.where("#{attr_for(node)} < ?", cast_value_from(node))
when :le
@clazz.where("#{attr_for(node)} <= ?", cast_value_from(node))
+ when :pr
+ @clazz.where.not(attr_for(node) => nil)
else
@clazz.none
end
spec/models/user_spec.rb
@@ -12,6 +12,7 @@ RSpec.describe User do
end
describe ".scim_filter_for" do
+ subject { described_class }
let!(:users) { create_list(:user, 10) }
let(:random_user) { users.sample }
let(:parser) { Scim::Kit::V2::Filter.new }
@@ -21,27 +22,33 @@ RSpec.describe User do
end
specify do
- results = described_class.scim_filter_for(tree_for("userName eq \"#{random_user.email}\""))
+ results = subject.scim_filter_for(tree_for("userName pr"))
+ expect(results.to_sql).to eql(subject.where.not(email: nil).to_sql)
+ expect(results).to match_array(users)
+ end
+
+ specify do
+ results = subject.scim_filter_for(tree_for("userName eq \"#{random_user.email}\""))
expect(results).to match_array([random_user])
end
specify do
- results = described_class.scim_filter_for(tree_for("userName ne \"#{random_user.email}\""))
+ results = subject.scim_filter_for(tree_for("userName ne \"#{random_user.email}\""))
expect(results.pluck(:email)).not_to include(random_user.email)
end
specify do
- results = described_class.scim_filter_for(tree_for("userName co \"#{random_user.email[1..-2]}\""))
+ results = subject.scim_filter_for(tree_for("userName co \"#{random_user.email[1..-2]}\""))
expect(results).to match_array([random_user])
end
specify do
- results = described_class.scim_filter_for(tree_for("userName sw \"#{random_user.email[0..3]}\""))
+ results = subject.scim_filter_for(tree_for("userName sw \"#{random_user.email[0..3]}\""))
expect(results).to match_array([random_user])
end
specify do
- results = described_class.scim_filter_for(tree_for("userName ew \"#{random_user.email[-8..-1]}\""))
+ results = subject.scim_filter_for(tree_for("userName ew \"#{random_user.email[-8..-1]}\""))
expect(results).to match_array([random_user])
end
@@ -49,7 +56,7 @@ RSpec.describe User do
freeze_time
random_user.update!(updated_at: 10.minutes.from_now)
- results = described_class.scim_filter_for(tree_for("meta.lastModified gt \"#{Time.now.iso8601}\""))
+ results = subject.scim_filter_for(tree_for("meta.lastModified gt \"#{Time.now.iso8601}\""))
expect(results).to match_array([random_user])
end
@@ -57,7 +64,7 @@ RSpec.describe User do
freeze_time
random_user.update!(updated_at: 10.minutes.from_now)
- results = described_class.scim_filter_for(tree_for("meta.lastModified ge \"#{random_user.updated_at.iso8601}\""))
+ results = subject.scim_filter_for(tree_for("meta.lastModified ge \"#{random_user.updated_at.iso8601}\""))
expect(results).to match_array([random_user])
end
@@ -65,7 +72,7 @@ RSpec.describe User do
freeze_time
random_user.update!(updated_at: 10.minutes.from_now)
- results = described_class.scim_filter_for(tree_for("meta.lastModified lt \"#{Time.now.iso8601}\""))
+ results = subject.scim_filter_for(tree_for("meta.lastModified lt \"#{Time.now.iso8601}\""))
expect(results).to match_array(users - [random_user])
end
@@ -73,7 +80,7 @@ RSpec.describe User do
freeze_time
random_user.update!(updated_at: 10.minutes.ago)
- results = described_class.scim_filter_for(tree_for("meta.lastModified le \"#{random_user.updated_at.iso8601}\""))
+ results = subject.scim_filter_for(tree_for("meta.lastModified le \"#{random_user.updated_at.iso8601}\""))
expect(results).to match_array([random_user])
end
Gemfile.lock
@@ -1,6 +1,6 @@
GIT
remote: https://github.com/mokhan/scim-kit.git
- revision: 38f5077e882180aebeaeb3553bf196107561bc69
+ revision: 55ab23972bc21d8fe3823a8b081ac417949033db
specs:
scim-kit (0.3.2)
activemodel (>= 5.2.0)