Commit bc7ef8e5 authored by Gabriel Mazetto's avatar Gabriel Mazetto

Add ldap_blocked as new state to users state machine

parent 7403df6c
...@@ -198,16 +198,26 @@ class User < ActiveRecord::Base ...@@ -198,16 +198,26 @@ class User < ActiveRecord::Base
transition active: :blocked transition active: :blocked
end end
event :ldap_block do
transition active: :ldap_blocked
end
event :activate do event :activate do
transition blocked: :active transition blocked: :active
end end
state :blocked, :ldap_blocked do
def blocked?
true
end
end
end end
mount_uploader :avatar, AvatarUploader mount_uploader :avatar, AvatarUploader
# Scopes # Scopes
scope :admins, -> { where(admin: true) } scope :admins, -> { where(admin: true) }
scope :blocked, -> { with_state(:blocked) } scope :blocked, -> { with_states(:blocked, :ldap_blocked) }
scope :active, -> { with_state(:active) } scope :active, -> { with_state(:active) }
scope :not_in_project, ->(project) { project.users.present? ? where("id not in (:ids)", ids: project.users.map(&:id) ) : all } scope :not_in_project, ->(project) { project.users.present? ? where("id not in (:ids)", ids: project.users.map(&:id) ) : all }
scope :without_projects, -> { where('id NOT IN (SELECT DISTINCT(user_id) FROM members)') } scope :without_projects, -> { where('id NOT IN (SELECT DISTINCT(user_id) FROM members)') }
......
...@@ -569,30 +569,42 @@ describe User, models: true do ...@@ -569,30 +569,42 @@ describe User, models: true do
end end
end end
context 'ldap synchronized user' do
describe :ldap_user? do describe :ldap_user? do
it "is true if provider name starts with ldap" do it 'is true if provider name starts with ldap' do
user = create(:omniauth_user, provider: 'ldapmain') user = create(:omniauth_user, provider: 'ldapmain')
expect( user.ldap_user? ).to be_truthy expect(user.ldap_user?).to be_truthy
end end
it "is false for other providers" do it 'is false for other providers' do
user = create(:omniauth_user, provider: 'other-provider') user = create(:omniauth_user, provider: 'other-provider')
expect( user.ldap_user? ).to be_falsey expect(user.ldap_user?).to be_falsey
end end
it "is false if no extern_uid is provided" do it 'is false if no extern_uid is provided' do
user = create(:omniauth_user, extern_uid: nil) user = create(:omniauth_user, extern_uid: nil)
expect( user.ldap_user? ).to be_falsey expect(user.ldap_user?).to be_falsey
end end
end end
describe :ldap_identity do describe :ldap_identity do
it "returns ldap identity" do it 'returns ldap identity' do
user = create :omniauth_user user = create :omniauth_user
expect(user.ldap_identity.provider).not_to be_empty expect(user.ldap_identity.provider).not_to be_empty
end end
end end
describe '#ldap_block' do
let(:user) { create(:omniauth_user, provider: 'ldapmain', name: 'John Smith') }
it 'blocks user flaging the action caming from ldap' do
user.ldap_block
expect(user.blocked?).to be_truthy
expect(user.ldap_blocked?).to be_truthy
end
end
end
describe '#full_website_url' do describe '#full_website_url' do
let(:user) { create(:user) } let(:user) { create(:user) }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment